smogon 0.4.3 → 0.5

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: 637f13e09752cb9e1a94d1120a0191404586b3e5
4
- data.tar.gz: ebbf2f272f1a687912b5d46519dd6dbb6f917101
3
+ metadata.gz: 3bd0731542bdbe9f388f16b573287396022ec427
4
+ data.tar.gz: 0c7a8cf702effe4365ec2fda7efbc826d2785a17
5
5
  SHA512:
6
- metadata.gz: a0daccd1ae4c63b3c570626fb5bdce82a8f744c238d3878db8b8db9a8fd68d88a67bd1f6091313f8e8b557f15e2661bcefae201071052d1db979ae9290a6a1af
7
- data.tar.gz: 6e7d8df40918a700702138dd017645066192e0cf3f58dff8429546cde3fdd708b15e9a925a28d070b668e79d4502623cb8e3f1030cd759f41592c6460b32891e
6
+ metadata.gz: d3ccb31e36294882007c0e733fe4b4e3bf2bab717b3e4371a70d9b27282c062f006ddaaccfa9fdbdf47903e351eb70ee3aefeb441e1674e580d77d70e76fc9c9
7
+ data.tar.gz: 7c9a7cc677e1a3f3656e24897806c48f22ac75dc7f9f0bd2d34f0a008a24669559ab8193b6841c3e7ba164a8246e546f4af7b3cc56ae027ce3574e8df203c8bb
@@ -21,38 +21,35 @@ module Smogon
21
21
  class Abilitydex
22
22
  def self.get(name)
23
23
  begin
24
- name = name.downcase.gsub /\s/, ?_
25
- url = URI::encode "http://www.smogon.com/bw/abilities/#{name}"
26
-
27
- smogon = Nokogiri::HTML(open(url))
24
+ name = name.downcase.gsub /\s/, ?_
25
+ url = URI::encode "http://www.smogon.com/bw/abilities/#{name}"
26
+ smogon = Nokogiri::HTML open(url)
28
27
  rescue
29
28
  return nil
30
29
  end
31
30
 
32
- ability = Ability.new
33
-
34
- s = smogon.xpath('//div[@id="content_wrapper"]')[0]
35
- ability.name = s.xpath('.//h1').first.text
36
- ability._name = name
37
-
38
- ability.description = ''.tap { |d|
39
- h2 = 0
40
- ul = 0
41
- s.children.each { |c|
42
- if c.name == 'h2'
43
- h2 += 1
44
- next
45
- end
46
- if c.name == 'ul'
47
- ul += 1
48
- next
49
- end
50
- break if ul >= 2
51
- d << c.text if h2 == 1 && !c.text.strip.empty?
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
+ }
52
51
  }
53
52
  }
54
-
55
- return ability
56
53
  end
57
54
  end
58
55
  end
@@ -21,38 +21,35 @@ module Smogon
21
21
  class Itemdex
22
22
  def self.get(name)
23
23
  begin
24
- name = name.downcase.gsub /\s/, ?_
25
- url = URI::encode "http://www.smogon.com/bw/items/#{name}"
26
-
27
- smogon = Nokogiri::HTML(open(url))
24
+ name = name.downcase.gsub /\s/, ?_
25
+ url = URI::encode "http://www.smogon.com/bw/items/#{name}"
26
+ smogon = Nokogiri::HTML open(url)
28
27
  rescue
29
28
  return nil
30
29
  end
31
30
 
32
- item = Item.new
33
-
34
- s = smogon.xpath('//div[@id="content_wrapper"]')[0]
35
- item.name = s.xpath('.//h1').first.text
36
- item._name = name
37
-
38
- item.description = ''.tap { |d|
39
- h2 = 0
40
- ul = 0
41
- s.children.each { |c|
42
- if c.name == 'h2'
43
- h2 += 1
44
- next
45
- end
46
- if c.name == 'ul'
47
- ul += 1
48
- next
49
- end
50
- break if ul >= 2
51
- d << c.text if h2 == 1 && !c.text.strip.empty?
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
+ }
52
51
  }
