cryptozoologist 3.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e52d93f21bb6d449f2e6ad9190323f9770519393
4
- data.tar.gz: 848a2751e0bb8611a24f712dedc6e5e8c4dd18b3
3
+ metadata.gz: 09791606d26cc558e12ccd78ba862963ef208a7d
4
+ data.tar.gz: 26a3f40019b4274cd0b6f3f1e92e4e68fda64672
5
5
  SHA512:
6
- metadata.gz: e63efe1e7de416d9b40c48ed345e3bcf95660b2116ab7245fd035a417de8b53887e53d67a324cafb9b77dfd17e0bf553f6236933fa388ea63318d01a28a3d932
7
- data.tar.gz: 145b991a02fc26aa9b94f44ec06e951018c334473ec5e478b3807cf4c86dd1470191d6fda633b0c0afcb4e3da0fe174d522d791493df14074b153f4b00dc0dec
6
+ metadata.gz: 5d969c28223dfa7d731d3b7307a880fe672217235a3a903565f161ed51a500530ebad246652d092ef5d52cc2d1d3a9f05abca99e1f438364e42ef1d3012a8f76
7
+ data.tar.gz: 83b718c59a20eda2ec7fb45472e981fe6b1e293bb7b46c92880a7970e3a3307d0a53282555db272ebadef1a95b1b8e68e012b13e950993f6ff2cf91512654b5d
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.1.0
4
+
5
+ - added a city method - generate an animal city with `Cryptozoologist.city`!
6
+
3
7
  ## 3.0.0
4
8
 
5
9
  **Important!!** Now requires Ruby 2.3.0 or higher (as of writing, Ruby 2.2 is in security maintenance mode, while 2.3 is in normal maintanance mode).
data/README.md CHANGED
@@ -22,11 +22,12 @@ Or install it yourself as:
22
22
 
23
23
  ## Usage
24
24
 
25
- Cryptozoologist provides two main functions:
25
+ Cryptozoologist provides four main functions:
26
26
 
27
27
  * `Cryptozoologist.random`: returns a string separated by a delimiter (_Note_: aliased as `Cryptozoologist.generate` for backwards compatibility with anything below version 3)
28
28
  * `Cryptozoologist.lorem(sentence_count)`: returns `sentence_count` number of sentences, separated by punctuation randomly selected from `["!", ".", "?"]`
29
29
  * `Cryptozoologist.street_address`: returns a string formatted to US street address standards (house number and street name) using the animal dictionaries (_Note_: ignores animal subdictionary exclusions)
30
+ * `Cryptozoologist.city`: returns a string representing a city that uses the animal dictionaries
30
31
 
31
32
  Each method will respect your configuration settings where applicable.
32
33
 
@@ -45,6 +46,7 @@ The complete list of dictionaries includes:
45
46
  * `Cryptozoologist::Dictionary.filler` ("a", "the", etc)
46
47
  * `Cryptozoologist::Dictionary.punctuation`
47
48
  * `Cryptozoologist::Dictionary.addresses` ("Lane", "Street", etc - I don't know what this part of an address is called!)
49
+ * `Cryptozoologist::Dictionary.cities`
48
50
 
49
51
  ### `Cryptozoologist.random`
50
52
 
@@ -91,7 +93,20 @@ Cryptozoologist.street_address # => 2558 Sea Dragon Court
91
93
 
92
94
  This only uses the `Animal` dictionaries and will *ignore your configuration to exclude subdictionaries*.
93
95
 
94
- ## Configuration
96
+ ### `Cryptozoologist.city`
97
+
98
+ The `Cryptozoologist.city` method will return a string containing an animal city.
99
+
100
+ Example:
101
+
102
+ ```ruby
103
+ Cryptozoologist.city # => Goat Tower
104
+ Cryptozoologist.city # => Raccoon City
105
+ Cryptozoologist.city # => Mandrill Hills
106
+ Cryptozoologist.city # => Lionville
107
+ ```
108
+
109
+ ## Configuration
95
110
 
96
111
  Configuration blocks take the following options:
97
112
 
@@ -43,7 +43,11 @@ module Cryptozoologist
43
43
  Generator.street_address
44
44
  end
45
45
 
46
- protected
46
+ def self.city
47
+ Generator.city
48
+ end
49
+
50
+ protected
47
51
  def self.subdictionaries
48
52
  Dictionaries.library
49
53
  end
@@ -27,6 +27,10 @@ module Cryptozoologist
27
27
  colors: {
28
28
  paint: Colors::Paint,
29
29
  web: Colors::WebSafe
30
+ },
31
+ cities: {
32
+ words: Cities::Words,
33
+ terminologies: Cities::Terminologies
30
34
  }
31
35
  }
32
36
  end
@@ -43,6 +47,10 @@ module Cryptozoologist
43
47
  Addresses.list
44
48
  end
45
49
 
50
+ def cities
51
+ create_list(:cities)
52
+ end
53
+
46
54
  private
47
55
  def create_list(key)
48
56
  list = []
@@ -0,0 +1,9 @@
1
+ module Cryptozoologist
2
+ module Cities
3
+ module Terminologies
4
+ def self.list
5
+ ['burg', 'field', 'land', 'landia', 'port', 'side', 'town', 'ville']
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Cryptozoologist
2
+ module Cities
3
+ module Words
4
+ def self.list
5
+ ['city', 'heights', 'hills', 'park', 'tower']
6
+ end
7
+ end
8
+ end
9
+ end
@@ -29,5 +29,9 @@ module Cryptozoologist
29
29
  def addresses
30
30
  Dictionaries.addresses
31
31
  end
32
+
33
+ def cities
34
+ Dictionaries.cities
35
+ end
32
36
  end
33
37
  end
@@ -48,12 +48,29 @@ module Cryptozoologist
48
48
 
49
49
  # Generates a string for a street address with a number and street. Only
50
50
  # uses animal dictionaries and does not respect config exclusions.
51
- #
51
+ #
52
52
  def street_address
53
53
  number = rand(1..9000)
54
54
  street = Dictionary.animals.sample
55
55
  street = street.split(" ").map! {|word| word.capitalize! }.join(" ")
56
56
  "#{number} #{street} #{Dictionary.addresses.sample}"
57
57
  end
58
+
59
+ def city
60
+ exclude = Cryptozoologist.configuration.exclude
61
+ cities_words = Cryptozoologist::Cities::Words.list
62
+ cities_terminologies = Cryptozoologist::Cities::Terminologies.list
63
+ words_formatted = exclude.include?(:words) ? [] : cities_words.map { |word| " #{word.capitalize}" }
64
+ terminologies = exclude.include?(:terminologies) ? [] : cities_terminologies
65
+ city_labels = words_formatted + terminologies
66
+
67
+ "#{one_word_animals.sample.capitalize}#{city_labels.sample}"
68
+ end
69
+
70
+ private
71
+
72
+ def one_word_animals
73
+ Dictionary.animals.select {|animal| animal.split(' ').count == 1}
74
+ end
58
75
  end
59
76
  end
@@ -1,3 +1,3 @@
1
1
  module Cryptozoologist
2
- VERSION = "3.0.0"
2
+ VERSION = "3.1.0"
3
3
  end
@@ -13,7 +13,7 @@ describe Cryptozoologist do
13
13
 
14
14
  it 'generates the number of sentences requested' do
15
15
  sentence = Cryptozoologist.lorem(3)
16
- punctuation = sentence.gsub!(/\w/, "").gsub!(" ", "")
16
+ punctuation = sentence.scan(/[.|?|!]/)
17
17
  expect(punctuation.length).to eq(3)
18
18
  end
19
19
  end
@@ -28,7 +28,11 @@ describe Cryptozoologist do
28
28
  end
29
29
 
30
30
  describe('with quantity') do
31
+ let(:test_quantity_library) { ["quantity"] }
32
+
31
33
  before do
34
+ allow(Cryptozoologist::Dictionary).to receive(:send).and_call_original
35
+ allow(Cryptozoologist::Dictionary).to receive(:send).with(:quantity).and_return(test_quantity_library)
32
36
  Cryptozoologist.configure do |config|
33
37
  config.include = [:quantity]
34
38
  config.delimiter = "_"
@@ -41,7 +45,6 @@ describe Cryptozoologist do
41
45
  end
42
46
 
43
47
  it 'only has one word from the quantity list' do
44
- Cryptozoologist.random
45
48
  random = Cryptozoologist.random.split("_")
46
49
  matches = Cryptozoologist::Dictionaries::Quantity.list.select do |word|
47
50
  random.include?(word)
@@ -73,4 +76,32 @@ describe Cryptozoologist do
73
76
  expect(Cryptozoologist::Dictionary.addresses.include?(@street.last)).to be true
74
77
  end
75
78
  end
79
+
80
+ context '#city' do
81
+ before do
82
+ @city = Cryptozoologist.city
83
+ end
84
+
85
+ it 'should return a string' do
86
+ expect(@city).to be_instance_of(String)
87
+ end
88
+
89
+ it 'should include an animal' do
90
+ has_animal = false
91
+ Cryptozoologist::Dictionary.animals.each do |animal|
92
+ has_animal = @city.downcase.include?(animal) if @city.downcase.include?(animal)
93
+ end
94
+
95
+ expect(has_animal).to be true
96
+ end
97
+
98
+ it 'should include a city label' do
99
+ has_city = false
100
+ Cryptozoologist::Dictionary.cities.each do |city|
101
+ has_city = @city.downcase.include?(city) if @city.downcase.include?(city)
102
+ end
103
+
104
+ expect(has_city).to be true
105
+ end
106
+ end
76
107
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cryptozoologist
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Liz Abinante
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-03 00:00:00.000000000 Z
11
+ date: 2017-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -99,6 +99,8 @@ files:
99
99
  - lib/cryptozoologist/dictionaries/addresses.rb
100
100
  - lib/cryptozoologist/dictionaries/animals/common.rb
101
101
  - lib/cryptozoologist/dictionaries/animals/mythical.rb
102
+ - lib/cryptozoologist/dictionaries/cities/teminologies.rb
103
+ - lib/cryptozoologist/dictionaries/cities/words.rb
102
104
  - lib/cryptozoologist/dictionaries/clothing.rb
103
105
  - lib/cryptozoologist/dictionaries/colors/paint.rb
104
106
  - lib/cryptozoologist/dictionaries/colors/web_safe.rb
@@ -146,3 +148,4 @@ test_files:
146
148
  - spec/cryptozoologist/generator_spec.rb
147
149
  - spec/cryptozoologist_spec.rb
148
150
  - spec/spec_helper.rb
151
+ has_rdoc: