PokemonGenerator 0.1.8
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 +7 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +9 -0
- data/PokemonGenerator.gemspec +34 -0
- data/README.md +116 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/PokemonGenerator.rb +96 -0
- data/lib/PokemonGenerator/version.rb +3 -0
- data/spec/PokemonGenerator_spec.rb +63 -0
- data/spec/spec_helper.rb +11 -0
- data/vendor/cache/awesome_print-1.7.0.gem +0 -0
- data/vendor/cache/diff-lcs-1.3.gem +0 -0
- data/vendor/cache/json-2.0.2.gem +0 -0
- data/vendor/cache/mini_portile2-2.1.0.gem +0 -0
- data/vendor/cache/nokogiri-1.7.1.gem +0 -0
- data/vendor/cache/rspec-3.5.0.gem +0 -0
- data/vendor/cache/rspec-core-3.5.4.gem +0 -0
- data/vendor/cache/rspec-expectations-3.5.0.gem +0 -0
- data/vendor/cache/rspec-mocks-3.5.0.gem +0 -0
- data/vendor/cache/rspec-support-3.5.0.gem +0 -0
- metadata +116 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3101dbf8a656f79a5caa85866fabc51957f9a4f9
|
4
|
+
data.tar.gz: ab81f1dcdfc97b6633228a4d27be768a67b10725
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: be5a28a93e3070dd31b71b688afd4f4b9940df138b901def52ee663fb51dcad706e62dcc0deebcd9db590a323b5797fe0c14b1ae982f8be3e59575fb85b6e351
|
7
|
+
data.tar.gz: 94c64949320353a44c28d50145d09b0497441edb9b01906fe26168487044c8942c122ea6e5123021977ebb6ff61f74b9b28cf6e8d5ef582fd9d5b0a6fce0a993
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'PokemonGenerator/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "PokemonGenerator"
|
8
|
+
spec.version = PokemonGenerator::VERSION
|
9
|
+
spec.authors = ["collinl34"]
|
10
|
+
spec.email = ["collinlshelby@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = "Pokemon generator to quickely generate real pokemon and their specific moves."
|
13
|
+
spec.description = "This gem is a Pokemon wrapper for engineers can call simple functions
|
14
|
+
to create new pokemon with a name or type from the Pokemon
|
15
|
+
Series from any of the 8 generations. You can call
|
16
|
+
PokemonGenerator.pokemon() to get a random pokemon hash for you
|
17
|
+
to use in you application along with being able to get
|
18
|
+
the moves for that specific pokemon by its name a easy to work with array.
|
19
|
+
If you wish to learn more on how to PokemonGenerator Gem please visit
|
20
|
+
my Homepage."
|
21
|
+
spec.homepage = "https://github.com/collinL34/PokemonGeneratorGem"
|
22
|
+
spec.license = "MIT"
|
23
|
+
|
24
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
25
|
+
spec.files = `git ls-files`.split($/)
|
26
|
+
|
27
|
+
spec.bindir = "exe"
|
28
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
29
|
+
spec.require_paths = ["lib"]
|
30
|
+
|
31
|
+
spec.add_development_dependency "bundler", "~> 1.14"
|
32
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
33
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
34
|
+
end
|
data/README.md
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
# PokemonGeneratorGem
|
2
|
+
|
3
|
+
## Install
|
4
|
+
|
5
|
+
Add this line of code into your gemfile
|
6
|
+
```ruby
|
7
|
+
gem 'PokemonGenerator', '~>0.1.3'
|
8
|
+
```
|
9
|
+
Then type this in your terminal
|
10
|
+
```ruby
|
11
|
+
$ gem install bundler
|
12
|
+
$ bundle
|
13
|
+
```
|
14
|
+
## Usage
|
15
|
+
|
16
|
+
To get the name of a pokemon you call this method anywhere in your code.
|
17
|
+
```ruby
|
18
|
+
PokemonGenerator.name() => "Staravia"
|
19
|
+
```
|
20
|
+
|
21
|
+
To get a type of pokemon you call this method which will either return a string or an array containing strings of the different type that pokemon has.
|
22
|
+
```ruby
|
23
|
+
PokemonGenerator.type() => "Water"
|
24
|
+
PokemonGenerator.type() => ["Water", "Fighter"]
|
25
|
+
```
|
26
|
+
|
27
|
+
If you want a whole pokemon object.
|
28
|
+
```ruby
|
29
|
+
PokemonGenerator.pokemon() => {
|
30
|
+
"name" => "Diggersby",
|
31
|
+
"type" => [
|
32
|
+
[0] "Normal",
|
33
|
+
[1] "Ground"
|
34
|
+
],
|
35
|
+
"moves" => [
|
36
|
+
[ 0] "Agility",
|
37
|
+
[ 1] "Bulldoze",
|
38
|
+
[ 2] "Hammer Arm",
|
39
|
+
[ 3] "Leer",
|
40
|
+
[ 4] "Rototiller",
|
41
|
+
. . .
|
42
|
+
]
|
43
|
+
}
|
44
|
+
```
|
45
|
+
|
46
|
+
To choose a specific pokemon by its name.
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
PokemonGenerator.pokemon({ name: "Squirtle" }) => {
|
50
|
+
"name" => "Squirtle",
|
51
|
+
"type" => "Water",
|
52
|
+
"moves" => [
|
53
|
+
[ 0] "Tackle",
|
54
|
+
[ 1] "Tail Whip",
|
55
|
+
[ 2] "Water Gun",
|
56
|
+
[ 3] "Withdraw",
|
57
|
+
[ 4] "Bubble",
|
58
|
+
. . .
|
59
|
+
]
|
60
|
+
}
|
61
|
+
```
|
62
|
+
|
63
|
+
To choose a specific pokemon by its type.
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
PokemonGenerator.pokemon({ type: "Fire" }) => {
|
67
|
+
"name" => "Rotom",
|
68
|
+
"type" => [
|
69
|
+
[0] "Electric",
|
70
|
+
[1] "Fire"
|
71
|
+
],
|
72
|
+
"moves" => [
|
73
|
+
[ 0] "Astonish",
|
74
|
+
[ 1] "Charge",
|
75
|
+
[ 2] "Confuse Ray",
|
76
|
+
[ 3] "Discharge",
|
77
|
+
[ 4] "Thunder Shock",
|
78
|
+
. . .
|
79
|
+
]
|
80
|
+
}
|
81
|
+
```
|
82
|
+
|
83
|
+
To choose a specific set of moves by its type.
|
84
|
+
|
85
|
+
```ruby
|
86
|
+
PokemonGenerator.moves({ type: "Fire" }) => [
|
87
|
+
[ 0] "Leer",
|
88
|
+
[ 1] "Smog",
|
89
|
+
[ 2] "Ember",
|
90
|
+
[ 3] "Smokescreen",
|
91
|
+
[ 4] "Feint Attack",
|
92
|
+
[ 5] "Fire Spin",
|
93
|
+
. . .
|
94
|
+
[
|
95
|
+
```
|
96
|
+
|
97
|
+
To choose a specific set of moves for a perticular pokemon.
|
98
|
+
|
99
|
+
```ruby
|
100
|
+
PokemonGenerator.moves({ name: "Squirtle" }) => [
|
101
|
+
[ 0] "Tackle",
|
102
|
+
[ 1] "Tail Whip",
|
103
|
+
[ 2] "Water Gun",
|
104
|
+
[ 3] "Withdraw",
|
105
|
+
[ 4] "Bubble",
|
106
|
+
. . .
|
107
|
+
]
|
108
|
+
```
|
109
|
+
|
110
|
+
## Contribution
|
111
|
+
Any Bug reports and or pull requests are more than welcome at https://github.com/collinL34/PokemonGeneratorGem.
|
112
|
+
|
113
|
+
## License
|
114
|
+
|
115
|
+
This code is free to use under the terms of the MIT license. [MIT License](http://opensource.org/licenses/MIT).
|
116
|
+
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "PokemonGenerator"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
require "PokemonGenerator/version"
|
2
|
+
require 'json'
|
3
|
+
require 'nokogiri'
|
4
|
+
require 'open-uri'
|
5
|
+
require 'json'
|
6
|
+
require 'awesome_print'
|
7
|
+
|
8
|
+
module PokemonGenerator
|
9
|
+
|
10
|
+
def self.nokogiri_obj
|
11
|
+
Nokogiri::HTML(open("https://pokemondb.net/pokedex/all"))
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.type_stripper(a_tags)
|
15
|
+
types_list = []
|
16
|
+
a_tags.each do |link|
|
17
|
+
types_list << link.text
|
18
|
+
end
|
19
|
+
types_list.length == 2 ? types_list[1] : [types_list[1], types_list[2]]
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.move_html_stripper(pokmn_name)
|
23
|
+
html = PokemonGenerator.nokogiri_obj()
|
24
|
+
html.css('tr td .ent-name').find do |pokmn|
|
25
|
+
return pokmn.attributes['href'].text if pokmn.text == pokmn_name
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.name
|
30
|
+
nokogiri = PokemonGenerator.nokogiri_obj()
|
31
|
+
pokmn_name = nokogiri.css('tr')[rand(0..909)].css('.ent-name').text
|
32
|
+
pokmn_name if pokmn_name != ''
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.type
|
36
|
+
nokogiri = PokemonGenerator.nokogiri_obj()
|
37
|
+
PokemonGenerator.type_stripper(nokogiri.css('tr')[rand(0..909)].css('a'))
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.moves(pokmn_name)
|
41
|
+
moves_list = []
|
42
|
+
pokmn_link = PokemonGenerator.move_html_stripper(pokmn_name)
|
43
|
+
html = Nokogiri::HTML(open("https://pokemondb.net/#{pokmn_link}"))
|
44
|
+
html.css('td').each do |pokmn_txt|
|
45
|
+
moves = pokmn_txt.css('.ent-name').text
|
46
|
+
moves_list << moves if !moves_list.include?(moves) && moves != ''
|
47
|
+
end
|
48
|
+
moves_list
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.pokemon_name_specific(pokemon_list, name)
|
52
|
+
if pokemon_list != ''
|
53
|
+
pokemon_list.find do |pokmn|
|
54
|
+
if pokmn.css('.ent-name').text == name.capitalize
|
55
|
+
return {
|
56
|
+
name: name,
|
57
|
+
type: PokemonGenerator.type_stripper(pokmn.css('a')),
|
58
|
+
moves: PokemonGenerator.moves(name)
|
59
|
+
}
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.pokemon_type_specific(pokemon_list, type)
|
66
|
+
pokemon_list.find do |pokmn|
|
67
|
+
if PokemonGenerator.type_stripper(pokmn.css('a')).include?(type)
|
68
|
+
return {
|
69
|
+
name: pokmn.css('.ent-name').text,
|
70
|
+
type: PokemonGenerator.type_stripper(pokmn.css('a')),
|
71
|
+
moves: PokemonGenerator.moves(pokmn.css('.ent-name').text)
|
72
|
+
}
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
def self.pokemon(args={})
|
79
|
+
nokogiri = PokemonGenerator.nokogiri_obj()
|
80
|
+
pokemon_list = nokogiri.css('tr')
|
81
|
+
pokemon_obj = {}
|
82
|
+
if args[:name]
|
83
|
+
pokemon_obj = PokemonGenerator.pokemon_name_specific(pokemon_list, args[:name])
|
84
|
+
elsif args[:type]
|
85
|
+
pokemon_obj = PokemonGenerator.pokemon_type_specific(pokemon_list, args[:type])
|
86
|
+
else
|
87
|
+
pokemon = pokemon_list[rand(0..909)]
|
88
|
+
pokemon_obj[:name] = pokemon.css('.ent-name').text
|
89
|
+
pokemon_obj[:type] = PokemonGenerator.type_stripper(pokemon.css('a'))
|
90
|
+
pokemon_obj[:moves] = PokemonGenerator.moves(pokemon.css('.ent-name').text)
|
91
|
+
end
|
92
|
+
pokemon_obj
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
RSpec.describe PokemonGenerator do
|
4
|
+
|
5
|
+
describe 'Version' do
|
6
|
+
it "has a version number" do
|
7
|
+
expect(PokemonGenerator::VERSION).not_to be nil
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe 'Pokemon' do
|
12
|
+
it 'returns a randomized hash specifiying a pokemon name and type' do
|
13
|
+
expect(PokemonGenerator.pokemon()).to be_a Hash
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'returns the correct pokemon with the specific type' do
|
17
|
+
expect(PokemonGenerator.pokemon({type: 'Fire'})).to be_a Hash
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'returns an array and not an object for moves list' do
|
21
|
+
moves = PokemonGenerator.moves({type: 'Water'})
|
22
|
+
pokmn = PokemonGenerator.pokemon({type: 'Water'})
|
23
|
+
expect(moves).not_to eq(pokmn)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'returns the correct pokemon with non capitalized name' do
|
27
|
+
expect(PokemonGenerator.pokemon({name: 'bulbasaur'})).to be_a Hash
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe 'Name' do
|
32
|
+
it 'returns a random named pokemon' do
|
33
|
+
# 100.times { expect(PokemonGenerator.name).to be_a String }
|
34
|
+
expect(PokemonGenerator.name).to be_a String
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe 'Type' do
|
39
|
+
it 'returns a randomized pokemon type' do
|
40
|
+
# 100.times { expect(PokemonGenerator.type[0]).to be_a String }
|
41
|
+
expect(PokemonGenerator.type[0]).to be_a String
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe 'Moves' do
|
46
|
+
|
47
|
+
it 'returns a selected list of array of moves for the specific pokemon' do
|
48
|
+
expect(PokemonGenerator.moves({name: 'Venusaur'})).to be_a Array
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'returns the moves for the specific pokemon' do
|
52
|
+
squirtle = PokemonGenerator.pokemon( {name: 'Squirtle'} )
|
53
|
+
moves = PokemonGenerator.moves('Squirtle')
|
54
|
+
expect(squirtle[:moves]).to eq moves
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require "bundler/setup"
|
2
|
+
require "PokemonGenerator"
|
3
|
+
|
4
|
+
RSpec.configure do |config|
|
5
|
+
# Enable flags like --only-failures and --next-failure
|
6
|
+
config.example_status_persistence_file_path = ".rspec_status"
|
7
|
+
|
8
|
+
config.expect_with :rspec do |c|
|
9
|
+
c.syntax = :expect
|
10
|
+
end
|
11
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
metadata
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: PokemonGenerator
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.8
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- collinl34
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-05-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.14'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.14'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
description: "This gem is a Pokemon wrapper for engineers can call simple functions
|
56
|
+
\n to create new pokemon with a name or type from the Pokemon
|
57
|
+
\n Series from any of the 8 generations. You can call \n
|
58
|
+
\ PokemonGenerator.pokemon() to get a random pokemon hash
|
59
|
+
for you\n to use in you application along with being able
|
60
|
+
to get \n the moves for that specific pokemon by its name
|
61
|
+
a easy to work with array. \n If you wish to learn more on
|
62
|
+
how to PokemonGenerator Gem please visit\n my Homepage."
|
63
|
+
email:
|
64
|
+
- collinlshelby@gmail.com
|
65
|
+
executables: []
|
66
|
+
extensions: []
|
67
|
+
extra_rdoc_files: []
|
68
|
+
files:
|
69
|
+
- ".gitignore"
|
70
|
+
- ".rspec"
|
71
|
+
- ".travis.yml"
|
72
|
+
- Gemfile
|
73
|
+
- PokemonGenerator.gemspec
|
74
|
+
- README.md
|
75
|
+
- Rakefile
|
76
|
+
- bin/console
|
77
|
+
- bin/setup
|
78
|
+
- lib/PokemonGenerator.rb
|
79
|
+
- lib/PokemonGenerator/version.rb
|
80
|
+
- spec/PokemonGenerator_spec.rb
|
81
|
+
- spec/spec_helper.rb
|
82
|
+
- vendor/cache/awesome_print-1.7.0.gem
|
83
|
+
- vendor/cache/diff-lcs-1.3.gem
|
84
|
+
- vendor/cache/json-2.0.2.gem
|
85
|
+
- vendor/cache/mini_portile2-2.1.0.gem
|
86
|
+
- vendor/cache/nokogiri-1.7.1.gem
|
87
|
+
- vendor/cache/rspec-3.5.0.gem
|
88
|
+
- vendor/cache/rspec-core-3.5.4.gem
|
89
|
+
- vendor/cache/rspec-expectations-3.5.0.gem
|
90
|
+
- vendor/cache/rspec-mocks-3.5.0.gem
|
91
|
+
- vendor/cache/rspec-support-3.5.0.gem
|
92
|
+
homepage: https://github.com/collinL34/PokemonGeneratorGem
|
93
|
+
licenses:
|
94
|
+
- MIT
|
95
|
+
metadata: {}
|
96
|
+
post_install_message:
|
97
|
+
rdoc_options: []
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
requirements: []
|
111
|
+
rubyforge_project:
|
112
|
+
rubygems_version: 2.6.12
|
113
|
+
signing_key:
|
114
|
+
specification_version: 4
|
115
|
+
summary: Pokemon generator to quickely generate real pokemon and their specific moves.
|
116
|
+
test_files: []
|