smogon 0.6.2 → 0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6428d21a1145de6a88b6eb795079c879da593b99
4
- data.tar.gz: 41065432cc72c5ac2783b2d49a18c2e5fb5371d0
3
+ metadata.gz: 5efd122754905b76c20a3a36163bd0ff435e5119
4
+ data.tar.gz: ddff2489eeff93a416e6c4cfac04346d198c21d3
5
5
  SHA512:
6
- metadata.gz: 67932696545f70581e90f4d4e97f527b4aede2a7e2d966e44e717d9ed9f61094539a1b0d45e2d4ccdff8c8cdbc21e229f96224e352497524a348fd7bf041ab0d
7
- data.tar.gz: a23cdfb3060876d8f0feecdcbacbb811514e5fdc4ed8190f92638289d9a790261e512376ca4a12b5e306c40a0387d1041da2fab82d102c479ec2d8cc18e1cd67
6
+ metadata.gz: 7256f3c29f5518b996825fe08e385d56e715f17705a07c9483adf7e97831ad922495c6ffd8d7cd2fee78866081ee9bfbcbc1e83693c08ba0959f4b0d4d31d60c
7
+ data.tar.gz: '082911c49504411c00ffbef753a067f5b2a2105dbc5ac0dcdc1b4f8cddd30dd120c09431b43fe1fa454fe9d742d35b315cf31a4d31fc9dd7ccfe065fc97a43c2'
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
2
+ # Copyright(C) 2017 Giovanni Capuano <webmaster@giovannicapuano.net>
3
3
  #
4
4
  # This file is part of Smogon-API.
5
5
  #
@@ -17,12 +17,13 @@
17
17
  # along with Smogon-API. If not, see <http://www.gnu.org/licenses/>.
18
18
  #++
19
19
 
20
- require 'open-uri'
20
+ require 'net/http'
21
21
  require 'json'
22
22
 
23
23
  require 'smogon/api'
24
24
  require 'smogon/naturedex'
25
25
 
26
+ require 'smogon/types/base'
26
27
  require 'smogon/types/pokemon'
27
28
  require 'smogon/types/ability'
28
29
  require 'smogon/types/item'
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
2
+ # Copyright(C) 2017 Giovanni Capuano <webmaster@giovannicapuano.net>
3
3
  #
4
4
  # This file is part of Smogon-API.
5
5
  #
@@ -19,26 +19,9 @@
19
19
 
20
20
  module Smogon
21
21
  class Abilitydex
22
- def self.get(name, fields = nil)
23
- incapsulate = fields == nil
24
-
25
- fields ||= [
26
- 'name',
27
- 'alias',
28
- 'description'
29
- ]
30
-
31
- response = API.request 'ability', name, fields
32
- return nil if response.is_a?(String) || response.empty? || response.first.empty?
33
- return response if not incapsulate
34
-
35
- response = response.first
36
-
37
- Ability.new.tap do |ability|
38
- ability.name = response['name' ]
39
- ability._name = response['alias' ]
40
- ability.description = response['description']
41
- end
22
+ def self.get(name)
23
+ response = API.request(:abilities, name)
24
+ Type::Ability.new(response)
42
25
  end
43
26
  end
44
27
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
2
+ # Copyright(C) 2017 Giovanni Capuano <webmaster@giovannicapuano.net>
3
3
  #
4
4
  # This file is part of Smogon-API.
5
5
  #
@@ -19,20 +19,30 @@
19
19
 
20
20
  module Smogon
21
21
  class API
22
- METAGAME = 'xy'
23
- ENDPOINT = 'http://www.smogon.com/dex/api/query?q='
22
+ METAGAME = 'sm'
23
+ ENDPOINT = 'http://www.smogon.com/dex/_rpc/dump-'.freeze
24
24
 
25
25
  class << self
