faker 2.11.0 → 2.13.0

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.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +160 -0
  3. data/README.md +11 -2
  4. data/lib/faker.rb +16 -10
  5. data/lib/faker/default/address.rb +31 -1
  6. data/lib/faker/default/bank.rb +79 -0
  7. data/lib/faker/default/blood.rb +48 -0
  8. data/lib/faker/default/business.rb +1 -1
  9. data/lib/faker/default/chile_rut.rb +44 -1
  10. data/lib/faker/default/commerce.rb +73 -10
  11. data/lib/faker/default/company.rb +40 -3
  12. data/lib/faker/default/compass.rb +135 -0
  13. data/lib/faker/default/computer.rb +63 -0
  14. data/lib/faker/default/construction.rb +54 -0
  15. data/lib/faker/default/cosmere.rb +90 -0
  16. data/lib/faker/default/crypto_coin.rb +45 -0
  17. data/lib/faker/default/date.rb +16 -12
  18. data/lib/faker/default/driving_licence.rb +42 -0
  19. data/lib/faker/default/file.rb +49 -0
  20. data/lib/faker/default/finance.rb +24 -0
  21. data/lib/faker/default/gender.rb +1 -1
  22. data/lib/faker/default/hipster.rb +94 -0
  23. data/lib/faker/default/id_number.rb +86 -0
  24. data/lib/faker/default/internet.rb +35 -7
  25. data/lib/faker/default/internet_http.rb +48 -0
  26. data/lib/faker/default/invoice.rb +32 -5
  27. data/lib/faker/default/json.rb +55 -0
  28. data/lib/faker/default/lorem_flickr.rb +65 -0
  29. data/lib/faker/default/lorem_pixel.rb +22 -0
  30. data/lib/faker/default/markdown.rb +89 -0
  31. data/lib/faker/default/measurement.rb +90 -0
  32. data/lib/faker/default/name.rb +98 -0
  33. data/lib/faker/default/nhs.rb +19 -0
  34. data/lib/faker/default/number.rb +5 -7
  35. data/lib/faker/default/omniauth.rb +58 -5
  36. data/lib/faker/default/phone_number.rb +88 -5
  37. data/lib/faker/default/placeholdit.rb +21 -0
  38. data/lib/faker/default/slack_emoji.rb +81 -0
  39. data/lib/faker/default/south_africa.rb +90 -0
  40. data/lib/faker/default/string.rb +19 -3
  41. data/lib/faker/default/stripe.rb +61 -0
  42. data/lib/faker/default/twitter.rb +35 -0
  43. data/lib/faker/default/types.rb +80 -0
  44. data/lib/faker/default/university.rb +45 -0
  45. data/lib/faker/default/vehicle.rb +184 -4
  46. data/lib/faker/default/verb.rb +45 -0
  47. data/lib/faker/default/world_cup.rb +4 -4
  48. data/lib/faker/games/control.rb +113 -0
  49. data/lib/faker/games/dnd.rb +61 -0
  50. data/lib/faker/games/heroes_of_the_storm.rb +16 -5
  51. data/lib/faker/games/minecraft.rb +48 -0
  52. data/lib/faker/games/warhammer_fantasy.rb +74 -0
  53. data/lib/faker/movies/departed.rb +49 -0
  54. data/lib/faker/movies/movie.rb +13 -0
  55. data/lib/faker/music/pearl_jam.rb +50 -0
  56. data/lib/faker/music/phish.rb +27 -1
  57. data/lib/faker/music/prince.rb +64 -0
  58. data/lib/faker/music/rush.rb +37 -0
  59. data/lib/faker/music/show.rb +49 -0
  60. data/lib/faker/quotes/quote.rb +54 -1
  61. data/lib/faker/quotes/shakespeare.rb +36 -0
  62. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +13 -0
  63. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  64. data/lib/faker/tv_shows/dr_who.rb +1 -1
  65. data/lib/faker/tv_shows/futurama.rb +65 -0
  66. data/lib/faker/tv_shows/simpsons.rb +14 -0
  67. data/lib/faker/tv_shows/suits.rb +37 -0
  68. data/lib/faker/version.rb +1 -1
  69. data/lib/helpers/base58.rb +1 -1
  70. data/lib/helpers/char.rb +22 -27
  71. data/lib/locales/de-CH.yml +1693 -0
  72. data/lib/locales/en-AU.yml +44 -10
  73. data/lib/locales/en-CA.yml +2 -0
  74. data/lib/locales/en-US.yml +29 -3
  75. data/lib/locales/en/address.yml +2 -0
  76. data/lib/locales/en/aqua_teen_hunger_force.yml +33 -1
  77. data/lib/locales/en/bank.yml +1 -1
  78. data/lib/locales/en/big_bang_theory.yml +38 -0
  79. data/lib/locales/en/blood.yml +13 -0
  80. data/lib/locales/en/computer.yml +36 -0
  81. data/lib/locales/en/control.yml +247 -0
  82. data/lib/locales/en/departed.yml +50 -0
  83. data/lib/locales/en/dnd.yml +54 -0
  84. data/lib/locales/en/futurama.yml +344 -0
  85. data/lib/locales/en/heroes_of_the_storm.yml +2 -2
  86. data/lib/locales/en/house.yml +1 -1
  87. data/lib/locales/en/minecraft.yml +390 -0
  88. data/lib/locales/en/movie.yml +192 -1
  89. data/lib/locales/en/name.yml +3 -2
  90. data/lib/locales/en/one_piece.yml +2 -2
  91. data/lib/locales/en/pearl_jam.yml +213 -0
  92. data/lib/locales/en/phish.yml +392 -1
  93. data/lib/locales/en/prince.yml +227 -0
  94. data/lib/locales/en/rush.yml +32 -0
  95. data/lib/locales/en/show.yml +597 -0
  96. data/lib/locales/en/simpsons.yml +668 -0
  97. data/lib/locales/en/star_wars.yml +568 -220
  98. data/lib/locales/en/suits.yml +45 -0
  99. data/lib/locales/en/warhammer_fantasy.yml +582 -0
  100. data/lib/locales/fr-CA.yml +2 -0
  101. data/lib/locales/ko.yml +82 -0
  102. data/lib/locales/pt-BR.yml +1 -0
  103. metadata +46 -17
