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
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Blood < Base
5
+ flexible :blood
6
+
7
+ class << self
8
+ ##
9
+ # Produces a random blood type.
10
+ #
11
+ # @return [String]
12
+ #
13
+ # @example
14
+ # Faker::Blood.type #=> "AB"
15
+ #
16
+ # @faker.version 2.13.0
17
+ def type
18
+ fetch('blood.type')
19
+ end
20
+
21
+ ##
22
+ # Produces a random blood RH-Factor.
23
+ #
24
+ # @return [String]
25
+ #
26
+ # @example
27
+ # Faker::Blood.rh_factor #=> "-"
28
+ #
29
+ # @faker.version 2.13.0
30
+ def rh_factor
31
+ fetch('blood.rh_factor')
32
+ end
33
+
34
+ ##
35
+ # Produces a random blood group name.
36
+ #
37
+ # @return [String]
38
+ #
39
+ # @example
40
+ # Faker::Blood.group #=> "AB-"
41
+ #
42
+ # @faker.version 2.13.0
43
+ def group
44
+ parse('blood.group')
45
+ end
46
+ end
47
+ end
48
+ end
@@ -26,7 +26,7 @@ module Faker
26
26
  # @return [Date]
27
27
  #
28
28
  # @example
29
- # Faker::Business.credit_card_number #=> <Date: 2015-11-11 ((2457338j,0s,0n),+0s,2299161j)>
29
+ # Faker::Business.credit_card_expiry_date #=> <Date: 2015-11-11 ((2457338j,0s,0n),+0s,2299161j)>
30
30
  #
31
31
  # @faker.version 1.2.0
32
32
  def credit_card_expiry_date
@@ -5,7 +5,19 @@ module Faker
5
5
  class << self
6
6
  @last_rut = nil
7
7
 
8
- # Fixed param added for testing a specific RUT and check digit combination.
8
+ ##
9
+ # Produces a random Chilean RUT (Rol Unico Tributario, ID with 8 digits).
10
+ #
11
+ # @param min_rut [Integer] Specifies the minimum value of the rut.
12
+ # @param fixed [Boolean] Determines if the rut is fixed (returns the min_rut value).
13
+ # @return [Number]
14
+ #
15
+ # @example
16
+ # Faker::ChileRut.rut #=> 11235813
17
+ # Faker::ChileRut.rut(min_rut: 20890156) #=> 31853211
18
+ # Faker::ChileRut.rut(min_rut: 20890156, fixed: true) #=> 20890156
19
+ #
20
+ # @faker.version 1.9.2
9
21
  def rut(legacy_min_rut = NOT_GIVEN, legacy_fixed = NOT_GIVEN, min_rut: 1, fixed: false)
10
22
  warn_for_deprecated_arguments do |keywords|
11
23
  keywords << :min_rut if legacy_min_rut != NOT_GIVEN
@@ -15,6 +27,15 @@ module Faker
15
27
  @last_rut = fixed ? min_rut : rand_in_range(min_rut, 99_999_999)
16
28
  end
17
29
 
30
+ ##
31
+ # Produces a random Chilean digito verificador (check-digit).
32
+ #
33
+ # @return [String]
34
+ #
35
+ # @example
36
+ # Faker::ChileRut.dv #=> "k"
37
+ #
38
+ # @faker.version 1.9.2
18
39
  def dv
19
40
  split_reversed_rut = @last_rut.to_s.reverse.split('')
20
41
  seq = [2, 3, 4, 5, 6, 7]
@@ -34,11 +55,33 @@ module Faker
34
55
  end
35
56
  end
36
57
 
58
+ ##
59
+ # Produces a random Chilean digito verificador (check-digit).
37
60
  # Alias for english speaking devs.
61
+ #
62
+ # @return [String]
63
+ #
64
+ # @example
65
+ # Faker::ChileRut.check_digit #=> "5"
66
+ #
67
+ # @faker.version 1.9.2
38
68
  def check_digit
39
69
  dv
40
70
  end
41
71
 
72
+ ##
73
+ # Produces a random Chilean RUT (Rol Unico Tributario, ID with 8 digits) with a dv (digito verificador, check-digit).
74
+ #
75
+ # @param min_rut [Integer] Specifies the minimum value of the rut.
76
+ # @param fixed [Boolean] Determines if the rut is fixed (returns the min_rut value).
77
+ # @return [String]
78
+ #
79
+ # @example
80
+ # Faker::ChileRut.full_rut #=> "30686957-4"
81
+ # Faker::ChileRut.full_rut(min_rut: 20890156) #=> "30686957-4"
82
+ # Faker::ChileRut.full_rut(min_rut: 30686957, fixed: true) #=> "30686957-4"
83
+ #
84
+ # @faker.version 1.9.2
42
85
  def full_rut(legacy_min_rut = NOT_GIVEN, legacy_fixed = NOT_GIVEN, min_rut: 0, fixed: false)
