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.
@@ -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
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+
11
+ # rspec failure tracking
12
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.1
5
+ before_install: gem install bundler -v 1.14.3
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'awesome_print'
4
+ gem 'json'
5
+ gem 'nokogiri'
6
+
7
+ group :test do
8
+ gem 'rspec'
9
+ end
@@ -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
@@ -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
+
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -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__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -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,3 @@
1
+ module PokemonGenerator
2
+ VERSION = "0.1.8"
3
+ end
@@ -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
+
@@ -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
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: []