53
52
  }
54
-
55
- return item
56
53
  end
57
54
  end
58
55
  end
@@ -21,50 +21,48 @@ module Smogon
21
21
  class Movedex
22
22
  def self.get(name)
23
23
  begin
24
- name = name.downcase.gsub /\s/, ?_
25
- url = URI::encode "http://www.smogon.com/bw/moves/#{name}"
26
-
27
- smogon = Nokogiri::HTML(open(url))
24
+ name = name.downcase.gsub /\s/, ?_
25
+ url = URI::encode "http://www.smogon.com/bw/moves/#{name}"
26
+ smogon = Nokogiri::HTML open(url)
28
27
  rescue
29
28
  return nil
30
29
  end
31
30
 
32
- move = Move.new
33
-
34
- move.name = smogon.xpath('//div[@id="content_wrapper"]/h1').first.text
35
- move._name = name
36
-
37
- move.description = ''.tap { |d|
38
- h2 = 0
39
- ul = 0
40
- dl = 0
41
- smogon.xpath('//div[@id="content_wrapper"]').children.each { |c|
42
- if c.name == 'h2'
43
- h2 += 1
44
- next
45
- end
46
- if c.name == 'ul'
47
- ul += 1
48
- next
49
- end
50
- if c.name == 'dl'
51
- dl += 1
52
- next
53
- end
54
- break if ul >= 2 || dl >= 2
55
- d << c.text if h2 == 1 && !c.text.strip.empty?
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
+ }
56
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
57
65
  }
58
-
59
- info = smogon.xpath('//table[@class="info"]/tr')[1].xpath('.//td')
60
- move.type = info[0].text
61
- move.power = info[1].text
62
- move.accuracy = info[2].text
63
- move.pp = info[3].text
64
- move.priority = info[4].text
65
- move.damage = info[5].text.strip
66
- move.target = info[6].text.strip
67
- return move
68
66
  end
69
67
  end
70
68
  end
@@ -21,68 +21,65 @@ module Smogon
21
21
  class Movesetdex
22
22
  def self.get(name, tier, metagame)
23
23
  begin
24
- url = URI::encode "http://www.smogon.com/#{metagame}/pokemon/#{name}/#{tier}"
25
-
24
+ url = URI::encode "http://www.smogon.com/#{metagame}/pokemon/#{name}/#{tier}"
26
25
  smogon = Nokogiri::HTML(open(url))
27
26
  rescue
28
27
  return nil
29
28
  end
30
29
 