43
86
  warn_for_deprecated_arguments do |keywords|
44
87
  keywords << :min_rut if legacy_min_rut != NOT_GIVEN
@@ -3,10 +3,30 @@
3
3
  module Faker
4
4
  class Commerce < Base
5
5
  class << self
6
+ ##
7
+ # Produces a random color.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::Commerce.color #=> "lavender"
13
+ #
14
+ # @faker.version 1.2.0
6
15
  def color
7
16
  fetch('color.name')
8
17
  end
9
18
 
19
+ ##
20
+ # Produces a random promotion code.
21
+ #
22
+ # @param digits [Integer] Updates the number of numerical digits used to generate the promotion code.
23
+ # @return [String]
24
+ #
25
+ # @example
26
+ # Faker::Commerce.promotion_code #=> "AmazingDeal829102"
27
+ # Faker::Commerce.promotion_code(digits: 2) #=> "AmazingPrice57"
28
+ #
29
+ # @faker.version 1.7.0
10
30
  def promotion_code(legacy_digits = NOT_GIVEN, digits: 6)
11
31
  warn_for_deprecated_arguments do |keywords|
12
32
  keywords << :digits if legacy_digits != NOT_GIVEN
@@ -19,6 +39,19 @@ module Faker
19
39
  ].join
20
40
  end
21
41
 
42
+ ##
43
+ # Produces a random department.
44
+ #
45
+ # @param max [Integer] Updates the maximum number of names used to generate the department name.
46
+ # @param fixed_amount [Boolean] Fixes the amount of departments to use instead of using a range.
47
+ # @return [String]
48
+ #
49
+ # @example
50
+ # Faker::Commerce.department #=> "Grocery, Health & Beauty"
51
+ # Faker::Commerce.department(max: 5) #=> "Grocery, Books, Health & Beauty"
52
+ # Faker::Commerce.department(max: 2, fixed_amount: true) #=> "Books & Tools"
53
+ #
54
+ # @faker.version 1.2.0
22
55
  def department(legacy_max = NOT_GIVEN, legacy_fixed_amount = NOT_GIVEN, max: 3, fixed_amount: false)
23
56
  warn_for_deprecated_arguments do |keywords|
24
57
  keywords << :max if legacy_max != NOT_GIVEN
@@ -30,19 +63,55 @@ module Faker
30
63
 
31
64
  categories = categories(num)
32
65
 
33
- return merge_categories(categories) if num > 1
34
-
35
- categories[0]
66
+ if categories.is_a?(Array)
67
+ if categories.length > 1
68
+ merge_categories(categories)
69
+ else
70
+ categories[0]
71
+ end
72
+ else
73
+ categories
74
+ end
36
75
  end
37
76
 
77
+ ##
78
+ # Produces a random product name.
79
+ #
80
+ # @return [String]
81
+ #
82
+ # @example
83
+ # Faker::Commerce.product_name #=> "Practical Granite Shirt"
84
+ #
85
+ # @faker.version 1.2.0
38
86
  def product_name
39
87
  "#{fetch('commerce.product_name.adjective')} #{fetch('commerce.product_name.material')} #{fetch('commerce.product_name.product')}"
40
88
  end
41
89
 
90
+ ##
91
+ # Produces a random material.
92
+ #
93
+ # @return [String]
94
+ #
95
+ # @example
96
+ # Faker::Commerce.material #=> "Plastic"
97
+ #
98
+ # @faker.version 1.5.0
42
99
  def material
43
100
  fetch('commerce.product_name.material')
44
101
  end
45
102
 
103
+ ##
104
+ # Produces a random product price.
105
+ #
106
+ # @param range [Range] A range to generate the random number within.
107
+ # @param as_string [Boolean] Changes the return value to [String].
108
+ # @return [Float]
109
+ #
110
+ # @example
111
+ # Faker::Commerce.price #=> 44.6
112
+ # Faker::Commerce.price(range: 0..10.0, as_string: true) #=> "2.18"
113
+ #
114
+ # @faker.version 1.2.0
46
115
  def price(legacy_range = NOT_GIVEN, legacy_as_string = NOT_GIVEN, range: 0..100.0, as_string: false)