26
- def request(what, name, fields)
27
- query = {
28
- what => { 'gen' => METAGAME, 'alias' => aliasize(name) },
29
- '$' => fields
30
- }
31
-
32
- query = JSON.generate(query)
33
- query = URI.escape(query, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
34
- response = JSON.parse open("#{ENDPOINT}#{query}").read
35
- response['status'] == 'success' ? response['result'] : response['message']
26
+ def request(what, name, remote = false)
27
+ name = aliasize(name)
28
+
29
+ if remote
30
+ return JSON.parse(req(
31
+ URI(ENDPOINT + what.to_s),
32
+ { gen: METAGAME, alias: name }
33
+ ))
34
+ end
35
+
36
+ unless @_basics
37
+ @_basics = JSON.parse(req(
38
+ URI(ENDPOINT + 'basics'),
39
+ { gen: METAGAME }
40
+ ))
41
+ end
42
+
43
+ @_basics[what.to_s].find do |x|
44
+ aliasize(x['name']) == name
45
+ end
36
46
  end
37
47
 
38
48
  def using_metagame(metagame, &block)
@@ -43,11 +53,21 @@ module Smogon
43
53
  end
44
54
  end
45
55
 
46
- private
56
+ private
47
57
 
48
58
  def aliasize(string)
49
59
  string.downcase.gsub(' ', '_').gsub(/[^a-z0-9_\-]/i, '')
50
60
  end
61
+
62
+ def req(uri, body)
63
+ request = Net::HTTP::Post.new(uri)
64
+ request.body = body.to_json
65
+ request.content_type = 'application/json; charset=utf-8'
66
+
67
+ Net::HTTP.start(uri.hostname, uri.port) do |http|
68
+ http.request(request)
69
+ end.body
70
+ end
51
71
  end
52
72
  end
53
73
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
2
+ # Copyright(C) 2017 Giovanni Capuano <webmaster@giovannicapuano.net>
3
3
  #
4
4
  # This file is part of Smogon-API.
5
5
  #
@@ -19,26 +19,9 @@
19
19
 
20
20
  module Smogon
21
21
  class Itemdex
22
- def self.get(name, fields = nil)
23
- incapsulate = fields == nil
24
-
25
- fields ||= [
26
- 'name',
27
- 'alias',
28
- 'description'
29
- ]
30
-
31
- response = API.request 'item', name, fields
32
- return nil if response.is_a?(String) || response.empty? || response.first.empty?
33
- return response if not incapsulate
34
-
35
- response = response.first
36
-
37
- Item.new.tap do |item|
38
- item.name = response['name' ]
39
- item._name = response['alias' ]
40
- item.description = response['description']
41
- end
22
+ def self.get(name, incapsulate = true)
23
+ response = API.request(:items, name)
24
+ Type::Item.new(response)
42
25
  end
43
26
  end
44
27
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
2
+ # Copyright(C) 2017 Giovanni Capuano <webmaster@giovannicapuano.net>
3
3
  #
4
4
  # This file is part of Smogon-API.
5
5
  #
@@ -19,34 +19,9 @@
19
19
 
20
20
  module Smogon
21
21
  class Movedex
22
- def self.get(name, fields = nil)
23
- incapsulate = fields == nil
24
-
25
- fields ||= [
26
- 'name',
27
- 'alias',
28
- 'description',
29
- 'power',
30
- 'accuracy',
31
- 'pp',
32
- 'type' => ['name'],
33
- ]
34
-
35
- response = API.request 'move', name, fields
36
- return nil if response.is_a?(String) || response.empty? || response.first.empty?
37
- return response if not incapsulate
38
-
39
- response = response.first
40
-
41
- Move.new.tap do |move|
42
- move.name = response['name' ]
43
- move._name = response['alias' ]
44
- move.description = response['description']
45
- move.type = response['type' ].values.join(' / ')
46
- move.power = response['power' ]
47
- move.accuracy = response['accuracy' ]
48
- move.pp = response['pp' ]
49
- end
22
+ def self.get(name)
23
+ response = API.request(:moves, name)
24
+ Type::Move.new(response)
50
25
  end
51
26
  end
52
27
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
2
+ # Copyright(C) 2017 Giovanni Capuano <webmaster@giovannicapuano.net>
3
3
  #
4
4
  # This file is part of Smogon-API.
5
5
  #
@@ -19,67 +19,34 @@
19
19
 
20
20
  module Smogon
21
21
  class Movesetdex
22
- def self.get(name, tier = nil, metagame = nil, fields = nil)
23
- incapsulate = fields == nil
24
-
25
- fields ||= [
26
- 'name',
27
- 'movesets' => [
28
- 'name',
29
- { 'tags' => %w(shorthand) },
30
- { 'items' => %w(name) },
31
- { 'abilities' => %w(name) },
32
- { 'natures' => %w(hp patk pdef spatk spdef spe) },
33
- { 'moveslots' => [ 'slot', { 'move' => %(name) } ] },
34
- { 'evconfigs' => %w(hp patk pdef spatk spdef spe) }
35
- ]
36
- ]
37
-
22
+ def self.get(name, tier = nil, metagame = nil)
38
23
  response = if metagame
39
- API.using_metagame(metagame) do
40
- API.request 'pokemon', name, fields
24
+ API.using_metagame(metagame.downcase) do
25
+ API.request(:pokemon, name, true)
41
26
  end
42
27
  else
43
- API.request 'pokemon', name, fields
28
+ API.request(:pokemon, name, true)
44
29
  end
45
- return nil if response.is_a?(String) || response.empty? || response.first.empty?
46
- return response if not incapsulate
47
30
 
48
- response = response.first
31
+ strategies = response['strategies']
49
32
 
50
- results = [].tap do |movesets|
51
- response['movesets'].each do |movesetdex|
52
- movesets << Moveset.new.tap do |moveset|
53
- moveset.pokemon = response['name']
54
- moveset.name = movesetdex['name']
55
- moveset.tier = movesetdex['tags'][0]['shorthand']
56
- moveset.item = movesetdex['items'].collect(&:values).flatten
57
- moveset.ability = movesetdex['abilities'].collect(&:values).flatten
58
- moveset.nature = movesetdex['natures'].map { |nature| Naturedex.get(nature) }
59
-
60
- moveset.moves = []
61
- movesetdex['moveslots'].each do |moveslot|
62
- slot = moveslot['slot'] - 1
33
+ if (tier = tier&.upcase)
34
+ strategies = [strategies.find do |strategy|
35
+ strategy['format'] == tier
36
+ end]
37
+ end
63
38
 
64
- if moveset.moves[slot]
65
- moveset.moves[slot] << moveslot['move_name']
66
- else
67
- moveset.moves << [ moveslot['move_name'] ]
68
- end
39
+ [].tap do |movesets|
40
+ strategies.each do |strategy|
41
+ # overview, comments
42
+ tier = strategy['format']
43
+ movesets.concat(
44
+ strategy['movesets'].map do |moveset|
45
+ Type::Moveset.new(name, tier, moveset)
69
46
  end
70
-
71
- moveset.evs = [].tap do |evs|
72
- evconfigs = movesetdex['evconfigs'].first
73
-
74
- ['hp', 'patk', 'pdef', 'spatk', 'spdef', 'spe'].each do |stat|
75
- evs << evconfigs[stat]
76
- end if evconfigs
77
- end.join ' / '
78
- end
47
+ )
79
48
  end
80
49
  end
81
-
82
- tier ? results.reject { |moveset| moveset.tier.downcase != tier.downcase } : results
83
50
  end
84
51
  end
85
52
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
2
+ # Copyright(C) 2017 Giovanni Capuano <webmaster@giovannicapuano.net>
3
3
  #
4
4
  # This file is part of Smogon-API.
5
5
  #
@@ -19,44 +19,10 @@
19
19
 
20
20
  module Smogon
21
21
  class Pokedex
22
- def self.get(name, fields = nil)
23
- incapsulate = fields == nil
24
-
25
- fields ||= [
26
- 'name',
27
- 'alias',
28
- 'alts' => [
29
- { 'types' => %w(name) },
30
- { 'tags' => %w(shorthand) },
31
- { 'abilities' => %w(name) },
32
- 'hp', 'patk', 'pdef', 'spatk', 'spdef', 'spe'
33
- ],
34
- 'moves' => ['name']
35
- ]
36
-
37
- response = API.request 'pokemon', name, fields
38
- return nil if response.is_a?(String) || response.empty? || response.first.empty?
39
- return response if not incapsulate
40
-
41
- response = response.first
42
- pokedex = response['alts'][0]
43
-
44
- Pokemon.new.tap do |pokemon|
45
- pokemon.name = response['name']
46
- pokemon._name = response['alias']
47
-
48
- pokemon.types = pokedex['types'].collect(&:values).flatten
49
- pokemon.tier = pokedex['tags'][0]['shorthand']
50
- pokemon.abilities = pokedex['abilities'].collect(&:values).flatten
51
-
52
- pokemon.base_stats = [].tap do |base_stats|
53
- ['hp', 'patk', 'pdef', 'spatk', 'spdef', 'spe'].each do |stat|
54
- base_stats << pokedex[stat]
55
- end
56
- end
57
-
58
- pokemon.moves = response['moves'].collect(&:values).flatten
59
- end
22
+ def self.get(name)
23
+ response = API.request(:pokemon, name)
24
+ moves = API.request(:pokemon, name, true)['learnset']
25
+ Type::Pokemon.new(response, moves)
60
26
  end
61
27
  end
62
28
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
2
+ # Copyright(C) 2017 Giovanni Capuano <webmaster@giovannicapuano.net>
3
3
  #
4
4
  # This file is part of Smogon-API.
5
5
  #
@@ -18,15 +18,15 @@
18
18
  #++
19
19
 
20
20
  module Smogon
21
- class Ability
22
- attr_accessor :name, :_name, :description
21
+ module Type
22
+ class Ability < Base
23
+ ATTRIBUTES = %w(
24
+ name description gen_family
25
+ ).freeze
23
26
 
24
- def to_s
25
- "Name: #{@name}\nDescription: #{@description}"
26
- end
27
+ attr_accessor(*ATTRIBUTES)
27
28
 
28
- def url
29
- "http://www.smogon.com/dex/#{API::METAGAME}/abilities/#{@_name}"
29
+ TYPE = 'abilities'.freeze
30
30
  end
31
31
  end
32
32
  end
@@ -0,0 +1,52 @@
1
+ #--
2
+ # Copyright(C) 2017 Giovanni Capuano <webmaster@giovannicapuano.net>
3
+ #
4
+ # This file is part of Smogon-API.
5
+ #
6
+ # Smogon-API is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # Smogon-API is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with Smogon-API. If not, see <http://www.gnu.org/licenses/>.
18
+ #++
19
+
20
+ module Smogon
21
+ module Type
22
+ class Base
23
+ def initialize(response)
24
+ attributes.each do |attr|
25
+ public_send("#{attr}=", response[attr])
26
+ end
27
+ end
28
+
29
+ def to_h
30
+ attributes.zip(
31
+ attributes.map { |attr| public_send(attr) }
32
+ ).to_h
33
+ end
34
+
35
+ def to_s
36
+ attributes.map do |attr|
37
+ "#{attr.capitalize}: #{public_send(attr)}"
38
+ end.join("\n")
39
+ end
40
+
41
+ def url
42
+ "http://www.smogon.com/dex/#{::Smogon::API::METAGAME}/#{self.class::TYPE}/#{name}"
43
+ end
44
+
45
+ private
46
+
47
+ def attributes
48
+ self.class::ATTRIBUTES
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
2
+ # Copyright(C) 2017 Giovanni Capuano <webmaster@giovannicapuano.net>
3
3
  #
4
4
  # This file is part of Smogon-API.
5
5
  #
@@ -18,15 +18,15 @@
18
18
  #++
19
19
 
20
20
  module Smogon
21
- class Item
22
- attr_accessor :name, :_name, :description
21
+ module Type
22
+ class Item < Base
23
+ ATTRIBUTES = %w(
24
+ name description gen_family
25
+ ).freeze
23
26
 
24
- def to_s
25
- "Name: #{@name}\nDescription: #{@description}"
26
- end
27
+ attr_accessor(*ATTRIBUTES)
27
28
 
28
- def url
29
- "http://www.smogon.com/dex/#{API::METAGAME}/items/#{@_name}"
29
+ TYPE = 'items'.freeze
30
30
  end
31
31
  end
32
32
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
2
+ # Copyright(C) 2017 Giovanni Capuano <webmaster@giovannicapuano.net>
3
3
  #
4
4
  # This file is part of Smogon-API.
5
5
  #
@@ -18,19 +18,15 @@
18
18
  #++
19
19
 
20
20
  module Smogon
21
- class Move
22
- attr_accessor :name, :_name, :description, :type, :power, :accuracy, :pp
21
+ module Type
22
+ class Move < Base
23
+ ATTRIBUTES = %w(
24
+ name category power accuracy pp description type genfamily
25
+ ).freeze
23
26
 
24
- def to_s
25
- "Name: #{@name}\nDescription: #{@description}\nType: #{@type}\nPower: #{@power}\nAccuracy: #{@accuracy}\nPP: #{@pp}"
26
- end
27
-
28
- def url
29
- "http://www.smogon.com/dex/#{API::METAGAME}/moves/#{@_name}"
30
- end
27
+ attr_accessor(*ATTRIBUTES)
31
28
 
32
- %i(priority damage target).each do |m|
33
- define_method(m) { '' }
29
+ TYPE = 'moves'.freeze
34
30
  end
35
31
  end
36
32
  end
@@ -1,6 +1,5 @@
1
- #encoding: utf-8
2
1
  #--
3
- # Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
2
+ # Copyright(C) 2017 Giovanni Capuano <webmaster@giovannicapuano.net>
4
3
  #
5
4
  # This file is part of Smogon-API.
6
5
  #
@@ -19,19 +18,30 @@
19
18
  #++
20
19
 
21
20
  module Smogon
22
- class Moveset
23
- attr_accessor :pokemon, :name, :tier, :item, :ability, :nature, :moves, :evs
21
+ module Type
22
+ class Moveset < Base
23
+ ATTRIBUTES = %w(
24
+ pokemon name tier items abilities natures moves evs ivs
25
+ ).freeze
24
26
 
25
- def initialize
26
- @item = []
27
- @ability = []
28
- @nature = []
29
- @moves = []
30
- @evs = []
31
- end
27
+ attr_accessor(*ATTRIBUTES)
28
+
29
+ def initialize(pokemon, tier, moveset)
30
+ @pokemon = pokemon
31
+ @name = moveset['name']
32
+ # @description = moveset['description']
33
+ @tier = tier
34
+ @items = moveset['items']
35
+ @abilities = moveset['abilities']
36
+ @natures = moveset['natures']
37
+ @moves = moveset['moveslots']
38
+ @evs = moveset['evconfigs'].map(&:values)
39
+ @ivs = moveset['ivconfigs'].map(&:values)
40
+ end
32
41
 
33
- def to_s
34
- "Pokémon: #{@pokemon}\nSet: #{@name}\nItem: #{@item.join(' / ')}\nAbility: #{@ability.join(' / ')}\nNature: #{@nature.join(' / ')}\nMoves: #{''.tap { |s| @moves.each { |move| s << move.join(' / ') + ', '}}[0..-3]}\nEVs: #{@evs}"
42
+ def url
43
+ "http://www.smogon.com/dex/#{::Smogon::API::METAGAME}/pokemon/#{pokemon}"
44
+ end
35
45
  end
36
46
  end
37
47
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
2
+ # Copyright(C) 2017 Giovanni Capuano <webmaster@giovannicapuano.net>
3
3
  #
4
4
  # This file is part of Smogon-API.
5
5
  #
@@ -18,23 +18,37 @@
18
18
  #++
19
19
 
20
20
  module Smogon
21
- class Pokemon
22
- attr_accessor :name, :_name, :types, :tier, :abilities, :base_stats, :moves
23
-
24
- def to_s
25
- "Name: #{@name}\nAbility: #{@abilities.join(', ')}\nType: #{@types.join(?/)}\nTier: #{@tier}\nBase stats: #{@base_stats.join(?/)}\nMoves: #{@moves.join(', ')}"
26
- end
27
-
28
- def url
29
- "http://www.smogon.com/dex/#{API::METAGAME}/pokemon/#{@_name}"
30
- end
31
-
32
- def self.id2name(id)
33
- begin
34
- Nokogiri::HTML(open("http://www.marriland.com/pokedex/#{id}")).xpath('//div[@class="overview"]/h2')[0].text
35
- rescue
36
- nil
21
+ module Type
22
+ class Pokemon < Base
23
+ ATTRIBUTES = %w(
24
+ name base_stats weight height types abilities evolutions genfamily moves
25
+ ).freeze
26
+
27
+ attr_accessor(*ATTRIBUTES)
28
+
29
+ TYPE = 'pokemon'.freeze
30
+ STATS = %w(hp atk def spa spd spe).freeze
31
+
32
+ def initialize(response, moves)
33
+ @name = response['name']
34
+ @evolutions = response['evos']
35
+ @genfamily = response['genfamily']
36
+ @moves = moves
37
+
38
+ alts = response['alts'][0]
39
+ @base_stats = alts.fetch_values(*STATS)
40
+ @weight = alts['weight']
41
+ @height = alts['height']
42
+ @abilities = alts['abilities']
43
+ end
44
+
45
+ def self.id2name(id)
46
+ begin
47
+ Nokogiri::HTML(open("http://www.marriland.com/pokedex/#{id}")).xpath('//div[@class="overview"]/h2')[0].text
48
+ rescue
49
+ nil
50
+ end
37
51
  end
38
52
  end
39
53
  end
40
- end
54
+ end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
2
+ # Copyright(C) 2017 Giovanni Capuano <webmaster@giovannicapuano.net>
3
3
  #
4
4
  # This file is part of Smogon-API.
5
5
  #
@@ -18,5 +18,5 @@
18
18
  #++
19
19
 
20
20
  module Smogon
21
- VERSION = '0.6.2'
21
+ VERSION = '0.7'
22
22
  end
@@ -3,7 +3,7 @@ require 'smogon'
3
3
 
4
4
  describe 'Abilitydex' do
5
5
  it 'returns infos about the given ability' do
6
- ability = Smogon::Abilitydex.get 'Synchronize'
6
+ ability = Smogon::Abilitydex.get('Synchronize')
7
7
 
8
8
  expect(ability.name).to eq('Synchronize')
9
9
  expect(ability.description.length).to be > 10
@@ -3,7 +3,7 @@ require 'smogon'
3
3
 
4
4
  describe 'Itemdex' do
5
5
  it 'returns infos about the given item' do
6
- item = Smogon::Itemdex.get 'Leftovers'
6
+ item = Smogon::Itemdex.get('Leftovers')
7
7
 
8
8
  expect(item.name).to eq('Leftovers')
9
9
  expect(item.description.length).to be > 10
@@ -3,7 +3,7 @@ require 'smogon'
3
3
 
4
4
  describe 'Movedex' do
5
5
  it 'returns infos about the given move' do
6
- move = Smogon::Movedex.get 'Extreme Speed'
6
+ move = Smogon::Movedex.get('Extreme Speed')
7
7
 
8
8
  expect(move.name).to eq('Extreme Speed')
9
9
  expect(move.type).to eq('Normal')
@@ -3,15 +3,14 @@ require 'smogon'
3
3
 
4
4
  describe 'Movesetdex' do
5
5
  it 'returns the moveset of given Pokémon and metagame' do
6
- movesets = Smogon::Movesetdex.get 'Abomasnow', 'UU', 'bw'
6
+ movesets = Smogon::Movesetdex.get('Abomasnow', 'UU', 'bw')
7
7
 
8
- expect(movesets.length).to be > 0
9
- expect(movesets.to_s.length).to be > 10
10
- expect(movesets.first.nature.include?('Lonely')).to be_truthy
8
+ expect(movesets.count).to eq 2
9
+ expect(movesets.first.natures).to eq(%w(Sassy Calm))
11
10
  expect(movesets.select { |moveset| moveset.tier != 'UU' }.length).to be 0
12
11
  end
13
12
 
14
13
  it 'returns the moveset of given Pokémon and metagame having some empty field' do
15
- Smogon::Movesetdex.get 'Metagross', 'OU', 'xy'
14
+ Smogon::Movesetdex.get 'Metagross', 'OU', 'XY'
16
15
  end
17
16
  end
@@ -3,21 +3,22 @@ require 'smogon'
3
3
 
4
4
  describe 'Pokedex' do
5
5
  it 'returns the requested Pokémon' do
6
- pokemon = Smogon::Pokedex.get 'Blaziken'
6
+ pokemon = Smogon::Pokedex.get('Blaziken')
7
7
 
8
8
  expect(pokemon.name).to eq('Blaziken')
9
9
  expect(pokemon.base_stats.last).to be 80
10
10
  expect(pokemon.moves.length).to be > 10
11
11
  expect(pokemon.to_s.length).to be > 10
12
+ expect(pokemon.url).to eq 'http://www.smogon.com/dex/sm/pokemon/Blaziken'
12
13
  end
13
14
 
14
15
  it 'returns the requested Pokémon containing special chars' do
15
- pokemon = Smogon::Pokedex.get 'Porygon-Z'
16
+ pokemon = Smogon::Pokedex.get('Porygon-Z')
16
17
  expect(pokemon.name).to eq('Porygon-Z')
17
18
  end
18
19
 
19
20
  it 'returns the requested Pokémon containing numbers' do
20
- pokemon = Smogon::Pokedex.get 'Porygon2'
21
+ pokemon = Smogon::Pokedex.get('Porygon2')
21
22
  expect(pokemon.name).to eq('Porygon2')
22
23
  end
23
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smogon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: '0.7'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Giovanni Capuano
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-25 00:00:00.000000000 Z
11
+ date: 2017-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.8'
19
+ version: '2.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.8'
26
+ version: '2.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.4'
33
+ version: '12.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.4'
40
+ version: '12.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.1'
47
+ version: '3.6'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.1'
54
+ version: '3.6'
55
55
  description: APIs wrapper to get (Poké|Ability|Item|Move|Moveset)dex data from Smogon
56
56
  email: webmaster@giovannicapuano.net
57
57
  executables: []
@@ -67,6 +67,7 @@ files:
67
67
  - lib/smogon/naturedex.rb
68
68
  - lib/smogon/pokedex.rb
69
69
  - lib/smogon/types/ability.rb
70
+ - lib/smogon/types/base.rb
70
71
  - lib/smogon/types/item.rb
71
72
  - lib/smogon/types/move.rb
72
73
  - lib/smogon/types/moveset.rb
@@ -79,7 +80,7 @@ files:
79
80
  - spec/pokedex.rb
80
81
  homepage: http://www.giovannicapuano.net
81
82
  licenses:
82
- - GPL-3
83
+ - GPL-3.0
83
84
  metadata: {}
84
85
  post_install_message:
85
86
  rdoc_options: []
@@ -97,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
98
  version: '0'
98
99
  requirements: []
99
100
  rubyforge_project:
100
- rubygems_version: 2.2.2
101
+ rubygems_version: 2.6.12
101
102
  signing_key:
102
103
  specification_version: 4
103
104
  summary: APIs wrapper to get data from Smogon.