@@ -5,14 +5,41 @@ module Faker
5
5
  flexible :name
6
6
 
7
7
  class << self
8
+ ##
9
+ # Produces a random name.
10
+ #
11
+ # @return [String]
12
+ #
13
+ # @example
14
+ # Faker::Name.name #=> "Tyshawn Johns Sr."
15
+ #
16
+ # @faker.version 0.9.0
8
17
  def name
9
18
  parse('name.name')
10
19
  end
11
20
 
21
+ ##
22
+ # Produces a random name with middle name.
23
+ #
24
+ # @return [String]
25
+ #
26
+ # @example
27
+ # Faker::Name.name_with_middle #=> "Aditya Elton Douglas"
28
+ #
29
+ # @faker.version 1.6.4
12
30
  def name_with_middle
13
31
  parse('name.name_with_middle')
14
32
  end
15
33
 
34
+ ##
35
+ # Produces a random first name.
36
+ #
37
+ # @return [String]
38
+ #
39
+ # @example
40
+ # Faker::Name.first_name #=> "Kaci"
41
+ #
42
+ # @faker.version 0.9.0
16
43
  def first_name
17
44
  if parse('name.first_name').empty?
18
45
  fetch('name.first_name')
@@ -21,31 +48,102 @@ module Faker
21
48
  end
22
49
  end
23
50
 
51
+ ##
52
+ # Produces a random male first name.
53
+ #
54
+ # @return [String]
55
+ #
56
+ # @example
57
+ # Faker::Name.male_first_name #=> "Edward"
58
+ #
59
+ # @faker.version 1.9.1
24
60
  def male_first_name
25
61
  fetch('name.male_first_name')
26
62
  end
27
63
  alias first_name_men male_first_name
28
64
  alias masculine_name male_first_name
29
65
 
66
+ ##
67
+ # Produces a random female first name.
68
+ #
69
+ # @return [String]
70
+ #
71
+ # @example
72
+ # Faker::Name.female_first_name #=> "Natasha"
73
+ #
74
+ # @faker.version 1.9.1
30
75
  def female_first_name