47
116
  warn_for_deprecated_arguments do |keywords|
48
117
  keywords << :range if legacy_range != NOT_GIVEN
@@ -60,13 +129,7 @@ module Faker
60
129
  private
61
130
 
62
131
  def categories(num)
63
- categories = []
64
- while categories.length < num
65
- category = fetch('commerce.department')
66
- categories << category unless categories.include?(category)
67
- end
68
-
69
- categories
132
+ sample(fetch_all('commerce.department'), num)
70
133
  end
71
134
 
72
135
  def merge_categories(categories)
@@ -165,9 +165,7 @@ module Faker
165
165
  def spanish_organisation_number
166
166
  # Valid leading character: A, B, C, D, E, F, G, H, J, N, P, Q, R, S, U, V, W
167
167
  # 7 digit numbers
168
- letters = %w[A B C D E F G H J N P Q R S U V W]
169
- base = [sample(letters), format('%07d', rand(10**7))].join
170
- base
168
+ [sample(self::ULetters), format('%07d', rand(10**7))].join
171
169
  end
172
170
 
173
171
  ##
@@ -399,6 +397,11 @@ module Faker
399
397
  formatted ? format('%s.%s.%s/%s-%s', *number.scan(/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/).flatten) : number
400
398
  end
401
399
 
400
+ # Get a random Russian tax number.
401
+ def russian_tax_number(region: nil, type: :legal)
402
+ inn_number(region, type)
403
+ end
404
+
402
405
  ##
403
406
  # Produces a company sic code.
404
407
  #
@@ -491,6 +494,40 @@ module Faker
491
494
  end
492
495
  sum
493
496
  end
497
+
498
+ # rubocop:disable Style/AsciiComments
499
+ #
500
+ # For more on Russian tax number algorithm here:
501
+ # https://ru.wikipedia.org/wiki/Идентификационный_номер_налогоплательщика#Вычисление_контрольных_цифр
502
+ #
503
+ # Range of regions:
504
+ # https://ru.wikipedia.org/wiki/Коды_субъектов_Российской_Федерации
505
+ #
506
+ # rubocop:enable Style/AsciiComments
507
+ def inn_number(region, type)
508
+ n10 = [2, 4, 10, 3, 5, 9, 4, 6, 8]
509
+ n11 = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
510
+ n12 = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
511
+
512
+ region = format('%.2d', rand(0o1..92)) if region.nil?
513
+ checksum = if type == :legal
514
+ number = region.to_s + rand(1_000_000..9_999_999).to_s
515
+ inn_checksum(n10, number)
516
+ else
517
+ number = region.to_s + rand(10_000_000..99_999_999).to_s
518
+ inn_checksum(n11, number) + inn_checksum(n12, number + inn_checksum(n11, number))
519
+ end
520
+
521
+ number + checksum
522
+ end
523
+
524
+ def inn_checksum(factor, number)
525
+ (
526
+ factor.map.with_index.reduce(0) do |v, i|
527
+ v + i[0] * number[i[1]].to_i
528
+ end % 11 % 10
529
+ ).to_s
530
+ end
494
531
  end
495
532
  end
496
533
  end
@@ -3,62 +3,197 @@
3
3
  module Faker
4
4
  class Compass < Base
5
5
  class << self
6
+ ##
7
+ # Produces a random cardinal.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::Compass.cardinal #=> "north"
13
+ #
14
+ # @faker.version 1.8.0
6
15
  def cardinal
7
16
  fetch('compass.cardinal.word')
8
17
  end
9
18
 
19
+ ##
20
+ # Produces a random ordinal.
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::Compass.ordinal #=> "northwest"
26
+ #
27
+ # @faker.version 1.8.0
10
28
  def ordinal
11
29
  fetch('compass.ordinal.word')
12
30
  end
13
31
 
32
+ ##
33
+ # Produces a random half wind.
34
+ #
35
+ # @return [String]
36
+ #
37
+ # @example
38
+ # Faker::Compass.half_wind #=> "north-northwest"
39
+ #
40
+ # @faker.version 1.8.0
14
41
  def half_wind
15
42
  fetch('compass.half-wind.word')
16
43
  end
17
44
 
45
+ ##
46
+ # Produces a random quarter wind.
47
+ #
48
+ # @return [String]
49
+ #
50
+ # @example
51
+ # Faker::Compass.quarter_wind #=> "north by west"
52
+ #
53
+ # @faker.version 1.8.0
18
54
  def quarter_wind