31
- movesets = []
32
-
33
- smogon.xpath('//table[@class="info strategyheader"]').each { |s|
34
- moveset = Moveset.new
35
-
36
- moveset.pokemon = smogon.xpath('//tr/td[@class="header"]/h1').last.text
37
- moveset.name = s.xpath('tr')[1].xpath('td[@class="name"]/h2').first.text
38
- moveset.tier = smogon.xpath('//div[@id="content_wrapper"]/ul/li/strong').last.text
39
-
40
- if metagame == 'gs'
41
- s.xpath('.//a').each { |a|
42
- moveset.item << a.text if a['href'].include? '/items/'
43
- }
44
- elsif metagame != 'rb'
45
- s.xpath('.//a').each { |a|
46
- moveset.item << a.text if a['href'].include? '/items/'
47
- moveset.ability << a.text if a['href'].include? '/abilities/'
48
- moveset.nature << a.text if a['href'].include? '/natures/'
49
- }
50
- end
51
-
52
- movesets << moveset
53
- }
54
-
55
- i = 0
56
- xpath = metagame == 'rb' ? '//td[@class="rbymoves"]' : '//table[@class="info moveset"]'
57
- smogon.xpath(xpath).each { |s|
58
- moveset = movesets[i]
59
-
60
- continue = false
61
- (metagame == 'rb' ? s : s.xpath('.//td')[0]).text.each_line { |a|
62
- a = a.gsub(/\n?/, '').strip
63
- if a == ?~
64
- continue = false
65
- elsif a == ?/
66
- continue = true
67
- elsif a.empty?
68
- next
69
- elsif a != ?~ && a != ?/
70
- if continue
71
- moveset.moves.last << a
72
- else
73
- moveset.moves << [a]
74
- end
75
- continue = false
30
+ [].tap { |movesets|
31
+ smogon.xpath('//table[@class="info strategyheader"]').each { |s|
32
+ moveset = Moveset.new
33
+
34
+ moveset.pokemon = smogon.xpath('//tr/td[@class="header"]/h1').last.text
35
+ moveset.name = s.xpath('tr')[1].xpath('td[@class="name"]/h2').first.text
36
+ moveset.tier = smogon.xpath('//div[@id="content_wrapper"]/ul/li/strong').last.text
37
+
38
+ if metagame == 'gs'
39
+ s.xpath('.//a').each { |a|
40
+ moveset.item << a.text if a['href'].include? '/items/'
41
+ }
42
+ elsif metagame != 'rb'
43
+ s.xpath('.//a').each { |a|
44
+ moveset.item << a.text if a['href'].include? '/items/'
45
+ moveset.ability << a.text if a['href'].include? '/abilities/'
46
+ moveset.nature << a.text if a['href'].include? '/natures/'
47
+ }
76
48
  end
49
+
50
+ movesets << moveset
77
51
  }
78
52
 
79
- moveset.evs = s.xpath('.//td').last.text.strip if metagame != 'rb' && metagame != 'gs'
80
-
81
- movesets[i] = moveset
82
- i += 1
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
70
+ else
71
+ moveset.moves << [a]
72
+ end
73
+ continue = false
74
+ end
75
+ }
76
+
77
+ moveset.evs = s.xpath('.//td').last.text.strip if metagame != 'rb' && metagame != 'gs'
78
+
79
+ movesets[i] = moveset
80
+ i += 1
81
+ }
83
82
  }
84
-
85
- return movesets
86
83
  end
87
84
  end
88
85
  end
@@ -24,41 +24,40 @@ module Smogon
24
24
  url = URI::encode "http://www.smogon.com/bw/pokemon/#{name}"
25
25
  moves_url = URI::encode "http://www.smogon.com/bw/pokemon/#{name}/moves"
26
26
 
27
- pokemon = Pokemon.new
28
- smogon = Nokogiri::HTML open(url)
29
- moves = Nokogiri::HTML open(moves_url)
27
+ smogon = Nokogiri::HTML open url
28
+ moves = Nokogiri::HTML open moves_url
30
29
  rescue
31
30
  return nil
32
31
  end
33
-
34
- pokemon.name = smogon.xpath('//td[@class="header"]/h1').last.text
35
- pokemon._name = pokemon.name.downcase
36
-
37
- smogon.xpath('//table[@class="info"]/tr/td/a')[0..-2].each { |type|
38
- (pokemon.types ||= []) << type.text
39
- }
40
-
41
- pokemon.tier = smogon.xpath('//table[@class="info"]/tr/td/a').last.text
42
-
43
- smogon.xpath('//td[@class="ability"]/dl/dt/a').each { |ability|
44
- (pokemon.abilities ||= []) << ability.text
45
- }
46
-
47
- begin
48
- (pokemon.abilities ||= []) << smogon.xpath('//td[@class="ability"]/dl/dt/em/a').first.text
49
- rescue
50
- # No dream world abilities :(
51
- end
52
-
53
- smogon.xpath('//td[@class="bar"]').each { |base_stat|
54
- (pokemon.base_stats ||= []) << base_stat.text.strip
55
- }
56
-
57
- moves.xpath('//table[starts-with(@id, "move_list")]/tbody/tr').each { |tr|
58
- (pokemon.moves ||= []) << tr.xpath('.//td')[0].text.strip
59
- }
60
32
 