31
76
  fetch('name.female_first_name')
32
77
  end
33
78
  alias first_name_women female_first_name
34
79
  alias feminine_name female_first_name
35
80
 
81
+ ##
82
+ # Produces a random gender neutral first name.
83
+ #
84
+ # @return [String]
85
+ #
86
+ # @example
87
+ # Faker::Name.neutral_first_name #=> "Casey"
88
+ #
89
+ # @faker.version 2.13.0
90
+ def neutral_first_name
91
+ fetch('name.neutral_first_name')
92
+ end
93
+ alias first_name_neutral neutral_first_name
94
+ alias gender_neutral_first_name neutral_first_name
95
+
96
+ ##
97
+ # Produces a random last name.
98
+ #
99
+ # @return [String]
100
+ #
101
+ # @example
102
+ # Faker::Name.last_name #=> "Ernser"
103
+ #
104
+ # @faker.version 0.9.0
36
105
  def last_name
37
106
  parse('name.last_name')
38
107
  end
39
108
  alias middle_name last_name
40
109
 
110
+ ##
111
+ # Produces a random name prefix.
112
+ #
113
+ # @return [String]
114
+ #
115
+ # @example
116
+ # Faker::Name.prefix #=> "Mr."
117
+ #
118
+ # @faker.version 0.9.0
41
119
  def prefix
42
120
  fetch('name.prefix')
43
121
  end
44
122
 
123
+ ##
124
+ # Produces a random name suffix.
125
+ #
126
+ # @return [String]
127
+ #
128
+ # @example
129
+ # Faker::Name.suffix #=> "IV"
130
+ #
131
+ # @faker.version 0.9.0
45
132
  def suffix
46
133
  fetch('name.suffix')
47
134
  end
48
135
 
136
+ ##
137
+ # Produces random initials.
138
+ #
139
+ # @param number [Integer] Number of digits that the generated initials should have.
140
+ # @return [String]
141
+ #
142
+ # @example
143
+ # Faker::Name.initials #=> "NJM"
144
+ # Faker::Name.initials(number: 2) #=> "NM"
145
+ #
146
+ # @faker.version 1.8.5
49
147
  def initials(legacy_number = NOT_GIVEN, number: 3)
50
148
  warn_for_deprecated_arguments do |keywords|
51
149
  keywords << :number if legacy_number != NOT_GIVEN
@@ -3,6 +3,15 @@
3
3
  module Faker
4
4
  class NationalHealthService < Base
5
5
  class << self
6
+ ##
7
+ # Produces a random British NHS number.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::NationalHealthService.british_number #=> "403 958 5577"
13
+ #
14
+ # @faker.version 1.9.2
6
15
  def british_number
7
16
  base_number = rand(400_000_001...499_999_999)
8
17
  # If the check digit is equivalent to 10, the number is invalid.
@@ -15,6 +24,16 @@ module Faker
15
24
  .join('')
16
25
  end
17
26
 
27
+ ##
28
+ # Produces a random British NHS number's check digit.
29
+ #
30
+ # @param number [Integer] Specifies the NHS number the check digit belongs to.
31
+ # @return [Integer]
32
+ #
33
+ # @example
34
+ # Faker::NationalHealthService.check_digit(number: 400_012_114) #=> 6
35
+ #
36
+ # @faker.version 1.9.2
18
37
  def check_digit(legacy_number = NOT_GIVEN, number: 0)
19
38
  warn_for_deprecated_arguments do |keywords|
20
39
  keywords << :number if legacy_number != NOT_GIVEN
@@ -85,13 +85,11 @@ module Faker
85
85
  end
86
86
 
87
87
  l_d = number(digits: l_digits)
88
- r_d = if r_digits == 1
89
- generate(r_digits)
90
- else
91
- # Ensure the last digit is not zero
92
- # so it does not get truncated on converting to float
93
- generate(r_digits - 1).join + non_zero_digit.to_s
94
- end
88
+
89
+ # Ensure the last digit is not zero
90
+ # so it does not get truncated on converting to float
91
+ r_d = generate(r_digits - 1).join + non_zero_digit.to_s
92
+
95
93
  "#{l_d}.#{r_d}".to_f