19
55
  fetch('compass.quarter-wind.word')
20
56
  end
21
57
 
58
+ ##
59
+ # Produces a random direction.
60
+ #
61
+ # @return [String]
62
+ #
63
+ # @example
64
+ # Faker::Compass.direction #=> "southeast"
65
+ #
66
+ # @faker.version 1.8.0
22
67
  def direction
23
68
  parse('compass.direction')
24
69
  end
25
70
 
71
+ ##
72
+ # Produces a random abbreviation.
73
+ #
74
+ # @return [String]
75
+ #
76
+ # @example
77
+ # Faker::Compass.abbreviation #=> "NEbN"
78
+ #
79
+ # @faker.version 1.8.0
26
80
  def abbreviation
27
81
  parse('compass.abbreviation')
28
82
  end
29
83
 
84
+ ##
85
+ # Produces a random azimuth.
86
+ #
87
+ # @return [String]
88
+ #
89
+ # @example
90
+ # Faker::Compass.azimuth #=> "168.75"
91
+ #
92
+ # @faker.version 1.8.0
30
93
  def azimuth
31
94
  parse('compass.azimuth')
32
95
  end
33
96
 
97
+ ##
98
+ # Produces a random cardinal abbreviation.
99
+ #
100
+ # @return [String]
101
+ #
102
+ # @example
103
+ # Faker::Compass.cardinal_abbreviation #=> "N"
104
+ #
105
+ # @faker.version 1.8.0
34
106
  def cardinal_abbreviation
35
107
  fetch('compass.cardinal.abbreviation')
36
108
  end
37
109
 
110
+ ##
111
+ # Produces a random ordinal abbreviation.
112
+ #
113
+ # @return [String]
114
+ #
115
+ # @example
116
+ # Faker::Compass.ordinal_abbreviation #=> "SW"
117
+ #
118
+ # @faker.version 1.8.0
38
119
  def ordinal_abbreviation
39
120
  fetch('compass.ordinal.abbreviation')
40
121
  end
41
122
 
123
+ ##
124
+ # Produces a random half wind abbreviation.
125
+ #
126
+ # @return [String]
127
+ #
128
+ # @example
129
+ # Faker::Compass.half_wind_abbreviation #=> "NNE"
130
+ #
131
+ # @faker.version 1.8.0
42
132
  def half_wind_abbreviation
43
133
  fetch('compass.half-wind.abbreviation')
44
134
  end
45
135
 
136
+ ##
137
+ # Produces a random quarter wind abbreviation.
138
+ #
139
+ # @return [String]
140
+ #
141
+ # @example
142
+ # Faker::Compass.quarter_wind_abbreviation #=> "SWbS"
143
+ #
144
+ # @faker.version 1.8.0
46
145
  def quarter_wind_abbreviation
47
146
  fetch('compass.quarter-wind.abbreviation')
48
147
  end
49
148
 
149
+ ##
150
+ # Produces a random cardinal azimuth.
151
+ #
152
+ # @return [String]
153
+ #
154
+ # @example
155
+ # Faker::Compass.cardinal_azimuth #=> "90"
156
+ #
157
+ # @faker.version 1.8.0
50
158
  def cardinal_azimuth
51
159
  fetch('compass.cardinal.azimuth')
52
160
  end
53
161
 
162
+ ##
163
+ # Produces a random ordinal azimuth.
164
+ #
165
+ # @return [String]
166
+ #
167
+ # @example
168
+ # Faker::Compass.ordinal_azimuth #=> "135"
169
+ #
170
+ # @faker.version 1.8.0
54
171
  def ordinal_azimuth
55
172
  fetch('compass.ordinal.azimuth')
56
173
  end
57
174
 
175
+ ##
176
+ # Produces a random half wind azimuth.
177
+ #
178
+ # @return [String]
179
+ #
180
+ # @example
181
+ # Faker::Compass.half_wind_azimuth #=> "292.5"
182
+ #
183
+ # @faker.version 1.8.0
58
184
  def half_wind_azimuth
59
185
  fetch('compass.half-wind.azimuth')
60
186
  end
61
187
 
188
+ ##
189
+ # Produces a random quarter wind azimuth
190
+ #
191
+ # @return [String]
192
+ #
193
+ # @example
194
+ # Faker::Compass.quarter_wind_azimuth #=> "56.25"
195
+ #
196
+ # @faker.version 1.8.0
62
197
  def quarter_wind_azimuth
63
198
  fetch('compass.quarter-wind.azimuth')
64
199
  end