class PokeAPI::Parser::Pokemon

Constants

ANIMATED_THUMBNAIL_SOURCE

Public Class Methods

new(data) click to toggle source
# File lib/pokeapi/parser/pokemon.rb, line 10
def initialize(data)
  @data = data.clone
  @abilities = @data.delete :abilities
  @moves = @data.delete :moves
  @types = @data.delete :types
  @stats = @data.delete :stats
  @thumbnail = @data.delete(:sprites).delete(:front_default)
  @animated_thumbnail = "#{ANIMATED_THUMBNAIL_SOURCE}#{@data[:id]}.gif"
  @species_id = @data[:species][:url].split("/").last
end
parse(data) click to toggle source
# File lib/pokeapi/parser/pokemon.rb, line 6
def self.parse(data)
  new(data).parse
end

Public Instance Methods

parse() click to toggle source
# File lib/pokeapi/parser/pokemon.rb, line 21
def parse
  {
    id: @data[:id],
    name: @data[:name],
    abilities: abilities,
    moves: moves,
    types: types,
    stats: stats,
    thumbnail: @thumbnail,
    animated_thumbnail: @animated_thumbnail,
    species_id: @species_id,
  }
end

Private Instance Methods

abilities() click to toggle source
# File lib/pokeapi/parser/pokemon.rb, line 37
def abilities
  @abilities.map do |ability|
    {
      name: ability[:ability][:name],
      url: ability[:ability][:url],
      is_hidden: ability[:is_hidden],
      slot: ability[:slot],
    }
  end.sort_by { |ability| ability[:slot] }
end
moves() click to toggle source
# File lib/pokeapi/parser/pokemon.rb, line 48
def moves
  @moves.map do |move|
    {
      name: move[:move][:name],
      url: move[:move][:url],
    }
  end
end
stats() click to toggle source
# File lib/pokeapi/parser/pokemon.rb, line 67
def stats
  @stats.map do |stat|
    {
      name: stat[:stat][:name],
      url: stat[:stat][:url],
      base_stat: stat[:base_stat],
      effort: stat[:effort],
    }
  end
end
types() click to toggle source
# File lib/pokeapi/parser/pokemon.rb, line 57
def types
  @types.map do |type|
    {
      name: type[:type][:name],
      slot: type[:slot],
      id: type[:type][:url].split("/").last,
    }
  end.sort_by { |type| type[:slot] }
end