96
94
  end
97
95
 
@@ -15,6 +15,16 @@ module Faker
15
15
  end
16
16
 
17
17
  class << self
18
+ ##
19
+ # Generate a mock Omniauth response from Google.
20
+ #
21
+ # @param name [String] A specific name to return in the response.
22
+ # @param email [String] A specific email to return in the response.
23
+ # @param uid [String] A specific UID to return in the response.
24
+ #
25
+ # @return [Hash] An auth hash in the format provided by omniauth-google.
26
+ #
27
+ # @faker.version 1.8.0
18
28
  # rubocop:disable Metrics/ParameterLists
19
29
  def google(legacy_name = NOT_GIVEN, legacy_email = NOT_GIVEN, legacy_uid = NOT_GIVEN, name: nil, email: nil, uid: Number.number(digits: 9).to_s)
20
30
  # rubocop:enable Metrics/ParameterLists
@@ -72,6 +82,17 @@ module Faker
72
82
  }
73
83
  end
74
84
 
85
+ ##
86
+ # Generate a mock Omniauth response from Facebook.
87
+ #
88
+ # @param name [String] A specific name to return in the response.
89
+ # @param email [String] A specific email to return in the response.
90
+ # @param username [String] A specific username to return in the response.
91
+ # @param uid [String] A specific UID to return in the response.
92
+ #
93
+ # @return [Hash] An auth hash in the format provided by omniauth-facebook.
94
+ #
95
+ # @faker.version 1.8.0
75
96
  # rubocop:disable Metrics/ParameterLists
76
97
  def facebook(legacy_name = NOT_GIVEN, legacy_email = NOT_GIVEN, legacy_username = NOT_GIVEN, legacy_uid = NOT_GIVEN, name: nil, email: nil, username: nil, uid: Number.number(digits: 7).to_s)
77
98
  # rubocop:enable Metrics/ParameterLists
@@ -123,6 +144,16 @@ module Faker
123
144
  }
124
145
  end
125
146
 
147
+ ##
148
+ # Generate a mock Omniauth response from Twitter.
149
+ #
150
+ # @param name [String] A specific name to return in the response.
151
+ # @param nickname [String] A specific nickname to return in the response.
152
+ # @param uid [String] A specific UID to return in the response.
153
+ #
154
+ # @return [Hash] An auth hash in the format provided by omniauth-twitter.
155
+ #
156
+ # @faker.version 1.8.0
126
157
  # rubocop:disable Metrics/ParameterLists
127
158
  def twitter(legacy_name = NOT_GIVEN, legacy_nickname = NOT_GIVEN, legacy_uid = NOT_GIVEN, name: nil, nickname: nil, uid: Number.number(digits: 6).to_s)
128
159
  # rubocop:enable Metrics/ParameterLists
@@ -204,6 +235,16 @@ module Faker
204
235
  }
205
236
  end
206
237
 
238
+ ##
239
+ # Generate a mock Omniauth response from LinkedIn.
240
+ #
241
+ # @param name [String] A specific name to return in the response.
242
+ # @param email [String] A specific email to return in the response.
243
+ # @param uid [String] A specific UID to return in the response.
244
+ #
245
+ # @return [Hash] An auth hash in the format provided by omniauth-linkedin.
246
+ #
247
+ # @faker.version 1.8.0
207
248
  # rubocop:disable Metrics/ParameterLists
208
249
  def linkedin(legacy_name = NOT_GIVEN, legacy_email = NOT_GIVEN, legacy_uid = NOT_GIVEN, name: nil, email: nil, uid: Number.number(digits: 6).to_s)
209
250
  # rubocop:enable Metrics/ParameterLists
@@ -275,6 +316,16 @@ module Faker
275
316
  }
276
317
  end
277
318
 
319
+ ##
320
+ # Generate a mock Omniauth response from Github.
321
+ #
322
+ # @param name [String] A specific name to return in the response.
323
+ # @param email [String] A specific email to return in the response.
324
+ # @param uid [String] A specific UID to return in the response.
325
+ #
326
+ # @return [Hash] An auth hash in the format provided by omniauth-github.
327
+ #
328
+ # @faker.version 1.8.0
278
329
  # rubocop:disable Metrics/ParameterLists
