faker 1.9.6 → 2.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +386 -6
- data/README.md +12 -5
- data/lib/faker.rb +56 -1
- data/lib/faker/blockchain/aeternity.rb +70 -0
- data/lib/faker/blockchain/bitcoin.rb +26 -0
- data/lib/faker/blockchain/ethereum.rb +10 -0
- data/lib/faker/blockchain/tezos.rb +62 -6
- data/lib/faker/books/book.rb +36 -0
- data/lib/faker/books/culture_series.rb +49 -0
- data/lib/faker/books/dune.rb +66 -5
- data/lib/faker/books/lovecraft.rb +221 -18
- data/lib/faker/creature/animal.rb +10 -1
- data/lib/faker/creature/cat.rb +28 -1
- data/lib/faker/creature/dog.rb +73 -1
- data/lib/faker/creature/horse.rb +19 -1
- data/lib/faker/default/address.rb +25 -5
- data/lib/faker/default/alphanumeric.rb +58 -9
- data/lib/faker/default/app.rb +55 -1
- data/lib/faker/default/appliance.rb +18 -0
- data/lib/faker/default/artist.rb +9 -0
- data/lib/faker/default/avatar.rb +43 -1
- data/lib/faker/default/bank.rb +10 -2
- data/lib/faker/default/boolean.rb +16 -1
- data/lib/faker/default/cannabis.rb +4 -0
- data/lib/faker/default/chile_rut.rb +13 -3
- data/lib/faker/default/chuck_norris.rb +1 -1
- data/lib/faker/default/code.rb +18 -5
- data/lib/faker/default/commerce.rb +18 -4
- data/lib/faker/default/company.rb +11 -3
- data/lib/faker/default/crypto_coin.rb +21 -4
- data/lib/faker/default/date.rb +122 -9
- data/lib/faker/default/demographic.rb +5 -1
- data/lib/faker/default/dessert.rb +27 -0
- data/lib/faker/default/device.rb +56 -2
- data/lib/faker/default/driving_licence.rb +13 -7
- data/lib/faker/default/educator.rb +0 -3
- data/lib/faker/default/electrical_components.rb +27 -0
- data/lib/faker/default/file.rb +20 -3
- data/lib/faker/default/fillmurray.rb +10 -2
- data/lib/faker/default/finance.rb +5 -1
- data/lib/faker/default/gender.rb +18 -0
- data/lib/faker/default/greek_philosophers.rb +18 -0
- data/lib/faker/default/hacker.rb +59 -1
- data/lib/faker/default/hipster.rb +55 -16
- data/lib/faker/default/house.rb +18 -0
- data/lib/faker/default/id_number.rb +85 -11
- data/lib/faker/default/industry_segments.rb +36 -0
- data/lib/faker/default/internet.rb +107 -22
- data/lib/faker/default/invoice.rb +16 -3
- data/lib/faker/default/json.rb +19 -2
- data/lib/faker/default/lorem.rb +91 -20
- data/lib/faker/default/lorem_flickr.rb +38 -5
- data/lib/faker/default/lorem_pixel.rb +10 -1
- data/lib/faker/default/markdown.rb +12 -7
- data/lib/faker/default/marketing.rb +9 -0
- data/lib/faker/default/measurement.rb +40 -8
- data/lib/faker/default/military.rb +45 -0
- data/lib/faker/default/name.rb +6 -4
- data/lib/faker/default/nation.rb +48 -5
- data/lib/faker/default/nato_phonetic_alphabet.rb +9 -0
- data/lib/faker/default/nhs.rb +11 -7
- data/lib/faker/default/number.rb +202 -30
- data/lib/faker/default/omniauth.rb +98 -15
- data/lib/faker/default/phone_number.rb +5 -1
- data/lib/faker/default/placeholdit.rb +11 -1
- data/lib/faker/default/programming_language.rb +18 -0
- data/lib/faker/default/relationship.rb +5 -1
- data/lib/faker/default/restaurant.rb +54 -2
- data/lib/faker/default/science.rb +27 -0
- data/lib/faker/default/source.rb +59 -3
- data/lib/faker/default/south_africa.rb +1 -1
- data/lib/faker/default/space.rb +2 -2
- data/lib/faker/default/string.rb +5 -1
- data/lib/faker/default/stripe.rb +20 -4
- data/lib/faker/default/subscription.rb +45 -0
- data/lib/faker/default/superhero.rb +45 -0
- data/lib/faker/default/time.rb +133 -8
- data/lib/faker/default/twitter.rb +62 -48
- data/lib/faker/default/types.rb +29 -7
- data/lib/faker/default/vehicle.rb +19 -6
- data/lib/faker/default/world_cup.rb +61 -2
- data/lib/faker/games/dota.rb +53 -2
- data/lib/faker/games/elder_scrolls.rb +73 -1
- data/lib/faker/games/fallout.rb +38 -1
- data/lib/faker/games/game.rb +27 -0
- data/lib/faker/games/half_life.rb +28 -1
- data/lib/faker/games/heroes.rb +28 -1
- data/lib/faker/games/heroes_of_the_storm.rb +37 -1
- data/lib/faker/games/league_of_legends.rb +55 -1
- data/lib/faker/games/myst.rb +46 -1
- data/lib/faker/games/overwatch.rb +28 -1
- data/lib/faker/games/pokemon.rb +28 -1
- data/lib/faker/games/sonic_the_hedgehog.rb +28 -1
- data/lib/faker/games/super_smash_bros.rb +19 -1
- data/lib/faker/games/witcher.rb +55 -1
- data/lib/faker/games/world_of_warcraft.rb +19 -1
- data/lib/faker/games/zelda.rb +38 -2
- data/lib/faker/japanese_media/dragon_ball.rb +10 -1
- data/lib/faker/japanese_media/one_piece.rb +55 -1
- data/lib/faker/japanese_media/sword_art_online.rb +37 -1
- data/lib/faker/movies/back_to_the_future.rb +29 -1
- data/lib/faker/movies/ghostbusters.rb +29 -1
- data/lib/faker/movies/harry_potter.rb +55 -1
- data/lib/faker/movies/hitchhikers_guide_to_the_galaxy.rb +70 -1
- data/lib/faker/movies/hobbit.rb +38 -1
- data/lib/faker/movies/lebowski.rb +28 -1
- data/lib/faker/movies/lord_of_the_rings.rb +29 -1
- data/lib/faker/movies/movie.rb +9 -0
- data/lib/faker/movies/princess_bride.rb +20 -1
- data/lib/faker/movies/star_wars.rb +101 -5
- data/lib/faker/movies/v_for_vendetta.rb +30 -1
- data/lib/faker/music/grateful_dead.rb +18 -0
- data/lib/faker/music/phish.rb +9 -0
- data/lib/faker/music/rock_band.rb +9 -0
- data/lib/faker/music/umphreys_mcgee.rb +9 -0
- data/lib/faker/sports/basketball.rb +36 -0
- data/lib/faker/sports/football.rb +45 -0
- data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +10 -1
- data/lib/faker/tv_shows/bojack_horseman.rb +29 -1
- data/lib/faker/tv_shows/breaking_bad.rb +19 -1
- data/lib/faker/tv_shows/buffy.rb +46 -1
- data/lib/faker/tv_shows/community.rb +20 -1
- data/lib/faker/tv_shows/dr_who.rb +79 -3
- data/lib/faker/tv_shows/dumb_and_dumber.rb +29 -1
- data/lib/faker/tv_shows/family_guy.rb +29 -1
- data/lib/faker/tv_shows/friends.rb +28 -1
- data/lib/faker/tv_shows/game_of_thrones.rb +47 -1
- data/lib/faker/tv_shows/hey_arnold.rb +28 -1
- data/lib/faker/tv_shows/how_i_met_your_mother.rb +38 -1
- data/lib/faker/tv_shows/michael_scott.rb +14 -1
- data/lib/faker/tv_shows/new_girl.rb +20 -1
- data/lib/faker/tv_shows/parks_and_rec.rb +19 -1
- data/lib/faker/tv_shows/rick_and_morty.rb +29 -1
- data/lib/faker/tv_shows/ru_paul.rb +19 -1
- data/lib/faker/tv_shows/seinfeld.rb +29 -1
- data/lib/faker/tv_shows/silicon_valley.rb +76 -1
- data/lib/faker/tv_shows/simpsons.rb +29 -1
- data/lib/faker/tv_shows/south_park.rb +20 -1
- data/lib/faker/tv_shows/star_trek.rb +37 -1
- data/lib/faker/tv_shows/stargate.rb +29 -1
- data/lib/faker/tv_shows/stranger_things.rb +20 -1
- data/lib/faker/tv_shows/the_expanse.rb +37 -1
- data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +29 -1
- data/lib/faker/tv_shows/the_it_crowd.rb +38 -1
- data/lib/faker/tv_shows/the_thick_of_it.rb +29 -1
- data/lib/faker/tv_shows/twin_peaks.rb +29 -1
- data/lib/faker/tv_shows/venture_bros.rb +39 -1
- data/lib/faker/version.rb +1 -1
- data/lib/locales/en-CA.yml +2 -1
- data/lib/locales/en-IND.yml +1 -1
- data/lib/locales/en-TH.yml +360 -0
- data/lib/locales/en.yml +4 -1
- data/lib/locales/en/address.yml +1 -4
- data/lib/locales/en/animal.yml +2 -2
- data/lib/locales/en/cannabis.yml +1 -0
- data/lib/locales/en/color.yml +1 -1
- data/lib/locales/en/dr_who.yml +1 -1
- data/lib/locales/en/science.yml +1 -1
- data/lib/locales/en/space.yml +1 -1
- data/lib/locales/en/super_smash_bros.yml +5 -0
- data/lib/locales/fr-CA.yml +1 -1
- data/lib/locales/ja.yml +12 -9
- data/lib/locales/th.yml +380 -0
- data/lib/locales/vi.yml +1 -1
- metadata +44 -27
- data/lib/faker/default/creature.rb +0 -6
- data/lib/faker/default/games.rb +0 -6
- data/lib/faker/default/japanese_media.rb +0 -6
- data/lib/faker/default/movies.rb +0 -6
- data/lib/faker/default/tv_shows.rb +0 -6
- data/lib/faker/deprecate/unreleased/football.rb +0 -35
- data/lib/faker/deprecate/unreleased/movies/grateful_dead.rb +0 -22
data/lib/faker.rb
CHANGED
@@ -40,9 +40,12 @@ module Faker
|
|
40
40
|
class Base
|
41
41
|
Numbers = Array(0..9)
|
42
42
|
ULetters = Array('A'..'Z')
|
43
|
-
|
43
|
+
LLetters = Array('a'..'z')
|
44
|
+
Letters = ULetters + LLetters
|
44
45
|
|
45
46
|
class << self
|
47
|
+
NOT_GIVEN = Object.new
|
48
|
+
|
46
49
|
## by default numerify results do not start with a zero
|
47
50
|
def numerify(number_string, leading_zero: false)
|
48
51
|
return number_string.gsub(/#/) { rand(10).to_s } if leading_zero
|
@@ -245,6 +248,58 @@ module Faker
|
|
245
248
|
ensure
|
246
249
|
I18n.enforce_available_locales = old_enforce_available_locales
|
247
250
|
end
|
251
|
+
|
252
|
+
private
|
253
|
+
|
254
|
+
def warn_for_deprecated_arguments
|
255
|
+
keywords = []
|
256
|
+
yield(keywords)
|
257
|
+
|
258
|
+
return if keywords.empty?
|
259
|
+
|
260
|
+
method_name = caller.first.match(/`(?<method_name>.*)'/)[:method_name]
|
261
|
+
|
262
|
+
keywords.each.with_index(1) do |keyword, index|
|
263
|
+
i = case index
|
264
|
+
when 1 then '1st'
|
265
|
+
when 2 then '2nd'
|
266
|
+
when 3 then '3rd'
|
267
|
+
else "#{index}th"
|
268
|
+
end
|
269
|
+
|
270
|
+
warn_with_uplevel(<<~MSG, uplevel: 5)
|
271
|
+
Passing `#{keyword}` with the #{i} argument of `#{method_name}` is deprecated. Use keyword argument like `#{method_name}(#{keyword}: ...)` instead.
|
272
|
+
MSG
|
273
|
+
end
|
274
|
+
|
275
|
+
warn(<<~MSG)
|
276
|
+
|
277
|
+
To automatically update from positional arguments to keyword arguments,
|
278
|
+
install rubocop-faker and run:
|
279
|
+
|
280
|
+
rubocop \\
|
281
|
+
--require rubocop-faker \\
|
282
|
+
--only Faker/DeprecatedArguments \\
|
283
|
+
--auto-correct
|
284
|
+
|
285
|
+
MSG
|
286
|
+
end
|
287
|
+
|
288
|
+
# Workaround for emulating `warn '...', uplevel: 1` in Ruby 2.4 or lower.
|
289
|
+
def warn_with_uplevel(message, uplevel: 1)
|
290
|
+
at = parse_caller(caller[uplevel]).join(':')
|
291
|
+
warn "#{at}: #{message}"
|
292
|
+
end
|
293
|
+
|
294
|
+
def parse_caller(at)
|
295
|
+
# rubocop:disable Style/GuardClause
|
296
|
+
if /^(.+?):(\d+)(?::in `.*')?/ =~ at
|
297
|
+
file = Regexp.last_match(1)
|
298
|
+
line = Regexp.last_match(2).to_i
|
299
|
+
[file, line]
|
300
|
+
end
|
301
|
+
# rubocop:enable Style/GuardClause
|
302
|
+
end
|
248
303
|
end
|
249
304
|
end
|
250
305
|
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Faker
|
4
|
+
class Blockchain
|
5
|
+
class Aeternity < Base
|
6
|
+
class << self
|
7
|
+
##
|
8
|
+
# Produces a random Aeternity wallet address
|
9
|
+
#
|
10
|
+
# @return [String]
|
11
|
+
#
|
12
|
+
# @example
|
13
|
+
# Faker::Blockchain::Aeternity.address
|
14
|
+
# #=> "ak_zvU8YQLagjcfng7Tg8yCdiZ1rpiWNp1PBn3vtUs44utSvbJVR"
|
15
|
+
#
|
16
|
+
def address
|
17
|
+
'ak_' + rand_strings
|
18
|
+
end
|
19
|
+
|
20
|
+
##
|
21
|
+
# Produces a random Aeternity transaction
|
22
|
+
#
|
23
|
+
# @return [String]
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
# Faker::Blockchain::Aeternity.transaction
|
27
|
+
# #=> "th_147nDP22h3pHrLt2qykTH4txUwQh1ccaXp"
|
28
|
+
#
|
29
|
+
def transaction
|
30
|
+
'th_' + rand_strings(51)
|
31
|
+
end
|
32
|
+
|
33
|
+
##
|
34
|
+
# Produces a random Aeternity contract
|
35
|
+
#
|
36
|
+
# @return [String]
|
37
|
+
#
|
38
|
+
# @example
|
39
|
+
# Faker::Blockchain::Aeternity.contract
|
40
|
+
# #=> "ct_Hk2JsNeWGEYQEHHQCfcBeGrwbhtYSwFTPdDhW2SvjFYVojyhW"
|
41
|
+
#
|
42
|
+
def contract
|
43
|
+
'ct_' + rand_strings
|
44
|
+
end
|
45
|
+
|
46
|
+
##
|
47
|
+
# Produces a random Aeternity oracle
|
48
|
+
#
|
49
|
+
# @return [String]
|
50
|
+
#
|
51
|
+
# @example
|
52
|
+
# Faker::Blockchain::Aeternity.oracle
|
53
|
+
# #=> "ok_28QDg7fkF5qiKueSdUvUBtCYPJdmMEoS73CztzXCRAwMGKHKZh"
|
54
|
+
#
|
55
|
+
def oracle
|
56
|
+
'ok_' + rand_strings(51)
|
57
|
+
end
|
58
|
+
|
59
|
+
protected
|
60
|
+
|
61
|
+
def rand_strings(length = 50)
|
62
|
+
hex_alphabet = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
63
|
+
var = +''
|
64
|
+
length.times { var << sample(shuffle(hex_alphabet.split(''))) }
|
65
|
+
var
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -7,21 +7,47 @@ module Faker
|
|
7
7
|
class Blockchain
|
8
8
|
class Bitcoin < Base
|
9
9
|
class << self
|
10
|
+
# @private
|
10
11
|
PROTOCOL_VERSIONS = {
|
11
12
|
main: 0,
|
12
13
|
testnet: 111
|
13
14
|
}.freeze
|
14
15
|
|
16
|
+
##
|
17
|
+
# Produces a Bitcoin wallet address
|
18
|
+
#
|
19
|
+
# @return [String]
|
20
|
+
#
|
21
|
+
# @example
|
22
|
+
# Faker::Blockchain::Bitcoin.address
|
23
|
+
# #=> "147nDP22h3pHrLt2qykTH4txUwQh1ccaXp"
|
24
|
+
#
|
25
|
+
# @faker.version 1.9.2
|
15
26
|
def address
|
16
27
|
address_for(:main)
|
17
28
|
end
|
18
29
|
|
30
|
+
##
|
31
|
+
# Produces a Bitcoin testnet address
|
32
|
+
#
|
33
|
+
# @return [String]
|
34
|
+
#
|
35
|
+
# @example
|
36
|
+
# Faker::Blockchain::Bitcoin.testnet_address
|
37
|
+
# #=> "n4YjRyYD6V6zREpk6opqESDqD3KYnMdVEB"
|
38
|
+
#
|
39
|
+
# @faker.version 1.9.2
|
19
40
|
def testnet_address
|
20
41
|
address_for(:testnet)
|
21
42
|
end
|
22
43
|
|
23
44
|
protected
|
24
45
|
|
46
|
+
##
|
47
|
+
# Generates a random Bitcoin address for the given network
|
48
|
+
#
|
49
|
+
# @param network [Symbol] The name of network protocol to generate an address for
|
50
|
+
# @return [String] A Bitcoin address
|
25
51
|
def address_for(network)
|
26
52
|
version = PROTOCOL_VERSIONS.fetch(network)
|
27
53
|
packed = version.chr + Faker::Config.random.bytes(20)
|
@@ -4,6 +4,16 @@ module Faker
|
|
4
4
|
class Blockchain
|
5
5
|
class Ethereum < Base
|
6
6
|
class << self
|
7
|
+
##
|
8
|
+
# Produces a random Ethereum wallet address
|
9
|
+
#
|
10
|
+
# @return [String]
|
11
|
+
#
|
12
|
+
# @example
|
13
|
+
# Faker::Blockchain::Ethereum.address
|
14
|
+
# #=> "0xd392b0c0500700d02d27ab30805ec80ddd3320ff"
|
15
|
+
#
|
16
|
+
# @faker.version 1.9.1
|
7
17
|
def address
|
8
18
|
hex_alphabet = '0123456789abcdef'
|
9
19
|
var = +'0x'
|
@@ -7,38 +7,94 @@ module Faker
|
|
7
7
|
class Blockchain
|
8
8
|
class Tezos < Base
|
9
9
|
class << self
|
10
|
+
# @private
|
10
11
|
PREFIXES = {
|
11
|
-
tz1:
|
12
|
-
KT1:
|
13
|
-
edpk:
|
14
|
-
edsk:
|
12
|
+
tz1: [6, 161, 159],
|
13
|
+
KT1: [2, 90, 121],
|
14
|
+
edpk: [13, 15, 37, 217],
|
15
|
+
edsk: [13, 15, 58, 7],
|
15
16
|
edsig: [9, 245, 205, 134, 18],
|
16
|
-
B:
|
17
|
-
o:
|
17
|
+
B: [1, 52],
|
18
|
+
o: [5, 116]
|
18
19
|
}.freeze
|
19
20
|
|
21
|
+
##
|
22
|
+
# Produces a random Tezos account address
|
23
|
+
#
|
24
|
+
# @return [String]
|
25
|
+
#
|
26
|
+
# @example
|
27
|
+
# Faker::Blockchain::Tezos.account
|
28
|
+
# #=> "tz1eUsgK6aj752Fbxwk5sAoEFvSDnPjZ4qvk"
|
29
|
+
#
|
30
|
+
# @faker.version 1.9.2
|
20
31
|
def account
|
21
32
|
encode_tz(:tz1, 20)
|
22
33
|
end
|
23
34
|
|
35
|
+
##
|
36
|
+
# Produces a random Tezos contract
|
37
|
+
#
|
38
|
+
# @return [String]
|
39
|
+
#
|
40
|
+
# @example
|
41
|
+
# Faker::Blockchain::Tezos.contract
|
42
|
+
# #=> "KT1MroqeP15nnitB4CnNfkqHYa2NErhPPLWF"
|
43
|
+
#
|
44
|
+
# @faker.version 1.9.2
|
24
45
|
def contract
|
25
46
|
encode_tz(:KT1, 20)
|
26
47
|
end
|
27
48
|
|
49
|
+
##
|
50
|
+
# Produces a random Tezos operation
|
51
|
+
#
|
52
|
+
# @return [String]
|
53
|
+
#
|
54
|
+
# @example
|
55
|
+
# Faker::Blockchain::Tezos.operation
|
56
|
+
# #=> "onygWYXJX3xNstFLv9PcCrhQdCkENC795xwSinmTEc1jsDN4VDa"
|
57
|
+
#
|
58
|
+
# @faker.version 1.9.2
|
28
59
|
def operation
|
29
60
|
encode_tz(:o, 32)
|
30
61
|
end
|
31
62
|
|
63
|
+
##
|
64
|
+
# Produces a random Tezos block
|
65
|
+
#
|
66
|
+
# @return [String]
|
67
|
+
#
|
68
|
+
# @example
|
69
|
+
# Faker::Blockchain::Tezos.block
|
70
|
+
# #=> "BMbhs2rkY1dvAkAyRytvPsjFQ2RiPrBhYkxvWpY65dzkdSuw58a"
|
71
|
+
#
|
72
|
+
# @faker.version 1.9.4
|
32
73
|
def block
|
33
74
|
encode_tz(:B, 32)
|
34
75
|
end
|
35
76
|
|
77
|
+
##
|
78
|
+
# Produces a random Tezos signature
|
79
|
+
#
|
80
|
+
# @return [String]
|
81
|
+
#
|
82
|
+
# @example
|
83
|
+
# Faker::Blockchain::Tezos.signature
|
84
|
+
# #=> "edsigu165B7VFf3Dpw2QABVzEtCxJY2gsNBNcE3Ti7rRxtDUjqTFRpg67EdAQmY6YWPE5tKJDMnSTJDFu65gic8uLjbW2YwGvAZ"
|
85
|
+
#
|
86
|
+
# @faker.version 1.9.2
|
36
87
|
def signature
|
37
88
|
encode_tz(:edsig, 64)
|
38
89
|
end
|
39
90
|
|
40
91
|
protected
|
41
92
|
|
93
|
+
##
|
94
|
+
# @param prefix [Symbol]
|
95
|
+
# @param payload_size [Integer] The size of the payload
|
96
|
+
#
|
97
|
+
# @return [String]
|
42
98
|
def encode_tz(prefix, payload_size)
|
43
99
|
prefix = PREFIXES.fetch(prefix)
|
44
100
|
packed = prefix.map(&:chr).join('') + Faker::Config.random.bytes(payload_size)
|
data/lib/faker/books/book.rb
CHANGED
@@ -5,18 +5,54 @@ module Faker
|
|
5
5
|
flexible :book
|
6
6
|
|
7
7
|
class << self
|
8
|
+
##
|
9
|
+
# Produces a random book title
|
10
|
+
#
|
11
|
+
# @return [String]
|
12
|
+
#
|
13
|
+
# @example
|
14
|
+
# Faker::Book.title #=> "The Odd Sister"
|
15
|
+
#
|
16
|
+
# @faker.version 1.9.3
|
8
17
|
def title
|
9
18
|
fetch('book.title')
|
10
19
|
end
|
11
20
|
|
21
|
+
##
|
22
|
+
# Produces a random book author
|
23
|
+
#
|
24
|
+
# @return [String]
|
25
|
+
#
|
26
|
+
# @example
|
27
|
+
# Faker::Book.author #=> "Alysha Olsen"
|
28
|
+
#
|
29
|
+
# @faker.version 1.9.3
|
12
30
|
def author
|
13
31
|
parse('book.author')
|
14
32
|
end
|
15
33
|
|
34
|
+
##
|
35
|
+
# Produces a random book publisher
|
36
|
+
#
|
37
|
+
# @return [String]
|
38
|
+
#
|
39
|
+
# @example
|
40
|
+
# Faker::Book.publisher #=> "Opus Reader"
|
41
|
+
#
|
42
|
+
# @faker.version 1.9.3
|
16
43
|
def publisher
|
17
44
|
fetch('book.publisher')
|
18
45
|
end
|
19
46
|
|
47
|
+
##
|
48
|
+
# Produces a random genre
|
49
|
+
#
|
50
|
+
# @return [String]
|
51
|
+
#
|
52
|
+
# @example
|
53
|
+
# Faker::Book.genre #=> "Mystery"
|
54
|
+
#
|
55
|
+
# @faker.version 1.9.3
|
20
56
|
def genre
|
21
57
|
fetch('book.genre')
|
22
58
|
end
|
@@ -4,27 +4,76 @@ module Faker
|
|
4
4
|
class Books
|
5
5
|
class CultureSeries < Base
|
6
6
|
flexible :culture_series
|
7
|
+
|
7
8
|
class << self
|
9
|
+
##
|
10
|
+
# @return [String]
|
11
|
+
#
|
12
|
+
# @example
|
13
|
+
# Faker::Books::CultureSeries.book
|
14
|
+
# #=> "The Player of Games"
|
15
|
+
#
|
16
|
+
# @faker.version 1.9.3
|
8
17
|
def book
|
9
18
|
fetch('culture_series.books')
|
10
19
|
end
|
11
20
|
|
21
|
+
##
|
22
|
+
# @return [String]
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
# Faker::Books::CultureSeries.culture_ship
|
26
|
+
# #=> "Fate Amenable To Change"
|
27
|
+
#
|
28
|
+
# @faker.version 1.9.3
|
12
29
|
def culture_ship
|
13
30
|
fetch('culture_series.culture_ships')
|
14
31
|
end
|
15
32
|
|
33
|
+
##
|
34
|
+
# @return [String]
|
35
|
+
#
|
36
|
+
# @example
|
37
|
+
# Faker::Books::CultureSeries.culture_ship_class
|
38
|
+
# #=> "General Systems Vehicle"
|
39
|
+
#
|
40
|
+
# @faker.version 1.9.3
|
16
41
|
def culture_ship_class
|
17
42
|
fetch('culture_series.culture_ship_classes')
|
18
43
|
end
|
19
44
|
|
45
|
+
##
|
46
|
+
# @return [String]
|
47
|
+
#
|
48
|
+
# @example
|
49
|
+
# Faker::Books::CultureSeries.culture_ship_class_abv
|
50
|
+
# #=> "The Odd Sister"
|
51
|
+
#
|
52
|
+
# @faker.version 1.9.3
|
20
53
|
def culture_ship_class_abv
|
21
54
|
fetch('culture_series.culture_ship_class_abvs')
|
22
55
|
end
|
23
56
|
|
57
|
+
##
|
58
|
+
# @return [String]
|
59
|
+
#
|
60
|
+
# @example
|
61
|
+
# Faker::Books::CultureSeries.civ
|
62
|
+
# #=> "Culture"
|
63
|
+
#
|
64
|
+
# @faker.version 1.9.3
|
24
65
|
def civ
|
25
66
|
fetch('culture_series.civs')
|
26
67
|
end
|
27
68
|
|
69
|
+
##
|
70
|
+
# @return [String]
|
71
|
+
#
|
72
|
+
# @example
|
73
|
+
# Faker::Books::CultureSeries.planet
|
74
|
+
# #=> "Xinth"
|
75
|
+
#
|
76
|
+
# @faker.version 1.9.3
|
28
77
|
def planet
|
29
78
|
fetch('culture_series.planets')
|
30
79
|
end
|
data/lib/faker/books/dune.rb
CHANGED
@@ -2,24 +2,67 @@
|
|
2
2
|
|
3
3
|
module Faker
|
4
4
|
class Books
|
5
|
+
##
|
6
|
+
# A Faker module beyond your dreams, test data beyond your imagination.
|
5
7
|
class Dune < Base
|
6
8
|
class << self
|
7
|
-
|
8
|
-
#
|
9
|
-
|
9
|
+
##
|
10
|
+
# Produces the name of a character from Dune
|
11
|
+
#
|
12
|
+
# @return [String]
|
13
|
+
#
|
14
|
+
# @example
|
15
|
+
# Faker::Books::Dune.character #=> "Leto Atreides"
|
16
|
+
#
|
17
|
+
# @faker.version 1.9.3
|
10
18
|
def character
|
11
19
|
fetch('dune.characters')
|
12
20
|
end
|
13
21
|
|
22
|
+
##
|
23
|
+
# @return [String]
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
# Faker::Books::Dune.title #=> "Duke"
|
27
|
+
#
|
28
|
+
# @faker.version 1.9.3
|
14
29
|
def title
|
15
30
|
fetch('dune.titles')
|
16
31
|
end
|
17
32
|
|
33
|
+
##
|
34
|
+
# Produces the name of a planet from Dune
|
35
|
+
#
|
36
|
+
# @return [String]
|
37
|
+
#
|
38
|
+
# @example
|
39
|
+
# Faker::Books::Dune.planet #=> "Caladan"
|
40
|
+
#
|
41
|
+
# @faker.version 1.9.3
|
18
42
|
def planet
|
19
43
|
fetch('dune.planets')
|
20
44
|
end
|
21
45
|
|
22
|
-
|
46
|
+
##
|
47
|
+
# Produces a quote from Dune
|
48
|
+
#
|
49
|
+
# @param character [String] The name of the character that the quote should be from
|
50
|
+
#
|
51
|
+
# @return [String]
|
52
|
+
#
|
53
|
+
# @example
|
54
|
+
# Faker::Books::Dune.quote
|
55
|
+
# #=> "A dead man, surely, no longer requires that water."
|
56
|
+
# @example
|
57
|
+
# Faker::Books::Dune.quote(character: "baron_harkonnen")
|
58
|
+
# #=> "He who controls the spice, controls the universe!"
|
59
|
+
#
|
60
|
+
# @faker.version 1.9.3
|
61
|
+
def quote(legacy_character = NOT_GIVEN, character: nil)
|
62
|
+
warn_for_deprecated_arguments do |keywords|
|
63
|
+
keywords << :character if legacy_character != NOT_GIVEN
|
64
|
+
end
|
65
|
+
|
23
66
|
quoted_characters = translate('faker.dune.quotes').keys
|
24
67
|
|
25
68
|
if character.nil?
|
@@ -36,7 +79,25 @@ module Faker
|
|
36
79
|
fetch('dune.quotes.' + character)
|
37
80
|
end
|
38
81
|
|
39
|
-
|
82
|
+
##
|
83
|
+
# Produces a saying from Dune
|
84
|
+
#
|
85
|
+
# @param source [String]
|
86
|
+
#
|
87
|
+
# @return [String]
|
88
|
+
#
|
89
|
+
# @example
|
90
|
+
# Faker::Books::Dune.saying #=> "You do not beg the sun for mercy."
|
91
|
+
# @example
|
92
|
+
# Faker::Books::Dune.saying(source: "fremen")
|
93
|
+
# #=> "May thy knife chip and shatter."
|
94
|
+
#
|
95
|
+
# @faker.version 1.9.3
|
96
|
+
def saying(legacy_source = NOT_GIVEN, source: nil)
|
97
|
+
warn_for_deprecated_arguments do |keywords|
|
98
|
+
keywords << :source if legacy_source != NOT_GIVEN
|
99
|
+
end
|
100
|
+
|
40
101
|
sourced_sayings = translate('faker.dune.sayings').keys
|
41
102
|
|
42
103
|
if source.nil?
|