smogon 0.5.2 → 0.6
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 +4 -4
- data/lib/smogon.rb +6 -3
- data/lib/smogon/abilitydex.rb +21 -32
- data/lib/smogon/api.rb +53 -0
- data/lib/smogon/itemdex.rb +21 -32
- data/lib/smogon/movedex.rb +29 -45
- data/lib/smogon/movesetdex.rb +57 -59
- data/lib/smogon/naturedex.rb +260 -0
- data/lib/smogon/pokedex.rb +62 -63
- data/lib/smogon/types/ability.rb +5 -5
- data/lib/smogon/types/item.rb +5 -5
- data/lib/smogon/types/move.rb +11 -7
- data/lib/smogon/types/moveset.rb +3 -3
- data/lib/smogon/types/pokemon.rb +2 -2
- data/lib/smogon/version.rb +2 -4
- data/spec/abilitydex.rb +12 -0
- data/spec/itemdex.rb +12 -0
- data/spec/movedex.rb +13 -0
- data/spec/movesetdex.rb +13 -0
- data/spec/pokedex.rb +13 -0
- metadata +31 -21
- data/spec/smogon_spec.rb +0 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c3754f037f47ef782ff02f217455d16921b0de26
|
4
|
+
data.tar.gz: 03fdf4ba26140f321937bb4885292ef256f16273
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bbf87bf7c1aa0be1729cf392d2f3786d01ea585a70ab61d84430e0b9487acc5f007e82b2f0859ac536f370804d07533644e9d893fc24417abd35d207daa2e167
|
7
|
+
data.tar.gz: fc7aa690a33d408ceffd08c1c07cf01b776a18741673da6346b9a37ea084f9ba30f9085bbb1c8a4989fbea3f9a1a084540fd5179c3aceb9fbaa6e118cdc14834
|
data/lib/smogon.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright(C)
|
2
|
+
# Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
|
3
3
|
#
|
4
4
|
# This file is part of Smogon-API.
|
5
5
|
#
|
@@ -18,7 +18,10 @@
|
|
18
18
|
#++
|
19
19
|
|
20
20
|
require 'open-uri'
|
21
|
-
require '
|
21
|
+
require 'json'
|
22
|
+
|
23
|
+
require 'smogon/api'
|
24
|
+
require 'smogon/naturedex'
|
22
25
|
|
23
26
|
require 'smogon/types/pokemon'
|
24
27
|
require 'smogon/types/ability'
|
@@ -32,4 +35,4 @@ require 'smogon/itemdex'
|
|
32
35
|
require 'smogon/movedex'
|
33
36
|
require 'smogon/movesetdex'
|
34
37
|
|
35
|
-
require 'smogon/version'
|
38
|
+
require 'smogon/version'
|
data/lib/smogon/abilitydex.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright(C)
|
2
|
+
# Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
|
3
3
|
#
|
4
4
|
# This file is part of Smogon-API.
|
5
5
|
#
|
@@ -18,38 +18,27 @@
|
|
18
18
|
#++
|
19
19
|
|
20
20
|
module Smogon
|
21
|
-
class Abilitydex
|
22
|
-
def self.get(name)
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
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']
|
29
41
|
end
|
30
|
-
|
31
|
-
Ability.new.tap { |ability|
|
32
|
-
s = smogon.xpath('//div[@id="content_wrapper"]')[0]
|
33
|
-
ability.name = s.xpath('.//h1').first.text
|
34
|
-
ability._name = name
|
35
|
-
|
36
|
-
ability.description = ''.tap { |d|
|
37
|
-
h2 = 0
|
38
|
-
ul = 0
|
39
|
-
s.children.each { |c|
|
40
|
-
if c.name == 'h2'
|
41
|
-
h2 += 1
|
42
|
-
next
|
43
|
-
end
|
44
|
-
if c.name == 'ul'
|
45
|
-
ul += 1
|
46
|
-
next
|
47
|
-
end
|
48
|
-
break if ul >= 2
|
49
|
-
d << c.text if h2 == 1 && !c.text.strip.empty?
|
50
|
-
}
|
51
|
-
}
|
52
|
-
}
|
53
42
|
end
|
54
43
|
end
|
55
44
|
end
|
data/lib/smogon/api.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright(C) 2015 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
|
+
class API
|
22
|
+
METAGAME = 'xy'
|
23
|
+
ENDPOINT = 'http://www.smogon.com/dex/api/query?q='
|
24
|
+
|
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']
|
36
|
+
end
|
37
|
+
|
38
|
+
def using_metagame(metagame, &block)
|
39
|
+
default_metagame = METAGAME.dup
|
40
|
+
METAGAME.replace aliasize(metagame)
|
41
|
+
instance_eval(&block).tap do
|
42
|
+
METAGAME.replace default_metagame
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def aliasize(string)
|
49
|
+
string.downcase.gsub(' ', '_').gsub(/[^a-z_]/i, '')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/smogon/itemdex.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright(C)
|
2
|
+
# Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
|
3
3
|
#
|
4
4
|
# This file is part of Smogon-API.
|
5
5
|
#
|
@@ -18,38 +18,27 @@
|
|
18
18
|
#++
|
19
19
|
|
20
20
|
module Smogon
|
21
|
-
class Itemdex
|
22
|
-
def self.get(name)
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
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']
|
29
41
|
end
|
30
|
-
|
31
|
-
Item.new.tap { |item|
|
32
|
-
s = smogon.xpath('//div[@id="content_wrapper"]')[0]
|
33
|
-
item.name = s.xpath('.//h1').first.text
|
34
|
-
item._name = name
|
35
|
-
|
36
|
-
item.description = ''.tap { |d|
|
37
|
-
h2 = 0
|
38
|
-
ul = 0
|
39
|
-
s.children.each { |c|
|
40
|
-
if c.name == 'h2'
|
41
|
-
h2 += 1
|
42
|
-
next
|
43
|
-
end
|
44
|
-
if c.name == 'ul'
|
45
|
-
ul += 1
|
46
|
-
next
|
47
|
-
end
|
48
|
-
break if ul >= 2
|
49
|
-
d << c.text if h2 == 1 && !c.text.strip.empty?
|
50
|
-
}
|
51
|
-
}
|
52
|
-
}
|
53
42
|
end
|
54
43
|
end
|
55
44
|
end
|
data/lib/smogon/movedex.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright(C)
|
2
|
+
# Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
|
3
3
|
#
|
4
4
|
# This file is part of Smogon-API.
|
5
5
|
#
|
@@ -18,51 +18,35 @@
|
|
18
18
|
#++
|
19
19
|
|
20
20
|
module Smogon
|
21
|
-
class Movedex
|
22
|
-
def self.get(name)
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
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' ]
|
29
49
|
end
|
30
|
-
|
31
|
-
Move.new.tap { |move|
|
32
|
-
move.name = smogon.xpath('//div[@id="content_wrapper"]/h1').first.text
|
33
|
-
move._name = name
|
34
|
-
|
35
|
-
move.description = ''.tap { |d|
|
36
|
-
h2 = 0
|
37
|
-
ul = 0
|
38
|
-
dl = 0
|
39
|
-
smogon.xpath('//div[@id="content_wrapper"]').children.each { |c|
|
40
|
-
if c.name == 'h2'
|
41
|
-
h2 += 1
|
42
|
-
next
|
43
|
-
end
|
44
|
-
if c.name == 'ul'
|
45
|
-
ul += 1
|
46
|
-
next
|
47
|
-
end
|
48
|
-
if c.name == 'dl'
|
49
|
-
dl += 1
|
50
|
-
next
|
51
|
-
end
|
52
|
-
break if ul >= 2 || dl >= 2
|
53
|
-
d << c.text if h2 == 1 && !c.text.strip.empty?
|
54
|
-
}
|
55
|
-
}
|
56
|
-
|
57
|
-
info = smogon.xpath('//table[@class="info"]/tr')[1].xpath('.//td')
|
58
|
-
move.type = info[0].text
|
59
|
-
move.power = info[1].text
|
60
|
-
move.accuracy = info[2].text
|
61
|
-
move.pp = info[3].text
|
62
|
-
move.priority = info[4].text
|
63
|
-
move.damage = info[5].text.strip
|
64
|
-
move.target = info[6].text.strip
|
65
|
-
}
|
66
50
|
end
|
67
51
|
end
|
68
52
|
end
|
data/lib/smogon/movesetdex.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright(C)
|
2
|
+
# Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
|
3
3
|
#
|
4
4
|
# This file is part of Smogon-API.
|
5
5
|
#
|
@@ -18,68 +18,66 @@
|
|
18
18
|
#++
|
19
19
|
|
20
20
|
module Smogon
|
21
|
-
class Movesetdex
|
22
|
-
def self.get(name, tier, metagame)
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
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
|
+
|
38
|
+
response = if metagame
|
39
|
+
API.using_metagame(metagame) do
|
40
|
+
API.request 'pokemon', name, fields
|
41
|
+
end
|
42
|
+
else
|
43
|
+
API.request 'pokemon', name, fields
|
28
44
|
end
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
movesets << moveset
|
51
|
-
}
|
52
|
-
|
53
|
-
i = 0
|
54
|
-
xpath = metagame == 'rb' ? '//td[@class="rbymoves"]' : '//table[@class="info moveset"]'
|
55
|
-
smogon.xpath(xpath).each { |s|
|
56
|
-
moveset = movesets[i]
|
57
|
-
|
58
|
-
continue = false
|
59
|
-
(metagame == 'rb' ? s : s.xpath('.//td')[0]).text.each_line { |a|
|
60
|
-
a = a.gsub(/\n?/, '').strip
|
61
|
-
if a == ?~
|
62
|
-
continue = false
|
63
|
-
elsif a == ?/
|
64
|
-
continue = true
|
65
|
-
elsif a.empty?
|
66
|
-
next
|
67
|
-
elsif a != ?~ && a != ?/
|
68
|
-
if continue
|
69
|
-
moveset.moves.last << a
|
45
|
+
return nil if response.is_a?(String) || response.empty? || response.first.empty?
|
46
|
+
return response if not incapsulate
|
47
|
+
|
48
|
+
response = response.first
|
49
|
+
|
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
|
63
|
+
|
64
|
+
if moveset.moves[slot]
|
65
|
+
moveset.moves[slot] << moveslot['move_name']
|
70
66
|
else
|
71
|
-
moveset.moves << [
|
67
|
+
moveset.moves << [ moveslot['move_name'] ]
|
72
68
|
end
|
73
|
-
continue = false
|
74
69
|
end
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
70
|
+
|
71
|
+
moveset.evs = [].tap do |evs|
|
72
|
+
['hp', 'patk', 'pdef', 'spatk', 'spdef', 'spe'].each do |stat|
|
73
|
+
evs << movesetdex['evconfigs'].first[stat]
|
74
|
+
end
|
75
|
+
end.join ' / '
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
tier ? results.reject { |moveset| moveset.tier.downcase != tier.downcase } : results
|
83
81
|
end
|
84
82
|
end
|
85
83
|
end
|
@@ -0,0 +1,260 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright(C) 2015 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
|
+
class Naturedex
|
22
|
+
NATURES = [
|
23
|
+
{
|
24
|
+
hp: 1.0,
|
25
|
+
patk: 1.1,
|
26
|
+
pdef: 1.0,
|
27
|
+
spatk: 0.9,
|
28
|
+
spdef: 1.0,
|
29
|
+
spe: 1.0,
|
30
|
+
name: 'Adamant'
|
31
|
+
},
|
32
|
+
{
|
33
|
+
hp: 1.0,
|
34
|
+
patk: 1.0,
|
35
|
+
pdef: 1.0,
|
36
|
+
spatk: 1.0,
|
37
|
+
spdef: 1.0,
|
38
|
+
spe: 1.0,
|
39
|
+
name: 'Bashful'
|
40
|
+
},
|
41
|
+
{
|
42
|
+
hp: 1.0,
|
43
|
+
patk: 0.9,
|
44
|
+
pdef: 1.1,
|
45
|
+
spatk: 1.0,
|
46
|
+
spdef: 1.0,
|
47
|
+
spe: 1.0,
|
48
|
+
name: 'Bold'
|
49
|
+
},
|
50
|
+
{
|
51
|
+
hp: 1.0,
|
52
|
+
patk: 1.1,
|
53
|
+
pdef: 1.0,
|
54
|
+
spatk: 1.0,
|
55
|
+
spdef: 1.0,
|
56
|
+
spe: 0.9,
|
57
|
+
name: 'Brave'
|
58
|
+
},
|
59
|
+
{
|
60
|
+
hp: 1.0,
|
61
|
+
patk: 0.9,
|
62
|
+
pdef: 1.0,
|
63
|
+
spatk: 1.0,
|
64
|
+
spdef: 1.1,
|
65
|
+
spe: 1.0,
|
66
|
+
name: 'Calm'
|
67
|
+
},
|
68
|
+
{
|
69
|
+
hp: 1.0,
|
70
|
+
patk: 1.0,
|
71
|
+
pdef: 1.0,
|
72
|
+
spatk: 0.9,
|
73
|
+
spdef: 1.1,
|
74
|
+
spe: 1.0,
|
75
|
+
name: 'Careful'
|
76
|
+
},
|
77
|
+
{
|
78
|
+
hp: 1.0,
|
79
|
+
patk: 1.0,
|
80
|
+
pdef: 1.0,
|
81
|
+
spatk: 1.0,
|
82
|
+
spdef: 1.0,
|
83
|
+
spe: 1.0,
|
84
|
+
name: 'Docile'
|
85
|
+
},
|
86
|
+
{
|
87
|
+
hp: 1.0,
|
88
|
+
patk: 1.0,
|
89
|
+
pdef: 0.9,
|
90
|
+
spatk: 1.0,
|
91
|
+
spdef: 1.1,
|
92
|
+
spe: 1.0,
|
93
|
+
name: 'Gentle'
|
94
|
+
},
|
95
|
+
{
|
96
|
+
hp: 1.0,
|
97
|
+
patk: 1.0,
|
98
|
+
pdef: 1.0,
|
99
|
+
spatk: 1.0,
|
100
|
+
spdef: 1.0,
|
101
|
+
spe: 1.0,
|
102
|
+
name: 'Hardy'
|
103
|
+
},
|
104
|
+
{
|
105
|
+
hp: 1.0,
|
106
|
+
patk: 1.0,
|
107
|
+
pdef: 0.9,
|
108
|
+
spatk: 1.0,
|
109
|
+
spdef: 1.0,
|
110
|
+
spe: 1.1,
|
111
|
+
name: 'Hasty'
|
112
|
+
},
|
113
|
+
{
|
114
|
+
hp: 1.0,
|
115
|
+
patk: 1.0,
|
116
|
+
pdef: 1.1,
|
117
|
+
spatk: 0.9,
|
118
|
+
spdef: 1.0,
|
119
|
+
spe: 1.0,
|
120
|
+
name: 'Impish'
|
121
|
+
},
|
122
|
+
{
|
123
|
+
hp: 1,
|
124
|
+
patk: 1,
|
125
|
+
pdef: 1,
|
126
|
+
spatk: 0.9,
|
127
|
+
spdef: 1,
|
128
|
+
spe: 1.1,
|
129
|
+
name: 'Jolly'
|
130
|
+
},
|
131
|
+
{
|
132
|
+
hp: 1.0,
|
133
|
+
patk: 1.0,
|
134
|
+
pdef: 1.1,
|
135
|
+
spatk: 1.0,
|
136
|
+
spdef: 0.9,
|
137
|
+
spe: 1.0,
|
138
|
+
name: 'Lax'
|
139
|
+
},
|
140
|
+
{
|
141
|
+
hp: 1.0,
|
142
|
+
patk: 1.1,
|
143
|
+
pdef: 0.9,
|
144
|
+
spatk: 1.0,
|
145
|
+
spdef: 1.0,
|
146
|
+
spe: 1.0,
|
147
|
+
name: 'Lonely'
|
148
|
+
},
|
149
|
+
{
|
150
|
+
hp: 1.0,
|
151
|
+
patk: 1.0,
|
152
|
+
pdef: 0.9,
|
153
|
+
spatk: 1.1,
|
154
|
+
spdef: 1.0,
|
155
|
+
spe: 1.0,
|
156
|
+
name: 'Mild'
|
157
|
+
},
|
158
|
+
{
|
159
|
+
hp: 1.0,
|
160
|
+
patk: 0.9,
|
161
|
+
pdef: 1.0,
|
162
|
+
spatk: 1.1,
|
163
|
+
spdef: 1.0,
|
164
|
+
spe: 1.0,
|
165
|
+
name: 'Modest'
|
166
|
+
},
|
167
|
+
{
|
168
|
+
hp: 1.0,
|
169
|
+
patk: 1.0,
|
170
|
+
pdef: 1.0,
|
171
|
+
spatk: 1.0,
|
172
|
+
spdef: 0.9,
|
173
|
+
spe: 1.1,
|
174
|
+
name: 'Naive'
|
175
|
+
},
|
176
|
+
{
|
177
|
+
hp: 1.0,
|
178
|
+
patk: 1.1,
|
179
|
+
pdef: 1.0,
|
180
|
+
spatk: 1.0,
|
181
|
+
spdef: 0.9,
|
182
|
+
spe: 1.0,
|
183
|
+
name: 'Naughty'
|
184
|
+
},
|
185
|
+
{
|
186
|
+
hp: 1.0,
|
187
|
+
patk: 1.0,
|
188
|
+
pdef: 1.0,
|
189
|
+
spatk: 1.1,
|
190
|
+
spdef: 1.0,
|
191
|
+
spe: 0.9,
|
192
|
+
name: 'Quiet'
|
193
|
+
},
|
194
|
+
{
|
195
|
+
hp: 1.0,
|
196
|
+
patk: 1.0,
|
197
|
+
pdef: 1.0,
|
198
|
+
spatk: 1.0,
|
199
|
+
spdef: 1.0,
|
200
|
+
spe: 1.0,
|
201
|
+
name: 'Quirky'
|
202
|
+
},
|
203
|
+
{
|
204
|
+
hp: 1.0,
|
205
|
+
patk: 1.0,
|
206
|
+
pdef: 1.0,
|
207
|
+
spatk: 1.1,
|
208
|
+
spdef: 0.9,
|
209
|
+
spe: 1.0,
|
210
|
+
name: 'Rash'
|
211
|
+
},
|
212
|
+
{
|
213
|
+
hp: 1.0,
|
214
|
+
patk: 1.0,
|
215
|
+
pdef: 1.1,
|
216
|
+
spatk: 1.0,
|
217
|
+
spdef: 1.0,
|
218
|
+
spe: 0.9,
|
219
|
+
name: 'Relaxed'
|
220
|
+
},
|
221
|
+
{
|
222
|
+
hp: 1.0,
|
223
|
+
patk: 1.0,
|
224
|
+
pdef: 1.0,
|
225
|
+
spatk: 1.0,
|
226
|
+
spdef: 1.1,
|
227
|
+
spe: 0.9,
|
228
|
+
name: 'Sassy'
|
229
|
+
},
|
230
|
+
{
|
231
|
+
hp: 1.0,
|
232
|
+
patk: 1.0,
|
233
|
+
pdef: 1.0,
|
234
|
+
spatk: 1.0,
|
235
|
+
spdef: 1.0,
|
236
|
+
spe: 1.0,
|
237
|
+
name: 'Serious'
|
238
|
+
},
|
239
|
+
{
|
240
|
+
hp: 1.0,
|
241
|
+
patk: 0.9,
|
242
|
+
pdef: 1.0,
|
243
|
+
spatk: 1.0,
|
244
|
+
spdef: 1.0,
|
245
|
+
spe: 1.1,
|
246
|
+
name: 'Timid'
|
247
|
+
}
|
248
|
+
]
|
249
|
+
|
250
|
+
def self.get(hash)
|
251
|
+
NATURES.each do |nature|
|
252
|
+
boost = nature.dup
|
253
|
+
boost.delete :name
|
254
|
+
return nature[:name] if hash == boost || hash == Hash[boost.map { |(k, v)| [k.to_s, v] }]
|
255
|
+
end
|
256
|
+
|
257
|
+
nil
|
258
|
+
end
|
259
|
+
end
|
260
|
+
end
|
data/lib/smogon/pokedex.rb
CHANGED
@@ -1,63 +1,62 @@
|
|
1
|
-
#--
|
2
|
-
# Copyright(C)
|
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
|
-
class Pokedex
|
22
|
-
def self.get(name)
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
end
|
1
|
+
#--
|
2
|
+
# Copyright(C) 2015 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
|
+
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
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/smogon/types/ability.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright(C)
|
2
|
+
# Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
|
3
3
|
#
|
4
4
|
# This file is part of Smogon-API.
|
5
5
|
#
|
@@ -20,13 +20,13 @@
|
|
20
20
|
module Smogon
|
21
21
|
class Ability
|
22
22
|
attr_accessor :name, :_name, :description
|
23
|
-
|
23
|
+
|
24
24
|
def to_s
|
25
25
|
"Name: #{@name}\nDescription: #{@description}"
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
def url
|
29
|
-
"http://www.smogon.com/
|
29
|
+
"http://www.smogon.com/dex/#{API::METAGAME}/abilities/#{@_name}"
|
30
30
|
end
|
31
31
|
end
|
32
|
-
end
|
32
|
+
end
|
data/lib/smogon/types/item.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright(C)
|
2
|
+
# Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
|
3
3
|
#
|
4
4
|
# This file is part of Smogon-API.
|
5
5
|
#
|
@@ -20,13 +20,13 @@
|
|
20
20
|
module Smogon
|
21
21
|
class Item
|
22
22
|
attr_accessor :name, :_name, :description
|
23
|
-
|
23
|
+
|
24
24
|
def to_s
|
25
25
|
"Name: #{@name}\nDescription: #{@description}"
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
def url
|
29
|
-
"http://www.smogon.com/
|
29
|
+
"http://www.smogon.com/dex/#{API::METAGAME}/items/#{@_name}"
|
30
30
|
end
|
31
31
|
end
|
32
|
-
end
|
32
|
+
end
|
data/lib/smogon/types/move.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright(C)
|
2
|
+
# Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
|
3
3
|
#
|
4
4
|
# This file is part of Smogon-API.
|
5
5
|
#
|
@@ -19,14 +19,18 @@
|
|
19
19
|
|
20
20
|
module Smogon
|
21
21
|
class Move
|
22
|
-
attr_accessor :name, :_name, :description, :type, :power, :accuracy, :pp
|
23
|
-
|
22
|
+
attr_accessor :name, :_name, :description, :type, :power, :accuracy, :pp
|
23
|
+
|
24
24
|
def to_s
|
25
|
-
"Name: #{@name}\nDescription: #{@description}\nType: #{@type}\nPower: #{@power}\nAccuracy: #{@accuracy}\nPP: #{@pp}
|
25
|
+
"Name: #{@name}\nDescription: #{@description}\nType: #{@type}\nPower: #{@power}\nAccuracy: #{@accuracy}\nPP: #{@pp}"
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
def url
|
29
|
-
"http://www.smogon.com/
|
29
|
+
"http://www.smogon.com/dex/#{API::METAGAME}/moves/#{@_name}"
|
30
|
+
end
|
31
|
+
|
32
|
+
%i(priority damage target).each do |m|
|
33
|
+
define_method(m) { '' }
|
30
34
|
end
|
31
35
|
end
|
32
|
-
end
|
36
|
+
end
|
data/lib/smogon/types/moveset.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#encoding: utf-8
|
2
2
|
#--
|
3
|
-
# Copyright(C)
|
3
|
+
# Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
|
4
4
|
#
|
5
5
|
# This file is part of Smogon-API.
|
6
6
|
#
|
@@ -21,7 +21,7 @@
|
|
21
21
|
module Smogon
|
22
22
|
class Moveset
|
23
23
|
attr_accessor :pokemon, :name, :tier, :item, :ability, :nature, :moves, :evs
|
24
|
-
|
24
|
+
|
25
25
|
def initialize
|
26
26
|
@item = []
|
27
27
|
@ability = []
|
@@ -33,4 +33,4 @@ module Smogon
|
|
33
33
|
"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}"
|
34
34
|
end
|
35
35
|
end
|
36
|
-
end
|
36
|
+
end
|
data/lib/smogon/types/pokemon.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright(C)
|
2
|
+
# Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
|
3
3
|
#
|
4
4
|
# This file is part of Smogon-API.
|
5
5
|
#
|
@@ -26,7 +26,7 @@ module Smogon
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def url
|
29
|
-
"http://www.smogon.com/
|
29
|
+
"http://www.smogon.com/dex/#{API::METAGAME}/pokemon/#{@_name}"
|
30
30
|
end
|
31
31
|
|
32
32
|
def self.id2name(id)
|
data/lib/smogon/version.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright(C)
|
2
|
+
# Copyright(C) 2015 Giovanni Capuano <webmaster@giovannicapuano.net>
|
3
3
|
#
|
4
4
|
# This file is part of Smogon-API.
|
5
5
|
#
|
@@ -18,7 +18,5 @@
|
|
18
18
|
#++
|
19
19
|
|
20
20
|
module Smogon
|
21
|
-
|
22
|
-
'0.5.2'
|
23
|
-
end
|
21
|
+
VERSION = '0.6'
|
24
22
|
end
|
data/spec/abilitydex.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'smogon'
|
3
|
+
|
4
|
+
describe 'Abilitydex' do
|
5
|
+
it 'returns infos about the given ability' do
|
6
|
+
ability = Smogon::Abilitydex.get 'Synchronize'
|
7
|
+
|
8
|
+
expect(ability.name).to eq('Synchronize')
|
9
|
+
expect(ability.description.length).to be > 10
|
10
|
+
expect(ability.to_s.length).to be > 10
|
11
|
+
end
|
12
|
+
end
|
data/spec/itemdex.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'smogon'
|
3
|
+
|
4
|
+
describe 'Itemdex' do
|
5
|
+
it 'returns infos about the given item' do
|
6
|
+
item = Smogon::Itemdex.get 'Leftovers'
|
7
|
+
|
8
|
+
expect(item.name).to eq('Leftovers')
|
9
|
+
expect(item.description.length).to be > 10
|
10
|
+
expect(item.to_s.length).to be > 10
|
11
|
+
end
|
12
|
+
end
|
data/spec/movedex.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'smogon'
|
3
|
+
|
4
|
+
describe 'Movedex' do
|
5
|
+
it 'returns infos about the given move' do
|
6
|
+
move = Smogon::Movedex.get 'Extreme Speed'
|
7
|
+
|
8
|
+
expect(move.name).to eq('Extreme Speed')
|
9
|
+
expect(move.type).to eq('Normal')
|
10
|
+
expect(move.pp).to be 5
|
11
|
+
expect(move.to_s.length).to be > 10
|
12
|
+
end
|
13
|
+
end
|
data/spec/movesetdex.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'smogon'
|
3
|
+
|
4
|
+
describe 'Movesetdex' do
|
5
|
+
it 'returns the moveset of given Pokémon and metagame' do
|
6
|
+
movesets = Smogon::Movesetdex.get 'Abomasnow', 'UU', 'bw'
|
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
|
11
|
+
expect(movesets.select { |moveset| moveset.tier != 'UU' }.length).to be 0
|
12
|
+
end
|
13
|
+
end
|
data/spec/pokedex.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'smogon'
|
3
|
+
|
4
|
+
describe 'Pokedex' do
|
5
|
+
it 'returns the requested Pokémon' do
|
6
|
+
pokemon = Smogon::Pokedex.get 'Blaziken'
|
7
|
+
|
8
|
+
expect(pokemon.name).to eq('Blaziken')
|
9
|
+
expect(pokemon.base_stats.last).to be 80
|
10
|
+
expect(pokemon.moves.length).to be > 10
|
11
|
+
expect(pokemon.to_s.length).to be > 10
|
12
|
+
end
|
13
|
+
end
|
metadata
CHANGED
@@ -1,67 +1,70 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smogon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.6'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Giovanni Capuano
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: json
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '1.8'
|
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: '
|
26
|
+
version: '1.8'
|
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: '
|
33
|
+
version: '10.4'
|
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: '
|
40
|
+
version: '10.4'
|
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: '
|
47
|
+
version: '3.1'
|
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: '
|
55
|
-
description:
|
54
|
+
version: '3.1'
|
55
|
+
description: APIs wrapper to get (Poké|Ability|Item|Move|Moveset)dex data from Smogon
|
56
56
|
email: webmaster@giovannicapuano.net
|
57
57
|
executables: []
|
58
58
|
extensions: []
|
59
59
|
extra_rdoc_files: []
|
60
60
|
files:
|
61
|
+
- lib/smogon.rb
|
61
62
|
- lib/smogon/abilitydex.rb
|
63
|
+
- lib/smogon/api.rb
|
62
64
|
- lib/smogon/itemdex.rb
|
63
65
|
- lib/smogon/movedex.rb
|
64
66
|
- lib/smogon/movesetdex.rb
|
67
|
+
- lib/smogon/naturedex.rb
|
65
68
|
- lib/smogon/pokedex.rb
|
66
69
|
- lib/smogon/types/ability.rb
|
67
70
|
- lib/smogon/types/item.rb
|
@@ -69,8 +72,11 @@ files:
|
|
69
72
|
- lib/smogon/types/moveset.rb
|
70
73
|
- lib/smogon/types/pokemon.rb
|
71
74
|
- lib/smogon/version.rb
|
72
|
-
-
|
73
|
-
- spec/
|
75
|
+
- spec/abilitydex.rb
|
76
|
+
- spec/itemdex.rb
|
77
|
+
- spec/movedex.rb
|
78
|
+
- spec/movesetdex.rb
|
79
|
+
- spec/pokedex.rb
|
74
80
|
homepage: http://www.giovannicapuano.net
|
75
81
|
licenses:
|
76
82
|
- GPL-3
|
@@ -91,9 +97,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
97
|
version: '0'
|
92
98
|
requirements: []
|
93
99
|
rubyforge_project:
|
94
|
-
rubygems_version: 2.
|
100
|
+
rubygems_version: 2.2.2
|
95
101
|
signing_key:
|
96
102
|
specification_version: 4
|
97
|
-
summary:
|
103
|
+
summary: APIs wrapper to get data from Smogon.
|
98
104
|
test_files:
|
99
|
-
- spec/
|
105
|
+
- spec/abilitydex.rb
|
106
|
+
- spec/itemdex.rb
|
107
|
+
- spec/movedex.rb
|
108
|
+
- spec/movesetdex.rb
|
109
|
+
- spec/pokedex.rb
|
data/spec/smogon_spec.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
#! /usr/bin/env ruby
|
2
|
-
require 'smogon'
|
3
|
-
|
4
|
-
describe 'Smogon' do
|
5
|
-
it 'returns the requested Pokémon' do
|
6
|
-
pokemon = Smogon::Pokedex.get 'Blaziken'
|
7
|
-
pokemon.name.should eql('Blaziken')
|
8
|
-
pokemon.base_stats.last.should eql('80')
|
9
|
-
pokemon.moves.any?.should be_true
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'search the given ability' do
|
13
|
-
ability = Smogon::Abilitydex.get 'Synchronize'
|
14
|
-
ability.name.should eql('Synchronize')
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'returns the given item' do
|
18
|
-
item = Smogon::Itemdex.get 'Leftovers'
|
19
|
-
item.name.should eql('Leftovers')
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'returns the given move' do
|
23
|
-
move = Smogon::Movedex.get 'Reflect'
|
24
|
-
move.name.should eql('Reflect')
|
25
|
-
move.type.should eql('Psychic')
|
26
|
-
move.pp.should eql('20')
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'returns the moveset of the given Pokémon and metagame' do
|
30
|
-
moveset = Smogon::Movesetdex.get 'Blaziken', 'uber', 'bw'
|
31
|
-
moveset.any?.should be_true
|
32
|
-
moveset.first.nature.include?('Jolly').should be_true
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'returns the name of the Pokémon relative to the given ID' do
|
36
|
-
Smogon::Pokemon.id2name(111).should eql('Rhyhorn')
|
37
|
-
moveset = Smogon::Movesetdex.get 'Blaziken', 'uber', 'bw'
|
38
|
-
moveset.any?.should be_true
|
39
|
-
moveset.first.nature.include?('Jolly').should be_true
|
40
|
-
end
|
41
|
-
end
|