61
- return pokemon
33
+ Pokemon.new.tap { |pokemon|
34
+ pokemon.name = smogon.xpath('//td[@class="header"]/h1').last.text
35
+ pokemon._name = pokemon.name.downcase
36
+
37
+ smogon.xpath('//table[@class="info"]/tr/td/a')[0..-2].each { |type|
38
+ (pokemon.types ||= []) << type.text
39
+ }
40
+
41
+ pokemon.tier = smogon.xpath('//table[@class="info"]/tr/td/a').last.text
42
+
43
+ smogon.xpath('//td[@class="ability"]/dl/dt/a').each { |ability|
44
+ (pokemon.abilities ||= []) << ability.text
45
+ }
46
+
47
+ begin
48
+ (pokemon.abilities ||= []) << smogon.xpath('//td[@class="ability"]/dl/dt/em/a').first.text
49
+ rescue
50
+ # No dream world abilities :(
51
+ end
52
+
53
+ smogon.xpath('//td[@class="bar"]').each { |base_stat|
54
+ (pokemon.base_stats ||= []) << base_stat.text.strip
55
+ }
56
+
57
+ moves.xpath('//table[starts-with(@id, "move_list")]/tbody/tr').each { |tr|
58
+ (pokemon.moves ||= []) << tr.xpath('.//td')[0].text.strip
59
+ }
60
+ }
62
61
  end
63
62
  end
64
63
  end
@@ -22,11 +22,11 @@ module Smogon
22
22
  attr_accessor :name, :_name, :description
23
23
 
24
24
  def to_s
25
- "Name: #{name}\nDescription: #{description}"
25
+ "Name: #{@name}\nDescription: #{@description}"
26
26
  end
27
27
 
28
28
  def url
29
- "http://www.smogon.com/bw/abilities/#{_name}"
29
+ "http://www.smogon.com/bw/abilities/#{@_name}"
30
30
  end
31
31
  end
32
32
  end
@@ -32,6 +32,5 @@ module Smogon
32
32
  def to_s
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
-
36
35
  end
37
36
  end
@@ -22,18 +22,18 @@ module Smogon
22
22
  attr_accessor :name, :_name, :types, :tier, :abilities, :base_stats, :moves
23
23
 
24
24
  def to_s
25
- "Name: #{name}\nAbility: #{abilities.join(', ')}\nType: #{types.join(?/)}\nTier: #{tier}\nBase stats: #{base_stats.join(?/)}\nMoves: #{moves.join(', ')}"
25
+ "Name: #{@name}\nAbility: #{@abilities.join(', ')}\nType: #{@types.join(?/)}\nTier: #{@tier}\nBase stats: #{@base_stats.join(?/)}\nMoves: #{@moves.join(', ')}"
26
26
  end
27
27
 
28
28
  def url
29
- "http://www.smogon.com/bw/pokemon/#{_name}"
29
+ "http://www.smogon.com/bw/pokemon/#{@_name}"
30
30
  end
31
31
 
32
32
  def self.id2name(id)
33
33
  begin
34
- return Nokogiri::HTML(open("http://www.marriland.com/pokedex/#{id}")).xpath('//div[@class="overview"]/h2')[0].text
34
+ Nokogiri::HTML(open("http://www.marriland.com/pokedex/#{id}")).xpath('//div[@class="overview"]/h2')[0].text
35
35
  rescue
36
- return nil
36
+ nil
37
37
  end
38
38
  end
39
39
  end
@@ -19,6 +19,6 @@
19
19
 
20
20
  module Smogon
21
21
  def self.version
22
- '0.4.3'
22
+ '0.5'
23
23
  end
24
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.4.3
4
+ version: '0.5'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Giovanni Capuano
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-09 00:00:00.000000000 Z
11
+ date: 2014-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri