faker 2.15.1 → 3.4.2
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/CHANGELOG.md +848 -34
- data/README.md +225 -103
- data/lib/faker/blockchain/aeternity.rb +1 -1
- data/lib/faker/blockchain/bitcoin.rb +2 -2
- data/lib/faker/blockchain/ethereum.rb +1 -1
- data/lib/faker/blockchain/tezos.rb +31 -3
- data/lib/faker/books/dune.rb +2 -10
- data/lib/faker/books/lovecraft.rb +9 -41
- data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
- data/lib/faker/creature/bird.rb +203 -0
- data/lib/faker/default/address.rb +7 -27
- data/lib/faker/default/alphanumeric.rb +2 -8
- data/lib/faker/default/app.rb +1 -10
- data/lib/faker/default/avatar.rb +1 -12
- data/lib/faker/default/bank.rb +25 -17
- data/lib/faker/default/barcode.rb +33 -22
- data/lib/faker/default/boolean.rb +1 -4
- data/lib/faker/default/cannabis.rb +10 -0
- data/lib/faker/default/chile_rut.rb +25 -25
- data/lib/faker/default/chuck_norris.rb +1 -0
- data/lib/faker/default/code.rb +71 -42
- data/lib/faker/default/color.rb +77 -6
- data/lib/faker/default/commerce.rb +31 -17
- data/lib/faker/default/company.rb +137 -22
- data/lib/faker/default/crypto.rb +26 -4
- data/lib/faker/default/crypto_coin.rb +3 -15
- data/lib/faker/default/date.rb +65 -42
- data/lib/faker/default/demographic.rb +1 -5
- data/lib/faker/default/driving_licence.rb +20 -18
- data/lib/faker/default/drone.rb +1 -1
- data/lib/faker/default/educator.rb +13 -0
- data/lib/faker/default/emotion.rb +33 -0
- data/lib/faker/default/file.rb +5 -22
- data/lib/faker/default/finance.rb +30 -7
- data/lib/faker/default/food.rb +27 -1
- data/lib/faker/default/hipster.rb +8 -48
- data/lib/faker/default/hobby.rb +22 -0
- data/lib/faker/default/html.rb +230 -0
- data/lib/faker/default/id_number.rb +175 -27
- data/lib/faker/default/internet.rb +333 -114
- data/lib/faker/default/invoice.rb +4 -17
- data/lib/faker/default/json.rb +4 -21
- data/lib/faker/default/lorem.rb +175 -73
- data/lib/faker/default/lorem_flickr.rb +4 -37
- data/lib/faker/default/markdown.rb +10 -13
- data/lib/faker/default/marketing.rb +1 -1
- data/lib/faker/default/measurement.rb +16 -48
- data/lib/faker/default/name.rb +1 -5
- data/lib/faker/default/nation.rb +0 -3
- data/lib/faker/default/{nhs.rb → national_health_service.rb} +9 -8
- data/lib/faker/default/number.rb +33 -61
- data/lib/faker/default/omniauth.rb +55 -52
- data/lib/faker/default/phone_number.rb +36 -21
- data/lib/faker/default/placeholdit.rb +10 -20
- data/lib/faker/default/relationship.rb +1 -5
- data/lib/faker/default/religion.rb +6 -0
- data/lib/faker/default/science.rb +108 -0
- data/lib/faker/default/source.rb +3 -16
- data/lib/faker/default/south_africa.rb +3 -3
- data/lib/faker/default/string.rb +1 -7
- data/lib/faker/default/stripe.rb +4 -20
- data/lib/faker/default/tea.rb +41 -0
- data/lib/faker/{music/show.rb → default/theater.rb} +11 -8
- data/lib/faker/default/time.rb +4 -34
- data/lib/faker/default/twitter.rb +7 -23
- data/lib/faker/default/types.rb +12 -34
- data/lib/faker/default/vehicle.rb +44 -54
- data/lib/faker/default/vulnerability_identifier.rb +23 -0
- data/lib/faker/default/world_cup.rb +2 -11
- data/lib/faker/games/clash_of_clans.rb +1 -1
- data/lib/faker/games/dnd.rb +49 -7
- data/lib/faker/games/dota.rb +14 -5
- data/lib/faker/games/final_fantasy_xiv.rb +73 -0
- data/lib/faker/games/minecraft.rb +1 -1
- data/lib/faker/games/myst.rb +1 -1
- data/lib/faker/games/tarkov.rb +205 -0
- data/lib/faker/games/touhou.rb +75 -0
- data/lib/faker/games/witcher.rb +39 -0
- data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
- data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +51 -0
- data/lib/faker/japanese_media/kamen_rider.rb +102 -0
- data/lib/faker/japanese_media/one_piece.rb +1 -1
- data/lib/faker/locations/australia.rb +52 -0
- data/lib/faker/movies/avatar.rb +49 -0
- data/lib/faker/movies/hackers.rb +48 -0
- data/lib/faker/movies/star_wars.rb +73 -5
- data/lib/faker/movies/{room.rb → the_room.rb} +4 -4
- data/lib/faker/movies/tron.rb +161 -0
- data/lib/faker/music/hiphop.rb +3 -3
- data/lib/faker/music/music.rb +12 -0
- data/lib/faker/music/rock_band.rb +12 -0
- data/lib/faker/music/smashing_pumpkins.rb +64 -0
- data/lib/faker/quotes/quote.rb +13 -0
- data/lib/faker/quotes/rajnikanth.rb +1 -0
- data/lib/faker/quotes/shakespeare.rb +34 -0
- data/lib/faker/religion/bible.rb +50 -0
- data/lib/faker/sports/chess.rb +90 -0
- data/lib/faker/sports/mountaineering.rb +22 -0
- data/lib/faker/sports/sport.rb +116 -0
- data/lib/faker/travel/airport.rb +43 -0
- data/lib/faker/travel/train_station.rb +54 -0
- data/lib/faker/tv_shows/archer.rb +51 -0
- data/lib/faker/tv_shows/big_bang_theory.rb +1 -1
- data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
- data/lib/faker/tv_shows/michael_scott.rb +0 -3
- data/lib/faker/tv_shows/south_park.rb +15 -0
- data/lib/faker/tv_shows/spongebob.rb +50 -0
- data/lib/faker/tv_shows/suits.rb +1 -1
- data/lib/faker/tv_shows/supernatural.rb +48 -0
- data/lib/faker/tv_shows/the_office.rb +37 -0
- data/lib/faker/version.rb +2 -2
- data/lib/faker.rb +26 -67
- data/lib/helpers/base58.rb +1 -1
- data/lib/helpers/deprecator.rb +53 -0
- data/lib/helpers/positional_generator.rb +480 -0
- data/lib/helpers/unique_generator.rb +13 -14
- data/lib/locales/README.md +18 -2
- data/lib/locales/ar.yml +6 -1
- data/lib/locales/bg.yml +1 -2
- data/lib/locales/da-DK.yml +529 -35
- data/lib/locales/de-AT.yml +3487 -27
- data/lib/locales/de-CH.yml +4328 -12
- data/lib/locales/de.yml +7185 -99
- data/lib/locales/ee.yml +0 -1
- data/lib/locales/en/address.yml +1826 -562
- data/lib/locales/en/airport.yml +381 -0
- data/lib/locales/en/animal.yml +1 -1
- data/lib/locales/en/archer.yml +75 -0
- data/lib/locales/en/australia.yml +108 -0
- data/lib/locales/en/avatar.yml +31 -0
- data/lib/locales/en/bank.yml +1 -1
- data/lib/locales/en/bible.yml +90 -0
- data/lib/locales/en/bird.yml +1281 -0
- data/lib/locales/en/book.yml +487 -3
- data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
- data/lib/locales/en/cat.yml +1 -1
- data/lib/locales/en/chess.yml +103 -0
- data/lib/locales/en/coffee.yml +1 -1
- data/lib/locales/en/commerce.yml +17 -0
- data/lib/locales/en/community.yml +17 -17
- data/lib/locales/en/company.yml +1 -0
- data/lib/locales/en/computer.yml +23 -4
- data/lib/locales/en/cowboy_bebop.yml +163 -0
- data/lib/locales/en/device.yml +112 -4
- data/lib/locales/en/dnd.yml +186 -1
- data/lib/locales/en/dog.yml +262 -7
- data/lib/locales/en/dota.yml +173 -0
- data/lib/locales/en/dune.yml +266 -397
- data/lib/locales/en/educator.yml +6 -0
- data/lib/locales/en/emotion.yml +480 -0
- data/lib/locales/en/file.yml +9 -1
- data/lib/locales/en/final_fantasy_xiv.yml +754 -0
- data/lib/locales/en/finance.yml +27 -4
- data/lib/locales/en/food.yml +1067 -10
- data/lib/locales/en/football.yml +3 -3
- data/lib/locales/en/fullmetal_alchemist_brotherhood.yml +78 -0
- data/lib/locales/en/game.yml +11 -0
- data/lib/locales/en/hackers.yml +53 -0
- data/lib/locales/en/harry_potter.yml +1 -1
- data/lib/locales/en/heroes.yml +2 -2
- data/lib/locales/en/hobby.yml +171 -0
- data/lib/locales/en/horse.yml +2 -2
- data/lib/locales/en/id_number.yml +1 -1
- data/lib/locales/en/internet.yml +136 -3
- data/lib/locales/en/kamen_rider.yml +452 -0
- data/lib/locales/en/kpop.yml +7 -7
- data/lib/locales/en/lebowski.yml +1 -1
- data/lib/locales/en/lovecraft.yml +76 -6
- data/lib/locales/en/minecraft.yml +4 -4
- data/lib/locales/en/mitch_hedberg.yml +46 -0
- data/lib/locales/en/mountain.yml +14 -1
- data/lib/locales/en/mountaineering.yml +14 -0
- data/lib/locales/en/movie.yml +2 -1
- data/lib/locales/en/music.yml +152 -142
- data/lib/locales/en/naruto.yml +2 -3
- data/lib/locales/en/one_piece.yml +1 -1
- data/lib/locales/en/opera.yml +2 -2
- data/lib/locales/en/overwatch.yml +5 -7
- data/lib/locales/en/phone_number.yml +78 -3
- data/lib/locales/en/rock_band.yml +1 -0
- data/lib/locales/en/science.yml +481 -3
- data/lib/locales/en/shakespeare.yml +21 -24
- data/lib/locales/en/smashing_pumpkins.yml +382 -0
- data/lib/locales/en/source.yml +5 -0
- data/lib/locales/en/south_park.yml +360 -2
- data/lib/locales/en/space.yml +1 -1
- data/lib/locales/en/spongebob.yml +489 -0
- data/lib/locales/en/sport.yml +130 -0
- data/lib/locales/en/star_wars.yml +1 -1
- data/lib/locales/en/stranger_thing.yml +1 -1
- data/lib/locales/en/super_smash_bros.yml +7 -2
- data/lib/locales/en/supernatural.yml +141 -0
- data/lib/locales/en/tarkov.yml +593 -0
- data/lib/locales/en/tea.yml +172 -0
- data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
- data/lib/locales/en/the_office.yml +86 -0
- data/lib/locales/en/{room.yml → the_room.yml} +1 -1
- data/lib/locales/en/{show.yml → theater.yml} +1 -1
- data/lib/locales/en/touhou.yml +839 -0
- data/lib/locales/en/train_station.yml +280 -0
- data/lib/locales/en/tron.yml +227 -0
- data/lib/locales/en/vehicle.yml +2809 -75
- data/lib/locales/en/witcher.yml +37 -0
- data/lib/locales/en-AU.yml +718 -47
- data/lib/locales/en-CA.yml +373 -18
- data/lib/locales/en-GB.yml +116 -8
- data/lib/locales/en-IND.yml +1259 -17
- data/lib/locales/en-KE.yml +212 -0
- data/lib/locales/en-MS.yml +364 -17
- data/lib/locales/en-NEP.yml +212 -38
- data/lib/locales/en-NG.yml +1 -0
- data/lib/locales/en-NZ.yml +1153 -123
- data/lib/locales/en-PAK.yml +369 -10
- data/lib/locales/en-SG.yml +581 -16
- data/lib/locales/en-UG.yml +1 -0
- data/lib/locales/en-US.yml +6914 -74
- data/lib/locales/en-ZA.yml +1 -1
- data/lib/locales/en-au-ocker.yml +266 -22
- data/lib/locales/es-AR.yml +4570 -0
- data/lib/locales/es-MX.yml +1 -2
- data/lib/locales/es.yml +2 -3
- data/lib/locales/fi-FI.yml +3 -1
- data/lib/locales/fr/address.yml +20 -0
- data/lib/locales/fr/adjective.yml +266 -0
- data/lib/locales/fr/ancient.yml +141 -0
- data/lib/locales/fr/animal.yml +5 -0
- data/lib/locales/fr/appliance.yml +4 -0
- data/lib/locales/fr/book.yml +7 -0
- data/lib/locales/fr/color.yml +4 -0
- data/lib/locales/fr/company.yml +17 -0
- data/lib/locales/fr/compass.yml +23 -0
- data/lib/locales/fr/demographic.yml +4 -0
- data/lib/locales/fr/gender.yml +6 -0
- data/lib/locales/fr/internet.yml +4 -0
- data/lib/locales/fr/lorem.yml +5 -0
- data/lib/locales/fr/measurement.yml +7 -0
- data/lib/locales/fr/name.yml +22 -0
- data/lib/locales/fr/phone_number.yml +7 -0
- data/lib/locales/fr/pokemon.yml +7 -0
- data/lib/locales/fr-CA.yml +2733 -44
- data/lib/locales/fr-CH.yml +1 -2
- data/lib/locales/fr.yml +2 -118
- data/lib/locales/hy.yml +3624 -119
- data/lib/locales/id.yml +839 -12
- data/lib/locales/it.yml +1304 -32
- data/lib/locales/ja/README.md +13 -0
- data/lib/locales/ja/address.yml +120539 -0
- data/lib/locales/ja/adjective.yml +148 -0
- data/lib/locales/ja/ancient.yml +4 -0
- data/lib/locales/ja/animal.yml +5 -0
- data/lib/locales/ja/bank.yml +4 -0
- data/lib/locales/ja/book.yml +7 -0
- data/lib/locales/ja/cat.yml +5 -0
- data/lib/locales/ja/coffee.yml +4 -0
- data/lib/locales/ja/color.yml +4 -0
- data/lib/locales/ja/commerce.yml +11 -0
- data/lib/locales/ja/company.yml +8 -0
- data/lib/locales/ja/dog.yml +6 -0
- data/lib/locales/ja/emotion.yml +51 -0
- data/lib/locales/ja/food.yml +4 -0
- data/lib/locales/ja/football.yml +115 -0
- data/lib/locales/ja/gender.yml +4 -0
- data/lib/locales/ja/lorem.yml +9 -0
- data/lib/locales/ja/name.yml +13 -0
- data/lib/locales/ja/naruto.yml +230 -0
- data/lib/locales/ja/overwatch.yml +5 -0
- data/lib/locales/ja/phone_number.yml +7 -0
- data/lib/locales/ja/pokemon.yml +7 -0
- data/lib/locales/ja/relationship.yml +10 -0
- data/lib/locales/ja/restaurant.yml +11 -0
- data/lib/locales/ja/space.yml +5 -0
- data/lib/locales/ja/sport.yml +130 -0
- data/lib/locales/ja/studio_ghibli.yml +112 -0
- data/lib/locales/ja/subscription.yml +8 -0
- data/lib/locales/ja/super_mario.yml +9 -0
- data/lib/locales/ja/super_smash_bros.yml +8 -0
- data/lib/locales/ja/touhou.yml +466 -0
- data/lib/locales/ja/university.yml +9 -0
- data/lib/locales/ja/zelda.yml +5 -0
- data/lib/locales/ko.yml +1361 -20
- data/lib/locales/lt.yml +315 -0
- data/lib/locales/lv.yml +1 -2
- data/lib/locales/mi-NZ.yml +283 -0
- data/lib/locales/nb-NO.yml +518 -29
- data/lib/locales/nl.yml +1 -1
- data/lib/locales/pl.yml +1 -2
- data/lib/locales/pt-BR.yml +8157 -660
- data/lib/locales/pt.yml +844 -45
- data/lib/locales/ru.yml +1355 -32
- data/lib/locales/sk.yml +4410 -43
- data/lib/locales/sv.yml +100 -0
- data/lib/locales/th.yml +76 -76
- data/lib/locales/tr.yml +1 -2
- data/lib/locales/uk.yml +1808 -44
- data/lib/locales/vi.yml +1 -0
- data/lib/locales/zh-CN/bank.yml +17 -0
- data/lib/locales/zh-CN.yml +1 -0
- data/lib/locales/zh-TW.yml +1 -0
- metadata +134 -133
- data/History.md +0 -176
- data/lib/faker/default/fillmurray.rb +0 -45
- data/lib/faker/default/lorem_pixel.rb +0 -69
- data/lib/locales/ja.yml +0 -105
- /data/lib/faker/default/{faker_adjective.rb → adjective.rb} +0 -0
|
@@ -29,11 +29,7 @@ module Faker
|
|
|
29
29
|
# #=> "Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fht...
|
|
30
30
|
#
|
|
31
31
|
# @faker.version 1.9.3
|
|
32
|
-
def fhtagn(
|
|
33
|
-
warn_for_deprecated_arguments do |keywords|
|
|
34
|
-
keywords << :number if legacy_number != NOT_GIVEN
|
|
35
|
-
end
|
|
36
|
-
|
|
32
|
+
def fhtagn(number: 1)
|
|
37
33
|
Array.new(number) { fetch('lovecraft.fhtagn') }.join('. ')
|
|
38
34
|
end
|
|
39
35
|
|
|
@@ -86,12 +82,7 @@ module Faker
|
|
|
86
82
|
# #=> "Effulgence unmentionable gambrel."
|
|
87
83
|
#
|
|
88
84
|
# @faker.version 1.9.3
|
|
89
|
-
def sentence(
|
|
90
|
-
warn_for_deprecated_arguments do |keywords|
|
|
91
|
-
keywords << :word_count if legacy_word_count != NOT_GIVEN
|
|
92
|
-
keywords << :random_words_to_add if legacy_random_words_to_add != NOT_GIVEN
|
|
93
|
-
end
|
|
94
|
-
|
|
85
|
+
def sentence(word_count: 4, random_words_to_add: 6, open_compounds_allowed: true)
|
|
95
86
|
"#{words(number: word_count + rand(random_words_to_add.to_i).to_i, spaces_allowed: open_compounds_allowed).join(' ').capitalize}."
|
|
96
87
|
end
|
|
97
88
|
|
|
@@ -138,19 +129,13 @@ module Faker
|
|
|
138
129
|
# # ]
|
|
139
130
|
#
|
|
140
131
|
# @faker.version 1.9.3
|
|
141
|
-
def words(
|
|
142
|
-
warn_for_deprecated_arguments do |keywords|
|
|
143
|
-
keywords << :number if legacy_number != NOT_GIVEN
|
|
144
|
-
keywords << :spaces_allowed if legacy_spaces_allowed != NOT_GIVEN
|
|
145
|
-
end
|
|
146
|
-
|
|
132
|
+
def words(number: 3, spaces_allowed: false)
|
|
147
133
|
resolved_num = resolve(number)
|
|
148
134
|
word_list = translate('faker.lovecraft.words')
|
|
149
135
|
word_list *= ((resolved_num / word_list.length) + 1)
|
|
136
|
+
words = sample(word_list, resolved_num)
|
|
137
|
+
return words if spaces_allowed
|
|
150
138
|
|
|
151
|
-
return shuffle(word_list)[0, resolved_num] if spaces_allowed
|
|
152
|
-
|
|
153
|
-
words = shuffle(word_list)[0, resolved_num]
|
|
154
139
|
words.each_with_index { |w, i| words[i] = word if w =~ /\s/ }
|
|
155
140
|
end
|
|
156
141
|
|
|
@@ -176,11 +161,7 @@ module Faker
|
|
|
176
161
|
# # ]
|
|
177
162
|
#
|
|
178
163
|
# @faker.version 1.9.3
|
|
179
|
-
def sentences(
|
|
180
|
-
warn_for_deprecated_arguments do |keywords|
|
|
181
|
-
keywords << :number if legacy_number != NOT_GIVEN
|
|
182
|
-
end
|
|
183
|
-
|
|
164
|
+
def sentences(number: 3)
|
|
184
165
|
[].tap do |sentences|
|
|
185
166
|
1.upto(resolve(number)) do
|
|
186
167
|
sentences << sentence(word_count: 3)
|
|
@@ -207,12 +188,7 @@ module Faker
|
|
|
207
188
|
# #=> "Stench cyclopean fainted antiquarian nameless. Antiquarian ululate tenebrous non-euclidean effulgence."
|
|
208
189
|
#
|
|
209
190
|
# @faker.version 1.9.3
|
|
210
|
-
def paragraph(
|
|
211
|
-
warn_for_deprecated_arguments do |keywords|
|
|
212
|
-
keywords << :sentence_count if legacy_sentence_count != NOT_GIVEN
|
|
213
|
-
keywords << :random_sentences_to_add if legacy_random_sentences_to_add != NOT_GIVEN
|
|
214
|
-
end
|
|
215
|
-
|
|
191
|
+
def paragraph(sentence_count: 3, random_sentences_to_add: 3)
|
|
216
192
|
sentences(number: resolve(sentence_count) + rand(random_sentences_to_add.to_i).to_i).join(' ')
|
|
217
193
|
end
|
|
218
194
|
|
|
@@ -238,11 +214,7 @@ module Faker
|
|
|
238
214
|
# # ]
|
|
239
215
|
#
|
|
240
216
|
# @faker.version 1.9.3
|
|
241
|
-
def paragraphs(
|
|
242
|
-
warn_for_deprecated_arguments do |keywords|
|
|
243
|
-
keywords << :number if legacy_number != NOT_GIVEN
|
|
244
|
-
end
|
|
245
|
-
|
|
217
|
+
def paragraphs(number: 3)
|
|
246
218
|
[].tap do |paragraphs|
|
|
247
219
|
1.upto(resolve(number)) do
|
|
248
220
|
paragraphs << paragraph(sentence_count: 3)
|
|
@@ -263,11 +235,7 @@ module Faker
|
|
|
263
235
|
# #=> "Effulgence madness noisome. Fungus stygian mortal madness amorphous dank. Decadent noisome hideous effulgence. Tentacles charne."
|
|
264
236
|
#
|
|
265
237
|
# @faker.version 1.9.3
|
|
266
|
-
def paragraph_by_chars(
|
|
267
|
-
warn_for_deprecated_arguments do |keywords|
|
|
268
|
-
keywords << :characters if legacy_characters != NOT_GIVEN
|
|
269
|
-
end
|
|
270
|
-
|
|
238
|
+
def paragraph_by_chars(characters: 256)
|
|
271
239
|
paragraph = paragraph(sentence_count: 3)
|
|
272
240
|
|
|
273
241
|
paragraph += " #{paragraph(sentence_count: 3)}" while paragraph.length < characters
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Faker
|
|
4
|
+
class Books
|
|
5
|
+
class TheKingkillerChronicle < Base
|
|
6
|
+
class << self
|
|
7
|
+
##
|
|
8
|
+
# Produces the name of a The Kingkiller Chronicle book.
|
|
9
|
+
#
|
|
10
|
+
# @return [String]
|
|
11
|
+
#
|
|
12
|
+
# @example
|
|
13
|
+
# Faker::Books::TheKingkillerChronicle.book #=> "The Name of the Wind"
|
|
14
|
+
#
|
|
15
|
+
# @faker.version next
|
|
16
|
+
def book
|
|
17
|
+
fetch('books.the_kingkiller_chronicle.books')
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
##
|
|
21
|
+
# Produces the name of a The Kingkiller Chronicle character.
|
|
22
|
+
#
|
|
23
|
+
# @return [String]
|
|
24
|
+
#
|
|
25
|
+
# @example
|
|
26
|
+
# Faker::Books::TheKingkillerChronicle.character #=> "Kvothe"
|
|
27
|
+
#
|
|
28
|
+
# @faker.version next
|
|
29
|
+
def character
|
|
30
|
+
fetch('books.the_kingkiller_chronicle.characters')
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
##
|
|
34
|
+
# Produces the name of a The Kingkiller Chronicle creature.
|
|
35
|
+
#
|
|
36
|
+
# @return [String]
|
|
37
|
+
#
|
|
38
|
+
# @example
|
|
39
|
+
# Faker::Books::TheKingkillerChronicle.creature #=> "Scrael"
|
|
40
|
+
#
|
|
41
|
+
# @faker.version next
|
|
42
|
+
def creature
|
|
43
|
+
fetch('books.the_kingkiller_chronicle.creatures')
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
##
|
|
47
|
+
# Produces the name of a The Kingkiller Chronicle location.
|
|
48
|
+
#
|
|
49
|
+
# @return [String]
|
|
50
|
+
#
|
|
51
|
+
# @example
|
|
52
|
+
# Faker::Books::TheKingkillerChronicle.location #=> "Tarbean"
|
|
53
|
+
#
|
|
54
|
+
# @faker.version next
|
|
55
|
+
def location
|
|
56
|
+
fetch('books.the_kingkiller_chronicle.locations')
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Faker
|
|
4
|
+
class Creature
|
|
5
|
+
class Bird < Base
|
|
6
|
+
flexible :bird
|
|
7
|
+
|
|
8
|
+
class << self
|
|
9
|
+
##
|
|
10
|
+
# Produces a random common family name of a bird.
|
|
11
|
+
#
|
|
12
|
+
# @return [String]
|
|
13
|
+
#
|
|
14
|
+
# @example
|
|
15
|
+
# Faker::Creature::Bird.common_family_name #=> "Owls"
|
|
16
|
+
#
|
|
17
|
+
# @faker.version next
|
|
18
|
+
def common_family_name
|
|
19
|
+
fetch('creature.bird.common_family_name')
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
##
|
|
23
|
+
# Produces a random common taxonomic order from the class Aves
|
|
24
|
+
#
|
|
25
|
+
# @return [String]
|
|
26
|
+
#
|
|
27
|
+
# @example
|
|
28
|
+
# Faker::Creature::Bird.order #=> "Passeriformes"
|
|
29
|
+
#
|
|
30
|
+
# @faker.version next
|
|
31
|
+
def order
|
|
32
|
+
orders = I18n.translate('faker.creature.bird.order_common_map').keys
|
|
33
|
+
sample(orders).to_s
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
##
|
|
37
|
+
# Produces a random bird anatomy word
|
|
38
|
+
#
|
|
39
|
+
# @return [String]
|
|
40
|
+
#
|
|
41
|
+
# @example
|
|
42
|
+
# Faker::Creature::Bird.anatomy #=> "rump"
|
|
43
|
+
#
|
|
44
|
+
# @faker.version next
|
|
45
|
+
def anatomy
|
|
46
|
+
fetch('creature.bird.anatomy')
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
##
|
|
50
|
+
# Produces a random, past tensed bird anatomy word
|
|
51
|
+
#
|
|
52
|
+
# @return [String]
|
|
53
|
+
#
|
|
54
|
+
# @example
|
|
55
|
+
# Faker::Creature::Bird.anatomy #=> "breasted"
|
|
56
|
+
#
|
|
57
|
+
# @faker.version next
|
|
58
|
+
def anatomy_past_tense
|
|
59
|
+
fetch('creature.bird.anatomy_past_tense')
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
##
|
|
63
|
+
# Produces a random geographical word used in describing birds
|
|
64
|
+
#
|
|
65
|
+
# @return [String]
|
|
66
|
+
#
|
|
67
|
+
# @example
|
|
68
|
+
# Faker::Creature::Bird.geo #=> "Eurasian"
|
|
69
|
+
#
|
|
70
|
+
# @faker.version next
|
|
71
|
+
def geo
|
|
72
|
+
fetch('creature.bird.geo')
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
##
|
|
76
|
+
# Produces a random color word used in describing birds
|
|
77
|
+
#
|
|
78
|
+
# @return [String]
|
|
79
|
+
#
|
|
80
|
+
# @example
|
|
81
|
+
# Faker::Creature::Bird.color #=> "ferruginous"
|
|
82
|
+
#
|
|
83
|
+
# @faker.version next
|
|
84
|
+
def color
|
|
85
|
+
fetch('creature.bird.colors')
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
##
|
|
89
|
+
# Produces a random adjective used to described birds
|
|
90
|
+
#
|
|
91
|
+
# @return [String]
|
|
92
|
+
#
|
|
93
|
+
# @example
|
|
94
|
+
# Faker::Creature::Bird.adjective #=> 'common'
|
|
95
|
+
#
|
|
96
|
+
# @faker.version next
|
|
97
|
+
def adjective
|
|
98
|
+
fetch('creature.bird.adjectives')
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
##
|
|
102
|
+
# Produces a random emotional adjective NOT used to described birds
|
|
103
|
+
# ...but could be
|
|
104
|
+
#
|
|
105
|
+
# @return [String]
|
|
106
|
+
#
|
|
107
|
+
# @example
|
|
108
|
+
# Faker::Creature::Bird.emotional_adjective #=> 'cantankerous'
|
|
109
|
+
#
|
|
110
|
+
# @faker.version next
|
|
111
|
+
def emotional_adjective
|
|
112
|
+
fetch('creature.bird.emotional_adjectives')
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
##
|
|
116
|
+
# Produces a random adjective NOT used to described birds
|
|
117
|
+
# ...but probably shouldn't
|
|
118
|
+
#
|
|
119
|
+
# @return [String]
|
|
120
|
+
#
|
|
121
|
+
# @example
|
|
122
|
+
# Faker::Creature::Bird.silly_adjective #=> 'drunk'
|
|
123
|
+
#
|
|
124
|
+
# @faker.version next
|
|
125
|
+
def silly_adjective
|
|
126
|
+
fetch('creature.bird.silly_adjectives')
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
##
|
|
130
|
+
# Produces a random common name for a bird
|
|
131
|
+
#
|
|
132
|
+
# @param [String | Symbol | nil] tax_order Tax
|
|
133
|
+
# @return [String]
|
|
134
|
+
# @raises TypeError If `tax_order` cannot be converted into a Symbol
|
|
135
|
+
# @raises ArgumentError If `tax_order` is not a valid taxonomic order
|
|
136
|
+
#
|
|
137
|
+
# @example
|
|
138
|
+
# Faker::Creature::Bird.common_name #=> 'wren'
|
|
139
|
+
#
|
|
140
|
+
# @faker.version next
|
|
141
|
+
def common_name(tax_order = nil)
|
|
142
|
+
map = translate('faker.creature.bird.order_common_map')
|
|
143
|
+
if tax_order.nil?
|
|
144
|
+
sample(map.values.flatten).downcase
|
|
145
|
+
else
|
|
146
|
+
raise TypeError, 'tax_order parameter must be symbolizable' \
|
|
147
|
+
unless tax_order.respond_to?(:to_sym)
|
|
148
|
+
raise ArgumentError, "#{tax_order} is not a valid taxonomic order" \
|
|
149
|
+
unless map.keys.include?(tax_order.to_sym)
|
|
150
|
+
|
|
151
|
+
the_order = translate('faker.creature.bird.order_common_map')[tax_order.to_sym]
|
|
152
|
+
sample(the_order).downcase
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
##
|
|
157
|
+
# Produces a random and plausible common name for a bird
|
|
158
|
+
#
|
|
159
|
+
# @return [String]
|
|
160
|
+
#
|
|
161
|
+
# @example
|
|
162
|
+
# Faker::Creature::Bird.plausible_common_name #=> 'Hellinger's Wren'
|
|
163
|
+
#
|
|
164
|
+
# @faker.version next
|
|
165
|
+
def plausible_common_name
|
|
166
|
+
parse('creature.bird.plausible_common_names').capitalize
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
##
|
|
170
|
+
# Produces a random and IMplausible common name for a bird
|
|
171
|
+
#
|
|
172
|
+
# @return [String]
|
|
173
|
+
#
|
|
174
|
+
# @example
|
|
175
|
+
# Faker::Creature::Bird.implausible_common_name #=> 'Hellinger's Cantankerous Chickadee'
|
|
176
|
+
#
|
|
177
|
+
# @faker.version next
|
|
178
|
+
def implausible_common_name
|
|
179
|
+
parse('creature.bird.implausible_common_names').capitalize
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
##
|
|
183
|
+
# Produces a hash entry with a random order and a random common name
|
|
184
|
+
# that is of that order
|
|
185
|
+
#
|
|
186
|
+
# @return [Hash<order,common_name>]
|
|
187
|
+
#
|
|
188
|
+
# @example
|
|
189
|
+
# Faker::Creature::Bird.order_with_common_name #=> {
|
|
190
|
+
# order: ''Accipitriformes',
|
|
191
|
+
# common_name: 'Osprey'
|
|
192
|
+
# }
|
|
193
|
+
#
|
|
194
|
+
# @faker.version next
|
|
195
|
+
def order_with_common_name(tax_order = nil)
|
|
196
|
+
map = I18n.translate('faker.creature.bird.order_common_map')
|
|
197
|
+
o = tax_order.nil? ? order : tax_order
|
|
198
|
+
{ order: o, common_name: sample(map[o.to_sym]) }
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
end
|
|
@@ -18,11 +18,7 @@ module Faker
|
|
|
18
18
|
# #=> "Northfort, California"
|
|
19
19
|
#
|
|
20
20
|
# @faker.version 0.3.0
|
|
21
|
-
def city(
|
|
22
|
-
warn_for_deprecated_arguments do |keywords|
|
|
23
|
-
keywords << :options if legacy_options != NOT_GIVEN
|
|
24
|
-
end
|
|
25
|
-
|
|
21
|
+
def city(options: {})
|
|
26
22
|
parse(options[:with_state] ? 'address.city_with_state' : 'address.city')
|
|
27
23
|
end
|
|
28
24
|
|
|
@@ -49,11 +45,7 @@ module Faker
|
|
|
49
45
|
# Faker::Address.street_address #=> "282 Kevin Brook"
|
|
50
46
|
#
|
|
51
47
|
# @faker.version 0.3.0
|
|
52
|
-
def street_address(
|
|
53
|
-
warn_for_deprecated_arguments do |keywords|
|
|
54
|
-
keywords << :include_secondary if legacy_include_secondary != NOT_GIVEN
|
|
55
|
-
end
|
|
56
|
-
|
|
48
|
+
def street_address(include_secondary: false)
|
|
57
49
|
numerify(parse('address.street_address') + (include_secondary ? " #{secondary_address}" : ''))
|
|
58
50
|
end
|
|
59
51
|
|
|
@@ -121,18 +113,14 @@ module Faker
|
|
|
121
113
|
# Faker::Address.zip_code(state_abbreviation: 'CO') #=> "80011"
|
|
122
114
|
#
|
|
123
115
|
# @faker.version 0.3.0
|
|
124
|
-
def zip_code(
|
|
125
|
-
warn_for_deprecated_arguments do |keywords|
|
|
126
|
-
keywords << :state_abbreviation if legacy_state_abbreviation != NOT_GIVEN
|
|
127
|
-
end
|
|
128
|
-
|
|
116
|
+
def zip_code(state_abbreviation: '')
|
|
129
117
|
if state_abbreviation.empty?
|
|
130
118
|
letterified_string = letterify(fetch('address.postcode'))
|
|
131
119
|
return numerify(letterified_string, leading_zero: true)
|
|
132
120
|
end
|
|
133
121
|
|
|
134
|
-
# provide a zip code that
|
|
135
|
-
#
|
|
122
|
+
# provide a zip code that may be valid for the state provided
|
|
123
|
+
# note: zip code may appear in the correct format for the state provided but may not be an actual state zip.
|
|
136
124
|
bothify(fetch("address.postcode_by_state.#{state_abbreviation}"))
|
|
137
125
|
end
|
|
138
126
|
|
|
@@ -242,11 +230,7 @@ module Faker
|
|
|
242
230
|
# Faker::Address.country_by_code(code: 'NL') #=> "Netherlands"
|
|
243
231
|
#
|
|
244
232
|
# @faker.version 1.9.2
|
|
245
|
-
def country_by_code(
|
|
246
|
-
warn_for_deprecated_arguments do |keywords|
|
|
247
|
-
keywords << :code if legacy_code != NOT_GIVEN
|
|
248
|
-
end
|
|
249
|
-
|
|
233
|
+
def country_by_code(code: 'US')
|
|
250
234
|
fetch("address.country_by_code.#{code}")
|
|
251
235
|
end
|
|
252
236
|
|
|
@@ -260,11 +244,7 @@ module Faker
|
|
|
260
244
|
# Faker::Address.country_name_to_code(name: 'united_states') #=> "US"
|
|
261
245
|
#
|
|
262
246
|
# @faker.version 1.9.2
|
|
263
|
-
def country_name_to_code(
|
|
264
|
-
warn_for_deprecated_arguments do |keywords|
|
|
265
|
-
keywords << :name if legacy_name != NOT_GIVEN
|
|
266
|
-
end
|
|
267
|
-
|
|
247
|
+
def country_name_to_code(name: 'united_states')
|
|
268
248
|
fetch("address.country_by_name.#{name}")
|
|
269
249
|
end
|
|
270
250
|
|
|
@@ -19,10 +19,7 @@ module Faker
|
|
|
19
19
|
# Faker::Alphanumeric.alpha(number: 10) #=> "zlvubkrwga"
|
|
20
20
|
#
|
|
21
21
|
# @faker.version 1.9.2
|
|
22
|
-
def alpha(
|
|
23
|
-
warn_for_deprecated_arguments do |keywords|
|
|
24
|
-
keywords << :number if legacy_number != NOT_GIVEN
|
|
25
|
-
end
|
|
22
|
+
def alpha(number: 32)
|
|
26
23
|
char_count = resolve(number)
|
|
27
24
|
return '' if char_count.to_i < 1
|
|
28
25
|
|
|
@@ -46,10 +43,7 @@ module Faker
|
|
|
46
43
|
# Faker::Alphanumeric.alphanumeric(number: 10, min_alpha: 3, min_numeric: 3) #=> "3yfq2phx8b"
|
|
47
44
|
#
|
|
48
45
|
# @faker.version 2.1.3
|
|
49
|
-
def alphanumeric(
|
|
50
|
-
warn_for_deprecated_arguments do |keywords|
|
|
51
|
-
keywords << :number if legacy_number != NOT_GIVEN
|
|
52
|
-
end
|
|
46
|
+
def alphanumeric(number: 32, min_alpha: 0, min_numeric: 0)
|
|
53
47
|
char_count = resolve(number)
|
|
54
48
|
return '' if char_count.to_i < 1
|
|
55
49
|
raise ArgumentError, 'min_alpha must be greater than or equal to 0' if min_alpha&.negative?
|
data/lib/faker/default/app.rb
CHANGED
|
@@ -42,8 +42,6 @@ module Faker
|
|
|
42
42
|
parse('app.author')
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
# rubocop:disable Metrics/ParameterLists
|
|
46
|
-
|
|
47
45
|
##
|
|
48
46
|
# Produces a String representing a semantic version identifier.
|
|
49
47
|
#
|
|
@@ -62,14 +60,7 @@ module Faker
|
|
|
62
60
|
# Faker::App.semantic_version(patch: 5..6) #=> "7.2.6"
|
|
63
61
|
#
|
|
64
62
|
# @faker.version 1.4.3
|
|
65
|
-
def semantic_version(
|
|
66
|
-
# rubocop:enable Metrics/ParameterLists
|
|
67
|
-
warn_for_deprecated_arguments do |keywords|
|
|
68
|
-
keywords << :major if legacy_major != NOT_GIVEN
|
|
69
|
-
keywords << :minor if legacy_minor != NOT_GIVEN
|
|
70
|
-
keywords << :patch if legacy_patch != NOT_GIVEN
|
|
71
|
-
end
|
|
72
|
-
|
|
63
|
+
def semantic_version(major: 0..9, minor: 0..9, patch: 1..9)
|
|
73
64
|
[major, minor, patch].map { |chunk| sample(Array(chunk)) }.join('.')
|
|
74
65
|
end
|
|
75
66
|
end
|
data/lib/faker/default/avatar.rb
CHANGED
|
@@ -6,8 +6,6 @@ module Faker
|
|
|
6
6
|
# @private
|
|
7
7
|
SUPPORTED_FORMATS = %w[png jpg bmp].freeze
|
|
8
8
|
|
|
9
|
-
# rubocop:disable Metrics/ParameterLists
|
|
10
|
-
|
|
11
9
|
##
|
|
12
10
|
# Produces a URL for an avatar from robohash.org
|
|
13
11
|
#
|
|
@@ -38,16 +36,7 @@ module Faker
|
|
|
38
36
|
# #=> "https://robohash.org/my-own-slug.bmp?size=50x50&set=set1&bgset=bg1"
|
|
39
37
|
#
|
|
40
38
|
# @faker.version 1.4.3
|
|
41
|
-
def image(
|
|
42
|
-
# rubocop:enable Metrics/ParameterLists
|
|
43
|
-
warn_for_deprecated_arguments do |keywords|
|
|
44
|
-
keywords << :slug if legacy_slug != NOT_GIVEN
|
|
45
|
-
keywords << :size if legacy_size != NOT_GIVEN
|
|
46
|
-
keywords << :format if legacy_format != NOT_GIVEN
|
|
47
|
-
keywords << :set if legacy_set != NOT_GIVEN
|
|
48
|
-
keywords << :bgset if legacy_bgset != NOT_GIVEN
|
|
49
|
-
end
|
|
50
|
-
|
|
39
|
+
def image(slug: nil, size: '300x300', format: 'png', set: 'set1', bgset: nil)
|
|
51
40
|
raise ArgumentError, 'Size should be specified in format 300x300' unless size =~ /^[0-9]+x[0-9]+$/
|
|
52
41
|
raise ArgumentError, "Supported formats are #{SUPPORTED_FORMATS.join(', ')}" unless SUPPORTED_FORMATS.include?(format)
|
|
53
42
|
|
data/lib/faker/default/bank.rb
CHANGED
|
@@ -16,14 +16,10 @@ module Faker
|
|
|
16
16
|
# Faker::Bank.account_number(digits: 13) #=> 673858237902
|
|
17
17
|
#
|
|
18
18
|
# @faker.version 1.9.1
|
|
19
|
-
def account_number(
|
|
20
|
-
warn_for_deprecated_arguments do |keywords|
|
|
21
|
-
keywords << :digits if legacy_digits != NOT_GIVEN
|
|
22
|
-
end
|
|
23
|
-
|
|
19
|
+
def account_number(digits: 10)
|
|
24
20
|
output = ''
|
|
25
21
|
|
|
26
|
-
output += rand.to_s[2
|
|
22
|
+
output += rand.to_s[2..] while output.length < digits
|
|
27
23
|
|
|
28
24
|
output[0...digits]
|
|
29
25
|
end
|
|
@@ -31,21 +27,20 @@ module Faker
|
|
|
31
27
|
##
|
|
32
28
|
# Produces a bank iban number.
|
|
33
29
|
#
|
|
34
|
-
# @param country_code [String] Specifies what country prefix is used to generate the iban code.
|
|
30
|
+
# @param country_code [String, nil] Specifies what country prefix is used to generate the iban code. Providing `nil` will use a random country.
|
|
35
31
|
# @return [String]
|
|
36
32
|
#
|
|
37
33
|
# @example
|
|
38
34
|
# Faker::Bank.iban #=> "GB76DZJM33188515981979"
|
|
39
35
|
# Faker::Bank.iban(country_code: "be") #=> "BE6375388567752043"
|
|
36
|
+
# Faker::Bank.iban(country_code: nil) #=> "DE45186738071857270067"
|
|
40
37
|
#
|
|
41
38
|
# @faker.version 1.7.0
|
|
42
|
-
def iban(
|
|
39
|
+
def iban(country_code: 'GB')
|
|
43
40
|
# Each country has its own format for bank accounts
|
|
44
41
|
# Many of them use letters in certain parts of the account
|
|
45
42
|
# Using regex patterns we can create virtually any type of bank account
|
|
46
|
-
|
|
47
|
-
keywords << :country_code if legacy_country_code != NOT_GIVEN
|
|
48
|
-
end
|
|
43
|
+
country_code ||= iban_country_code
|
|
49
44
|
|
|
50
45
|
begin
|
|
51
46
|
pattern = fetch("bank.iban_details.#{country_code.downcase}.bban_pattern")
|
|
@@ -60,6 +55,19 @@ module Faker
|
|
|
60
55
|
country_code.upcase + iban_checksum(country_code, account) + account
|
|
61
56
|
end
|
|
62
57
|
|
|
58
|
+
##
|
|
59
|
+
# Produces the ISO 3166 code of a country that uses the IBAN system.
|
|
60
|
+
#
|
|
61
|
+
# @return [String]
|
|
62
|
+
#
|
|
63
|
+
# @example
|
|
64
|
+
# Faker::Bank.iban_country_code #=> "CH"
|
|
65
|
+
#
|
|
66
|
+
# @faker.version next
|
|
67
|
+
def iban_country_code
|
|
68
|
+
sample(translate('faker.bank.iban_details').keys).to_s.upcase
|
|
69
|
+
end
|
|
70
|
+
|
|
63
71
|
##
|
|
64
72
|
# Produces a bank name.
|
|
65
73
|
#
|
|
@@ -129,7 +137,7 @@ module Faker
|
|
|
129
137
|
private
|
|
130
138
|
|
|
131
139
|
def checksum(num_string)
|
|
132
|
-
num_array = num_string.
|
|
140
|
+
num_array = num_string.chars.map(&:to_i)
|
|
133
141
|
(
|
|
134
142
|
7 * (num_array[0] + num_array[3] + num_array[6]) +
|
|
135
143
|
3 * (num_array[1] + num_array[4] + num_array[7]) +
|
|
@@ -150,15 +158,15 @@ module Faker
|
|
|
150
158
|
end
|
|
151
159
|
|
|
152
160
|
# Calculates the mandatory checksum in 3rd and 4th characters in IBAN format
|
|
153
|
-
# source: https://en.wikipedia.org/wiki/International_Bank_Account_Number#
|
|
161
|
+
# source: https://en.wikipedia.org/wiki/International_Bank_Account_Number#Generating_IBAN_check_digits
|
|
154
162
|
def iban_checksum(country_code, account)
|
|
155
163
|
# Converts letters to numbers according the iban rules, A=10..Z=35
|
|
156
164
|
account_to_number = "#{account}#{country_code}00".upcase.chars.map do |d|
|
|
157
165
|
d =~ /[A-Z]/ ? (d.ord - 55).to_s : d
|
|
158
166
|
end.join.to_i
|
|
159
167
|
|
|
160
|
-
# This is answer to (iban_to_num + checksum) % 97 == 1
|
|
161
|
-
checksum =
|
|
168
|
+
# This is the correct answer to (iban_to_num + checksum) % 97 == 1
|
|
169
|
+
checksum = 98 - (account_to_number % 97)
|
|
162
170
|
|
|
163
171
|
# Use leftpad to make the size always to 2
|
|
164
172
|
checksum.to_s.rjust(2, '0')
|
|
@@ -178,8 +186,8 @@ module Faker
|
|
|
178
186
|
|
|
179
187
|
def compile_fraction(routing_num)
|
|
180
188
|
prefix = (1..50).to_a.map(&:to_s).sample
|
|
181
|
-
numerator = routing_num.
|
|
182
|
-
denominator = routing_num.
|
|
189
|
+
numerator = routing_num.chars[5..8].join.to_i.to_s
|
|
190
|
+
denominator = routing_num.chars[0..4].join.to_i.to_s
|
|
183
191
|
"#{prefix}-#{numerator}/#{denominator}"
|
|
184
192
|
end
|
|
185
193
|
|