279
330
  def github(legacy_name = NOT_GIVEN, legacy_email = NOT_GIVEN, legacy_uid = NOT_GIVEN, name: nil, email: nil, uid: Number.number(digits: 8).to_s)
280
331
  # rubocop:enable Metrics/ParameterLists
@@ -342,13 +393,15 @@ module Faker
342
393
  end
343
394
 
344
395
  ##
345
- # Generate a mock Omniauth response from Apple
396
+ # Generate a mock Omniauth response from Apple.
397
+ #
398
+ # @param name [String] A specific name to return in the response.
399
+ # @param email [String] A specific email to return in the response.
400
+ # @param uid [String] A specific UID to return in the response.
346
401
  #
347
- # @param name [String] A specific name to return in the response
348
- # @param email [String] A specific email to return in the response
349
- # @param uid [String] A specific UID to return in the response
402
+ # @return [Hash] An auth hash in the format provided by omniauth-apple.
350
403
  #
351
- # @return [Hash] An auth hash in the format provided by omniauth-apple
404
+ # @faker.version 2.3.0
352
405
  def apple(name: nil, email: nil, uid: nil)
353
406
  uid ||= "#{Number.number(digits: 6)}.#{Number.hexadecimal(digits: 32)}.#{Number.number(digits: 4)}"
354
407
  auth = Omniauth.new(name: name, email: email)
@@ -3,43 +3,126 @@
3
3
  module Faker
4
4
  class PhoneNumber < Base
5
5
  class << self
6
+ ##
7
+ # Produces a random phone number in a random format (may or may not have a country code, extension and can have different dividers).
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::PhoneNumber.phone_number #=> "397.693.1309 x4321"
13
+ #
14
+ # @faker.version 0.3.0
6
15
  def phone_number
7
16
  parse('phone_number.formats')
8
17
  end
9
18
 
19
+ ##
20
+ # Produces a random cell phone number in a random format (may or may not have a country code and can have different dividers).
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::PhoneNumber.cell_phone #=> "(186)285-7925"
26
+ #
27
+ # @faker.version 1.0.0
10
28
  def cell_phone
11
29
  parse('cell_phone.formats')
12
30
  end
13
31
 
32
+ ##
33
+ # Produces a random country code.
34
+ #
35
+ # @return [String]
36
+ #
37
+ # @example
38
+ # Faker::PhoneNumber.country_code #=> "+20"
39
+ #
40
+ # @faker.version 1.9.2
14
41
  def country_code
15
42
  "+#{fetch('country_code')}"
16
43
  end
17
44
 
45
+ ##
46
+ # Produces a random phone number with country code.
47
+ #
48
+ # @return [String]
49
+ #
50
+ # @example
51
+ # Faker::PhoneNumber.phone_number_with_country_code #=> "+95 1-672-173-8153"
52
+ #
53
+ # @faker.version 1.9.2
18
54
  def phone_number_with_country_code
19
55
  "#{country_code} #{phone_number}"
20
56
  end
21
57
 
58
+ ##
59
+ # Produces a random cell phone number with country code.
60
+ #
61
+ # @return [String]
62
+ #
63
+ # @example
64
+ # Faker::PhoneNumber.cell_phone_with_country_code #=> "+974 (190) 987-9034"
65
+ #
66
+ # @faker.version 1.9.2
22
67
  def cell_phone_with_country_code
23
68
  "#{country_code} #{cell_phone}"
24
69
  end
25
70
 
26
- # US and Canada only
71
+ ##
72
+ # Produces a random phone number in e164 format.
73
+ #
74
+ # @return [String]
75
+ #
76
+ # @example
77
+ # Faker::PhoneNumber.cell_phone_in_e164 #=> "+944937040625"
78
+ #
79
+ # @faker.version 1.9.2
80
+ def cell_phone_in_e164
81
+ cell_phone_with_country_code.delete('^+0-9')
82
+ end
83
+
84
+ ##
85
+ # Produces a random US or Canada-based area code.
86
+ #
87
+ # @return [String]
88
+ #
89
+ # @example
90
+ # Faker::PhoneNumber.area_code #=> "201"
91
+ #
92
+ # @faker.version 1.3.0
27
93
  def area_code
28
94
  fetch('phone_number.area_code')
29
95
  rescue I18n::MissingTranslationData
30
96
  nil
31
97
  end
32
98
 
33
- # US and Canada only
99
+ ##
100
+ # Produces a random US or Canada-based exchange code.
101
+ #
102
+ # @return [String]
103
+ #
104
+ # @example
105
+ # Faker::PhoneNumber.exchange_code #=> "208"
106
+ #
107
+ # @faker.version 1.3.0
34
108
  def exchange_code
35
109
  fetch('phone_number.exchange_code')
36
110
  rescue I18n::MissingTranslationData
37
111
  nil
38
112
  end
39
113
 
40
- # US and Canada only
41
- # Can be used for both extensions and last four digits of phone number.
42
- # Since extensions can be of variable length, this method taks a length parameter
114
+ ##
115
+ # Produces a random US or Canada-based extension / subscriber number. Can be used for both extensions and last four digits of phone number.
116
+ #
117
+ # @param length [Integer] Speficies the length of the return value.
118
+ # @return [String]
119
+ #
120
+ # @example
121
+ # Faker::PhoneNumber.subscriber_number #=> "3873"
122
+ # Faker::PhoneNumber.subscriber_number(length: 2) #=> "39"
123
+ # Faker::PhoneNumber.extension #=> "3764"
124
+ #
125
+ # @faker.version 1.3.0
43
126
  def subscriber_number(legacy_length = NOT_GIVEN, length: 4)
44
127
  warn_for_deprecated_arguments do |keywords|
45
128
  keywords << :length if legacy_length != NOT_GIVEN
@@ -5,6 +5,27 @@ module Faker
5
5
  class << self
6
6
  SUPPORTED_FORMATS = %w[png jpg gif jpeg].freeze
7
7
 
8
+ ##
9
+ # Produces a random placeholder image from https://placehold.it.
10
+ #
11
+ # @param size [String] Specifies the image's size, dimensions separated by 'x'.
12
+ # @param format [String] Specifies the image's extension.
13
+ # @param background_color [String, Symbol] Specifies the background color, either in hexadecimal format (without #) or as :random.
14
+ # @param text_color [String, Symbol] Specifies the text color, either in hexadecimal format (without #) or as :random.
15
+ # @param text [String] Specifies a custom text to be used.
16
+ # @return [String]
17
+ #
18
+ # @example
19
+ # # Keyword arguments: size, format, background_color, text_color, text
20
+ # Faker::Placeholdit.image #=> "https://placehold.it/300x300.png"
21
+ # Faker::Placeholdit.image(size: '50x50') #=> "https://placehold.it/50x50.png"
22
+ # Faker::Placeholdit.image(size: '50x50', format: 'jpg') #=> "https://placehold.it/50x50.jpg"
23
+ # Faker::Placeholdit.image(size: '50x50', format: 'gif', background_color: 'ffffff') #=> "https://placehold.it/50x50.gif/ffffff"
24
+ # Faker::Placeholdit.image(size: '50x50', format: 'jpeg', background_color: :random) #=> "https://placehold.it/50x50.jpeg/39eba7"
25
+ # Faker::Placeholdit.image(size: '50x50', format: 'jpeg', background_color: 'ffffff', text_color: '000') #=> "https://placehold.it/50x50.jpeg/ffffff/000"
26
+ # Faker::Placeholdit.image(size: '50x50', format: 'jpg', background_color: 'ffffff', text_color: '000', text: 'Some Custom Text') #=> "https://placehold.it/50x50.jpg/ffffff/000?text=Some Custom Text"
27
+ #
28
+ # @faker.version 1.6.0
8
29
  # rubocop:disable Metrics/ParameterLists
9
30
  def image(legacy_size = NOT_GIVEN, legacy_format = NOT_GIVEN, legacy_background_color = NOT_GIVEN, legacy_text_color = NOT_GIVEN, legacy_text = NOT_GIVEN, size: '300x300', format: 'png', background_color: nil, text_color: nil, text: nil)
10
31
  # rubocop:enable Metrics/ParameterLists