faker 2.1.2 → 2.2.1

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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +41 -7
  3. data/README.md +2 -2
  4. data/lib/faker.rb +22 -1
  5. data/lib/faker/books/dune.rb +12 -2
  6. data/lib/faker/books/lovecraft.rb +54 -7
  7. data/lib/faker/default/address.rb +30 -5
  8. data/lib/faker/default/alphanumeric.rb +45 -7
  9. data/lib/faker/default/app.rb +16 -1
  10. data/lib/faker/default/avatar.rb +24 -1
  11. data/lib/faker/default/bank.rb +12 -2
  12. data/lib/faker/default/boolean.rb +6 -1
  13. data/lib/faker/default/chile_rut.rb +20 -2
  14. data/lib/faker/default/code.rb +22 -3
  15. data/lib/faker/default/commerce.rb +26 -3
  16. data/lib/faker/default/company.rb +12 -2
  17. data/lib/faker/default/crypto_coin.rb +18 -3
  18. data/lib/faker/default/date.rb +48 -5
  19. data/lib/faker/default/demographic.rb +6 -1
  20. data/lib/faker/default/driving_licence.rb +20 -4
  21. data/lib/faker/default/file.rb +36 -2
  22. data/lib/faker/default/fillmurray.rb +16 -1
  23. data/lib/faker/default/finance.rb +6 -1
  24. data/lib/faker/default/hipster.rb +78 -6
  25. data/lib/faker/default/id_number.rb +12 -2
  26. data/lib/faker/default/internet.rb +124 -13
  27. data/lib/faker/default/invoice.rb +22 -3
  28. data/lib/faker/default/json.rb +26 -2
  29. data/lib/faker/default/lorem.rb +120 -10
  30. data/lib/faker/default/lorem_flickr.rb +69 -5
  31. data/lib/faker/default/lorem_pixel.rb +26 -1
  32. data/lib/faker/default/markdown.rb +10 -1
  33. data/lib/faker/default/measurement.rb +48 -8
  34. data/lib/faker/default/name.rb +6 -1
  35. data/lib/faker/default/nhs.rb +6 -1
  36. data/lib/faker/default/number.rb +81 -11
  37. data/lib/faker/default/omniauth.rb +84 -5
  38. data/lib/faker/default/phone_number.rb +6 -1
  39. data/lib/faker/default/placeholdit.rb +24 -1
  40. data/lib/faker/default/relationship.rb +6 -1
  41. data/lib/faker/default/source.rb +22 -3
  42. data/lib/faker/default/string.rb +6 -1
  43. data/lib/faker/default/stripe.rb +24 -4
  44. data/lib/faker/default/time.rb +68 -4
  45. data/lib/faker/default/twitter.rb +26 -3
  46. data/lib/faker/default/types.rb +38 -5
  47. data/lib/faker/default/vehicle.rb +22 -3
  48. data/lib/faker/default/world_cup.rb +16 -2
  49. data/lib/faker/games/dota.rb +6 -1
  50. data/lib/faker/movies/star_wars.rb +6 -1
  51. data/lib/faker/version.rb +1 -1
  52. metadata +5 -5
@@ -8,7 +8,22 @@ module Faker
8
8
  random_word =~ /\s/ ? word : random_word
9
9
  end
10
10
 
11
- def words(number: 3, supplemental: false, spaces_allowed: false)
11
+ # rubocop:disable Metrics/ParameterLists
12
+ def words(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_spaces_allowed = NOT_GIVEN, number: 3, supplemental: false, spaces_allowed: false)
13
+ # rubocop:enable Metrics/ParameterLists
14
+ if legacy_number != NOT_GIVEN
15
+ warn_with_uplevel 'Passing `number` with the 1st argument of `Hipster.words` is deprecated. Use keyword argument like `Hipster.words(number: ...)` instead.', uplevel: 1
16
+ number = legacy_number
17
+ end
18
+ if legacy_supplemental != NOT_GIVEN
19
+ warn_with_uplevel 'Passing `supplemental` with the 2nd argument of `Hipster.words` is deprecated. Use keyword argument like `Hipster.words(supplemental: ...)` instead.', uplevel: 1
20
+ supplemental = legacy_supplemental
21
+ end
22
+ if legacy_spaces_allowed != NOT_GIVEN
23
+ warn_with_uplevel 'Passing `spaces_allowed` with the 3rd argument of `Hipster.words` is deprecated. Use keyword argument like `Hipster.words(spaces_allowed: ...)` instead.', uplevel: 1
24
+ spaces_allowed = legacy_spaces_allowed
25
+ end
26
+
12
27
  resolved_num = resolve(number)
13
28
  word_list = (
14
29
  translate('faker.hipster.words') +
@@ -22,11 +37,35 @@ module Faker
22
37
  words.each_with_index { |w, i| words[i] = word if w =~ /\s/ }
23
38
  end
24
39
 
25
- def sentence(word_count: 4, supplemental: false, random_words_to_add: 6)
40
+ # rubocop:disable Metrics/ParameterLists
41
+ def sentence(legacy_word_count = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_random_words_to_add = NOT_GIVEN, word_count: 4, supplemental: false, random_words_to_add: 6)
42
+ # rubocop:enable Metrics/ParameterLists
43
+ if legacy_word_count != NOT_GIVEN
44
+ warn_with_uplevel 'Passing `word_count` with the 1st argument of `Hipster.sentence` is deprecated. Use keyword argument like `Hipster.sentence(word_count: ...)` instead.', uplevel: 1
45
+ word_count = legacy_word_count
46
+ end
47
+ if legacy_supplemental != NOT_GIVEN
48
+ warn_with_uplevel 'Passing `supplemental` with the 2nd argument of `Hipster.sentence` is deprecated. Use keyword argument like `Hipster.sentence(supplemental: ...)` instead.', uplevel: 1
49
+ supplemental = legacy_supplemental
50
+ end
51
+ if legacy_random_words_to_add != NOT_GIVEN
52
+ warn_with_uplevel 'Passing `random_words_to_add` with the 3rd argument of `Hipster.sentence` is deprecated. Use keyword argument like `Hipster.sentence(random_words_to_add: ...)` instead.', uplevel: 1
53
+ random_words_to_add = legacy_random_words_to_add
54
+ end
55
+
26
56
  words(number: word_count + rand(random_words_to_add.to_i).to_i, supplemental: supplemental, spaces_allowed: true).join(' ').capitalize + '.'
27
57
  end
28
58
 
29
- def sentences(number: 3, supplemental: false)
59
+ def sentences(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
60
+ if legacy_number != NOT_GIVEN
61
+ warn_with_uplevel 'Passing `number` with the 1st argument of `Hipster.sentences` is deprecated. Use keyword argument like `Hipster.sentences(number: ...)` instead.', uplevel: 1
62
+ number = legacy_number
63
+ end
64
+ if legacy_supplemental != NOT_GIVEN
65
+ warn_with_uplevel 'Passing `supplemental` with the 2nd argument of `Hipster.sentences` is deprecated. Use keyword argument like `Hipster.sentences(supplemental: ...)` instead.', uplevel: 1
66
+ supplemental = legacy_supplemental
67
+ end
68
+
30
69
  [].tap do |sentences|
31
70
  1.upto(resolve(number)) do
32
71
  sentences << sentence(word_count: 3, supplemental: supplemental)
@@ -34,11 +73,35 @@ module Faker
34
73
  end
35
74
  end
36
75
 
37
- def paragraph(sentence_count: 3, supplemental: false, random_sentences_to_add: 3)
76
+ # rubocop:disable Metrics/ParameterLists
77
+ def paragraph(legacy_sentence_count = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_random_sentences_to_add = NOT_GIVEN, sentence_count: 3, supplemental: false, random_sentences_to_add: 3)
78
+ # rubocop:enable Metrics/ParameterLists
79
+ if legacy_sentence_count != NOT_GIVEN
80
+ warn_with_uplevel 'Passing `sentence_count` with the 1st argument of `Hipster.paragraph` is deprecated. Use keyword argument like `Hipster.paragraph(sentence_count: ...)` instead.', uplevel: 1
81
+ sentence_count = legacy_sentence_count
82
+ end
83
+ if legacy_supplemental != NOT_GIVEN
84
+ warn_with_uplevel 'Passing `supplemental` with the 2nd argument of `Hipster.paragraph` is deprecated. Use keyword argument like `Hipster.paragraph(supplemental: ...)` instead.', uplevel: 1
85
+ supplemental = legacy_supplemental
86
+ end
87
+ if legacy_random_sentences_to_add != NOT_GIVEN
88
+ warn_with_uplevel 'Passing `random_sentences_to_add` with the 3rd argument of `Hipster.paragraph` is deprecated. Use keyword argument like `Hipster.paragraph(random_sentences_to_add: ...)` instead.', uplevel: 1
89
+ random_sentences_to_add = legacy_random_sentences_to_add
90
+ end
91
+
38
92
  sentences(number: resolve(sentence_count) + rand(random_sentences_to_add.to_i).to_i, supplemental: supplemental).join(' ')
39
93
  end
40
94
 
41
- def paragraphs(number: 3, supplemental: false)
95
+ def paragraphs(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
96
+ if legacy_number != NOT_GIVEN
97
+ warn_with_uplevel 'Passing `number` with the 1st argument of `Hipster.paragraphs` is deprecated. Use keyword argument like `Hipster.paragraphs(number: ...)` instead.', uplevel: 1
98
+ number = legacy_number
99
+ end
100
+ if legacy_supplemental != NOT_GIVEN
101
+ warn_with_uplevel 'Passing `supplemental` with the 2nd argument of `Hipster.paragraphs` is deprecated. Use keyword argument like `Hipster.paragraphs(supplemental: ...)` instead.', uplevel: 1
102
+ supplemental = legacy_supplemental
103
+ end
104
+
42
105
  [].tap do |paragraphs|
43
106
  1.upto(resolve(number)) do
44
107
  paragraphs << paragraph(sentence_count: 3, supplemental: supplemental)
@@ -46,7 +109,16 @@ module Faker
46
109
  end
47
110
  end
48
111
 
49
- def paragraph_by_chars(characters: 256, supplemental: false)
112
+ def paragraph_by_chars(legacy_characters = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, characters: 256, supplemental: false)
113
+ if legacy_characters != NOT_GIVEN
114
+ warn_with_uplevel 'Passing `characters` with the 1st argument of `Hipster.paragraph_by_chars` is deprecated. Use keyword argument like `Hipster.paragraph_by_chars(characters: ...)` instead.', uplevel: 1
115
+ characters = legacy_characters
116
+ end
117
+ if legacy_supplemental != NOT_GIVEN
118
+ warn_with_uplevel 'Passing `supplemental` with the 2nd argument of `Hipster.paragraph_by_chars` is deprecated. Use keyword argument like `Hipster.paragraph_by_chars(supplemental: ...)` instead.', uplevel: 1
119
+ supplemental = legacy_supplemental
120
+ end
121
+
50
122
  paragraph = paragraph(sentence_count: 3, supplemental: supplemental)
51
123
 
52
124
  paragraph += ' ' + paragraph(sentence_count: 3, supplemental: supplemental) while paragraph.length < characters
@@ -78,7 +78,12 @@ module Faker
78
78
  [id_number, south_african_id_checksum_digit(id_number)].join
79
79
  end
80
80
 
81
- def brazilian_citizen_number(formatted: false)
81
+ def brazilian_citizen_number(legacy_formatted = NOT_GIVEN, formatted: false)
82
+ if legacy_formatted != NOT_GIVEN
83
+ warn_with_uplevel 'Passing `formatted` with the 1st argument of `IDNumber.brazilian_citizen_number` is deprecated. Use keyword argument like `IDNumber.brazilian_citizen_number(formatted: ...)` instead.', uplevel: 1
84
+ formatted = legacy_formatted
85
+ end
86
+
82
87
  digits = Faker::Number.leading_zero_number(digits: 9) until digits&.match(/(\d)((?!\1)\d)+/)
83
88
  first_digit = brazilian_citizen_number_checksum_digit(digits)
84
89
  second_digit = brazilian_citizen_number_checksum_digit(digits + first_digit)
@@ -88,7 +93,12 @@ module Faker
88
93
 
89
94
  alias brazilian_cpf brazilian_citizen_number
90
95
 
91
- def brazilian_id(formatted: false)
96
+ def brazilian_id(legacy_formatted = NOT_GIVEN, formatted: false)
97
+ if legacy_formatted != NOT_GIVEN
98
+ warn_with_uplevel 'Passing `formatted` with the 1st argument of `IDNumber.brazilian_id` is deprecated. Use keyword argument like `IDNumber.brazilian_id(formatted: ...)` instead.', uplevel: 1
99
+ formatted = legacy_formatted
100
+ end
101
+
92
102
  digits = Faker::Number.between(to: BRAZILIAN_ID_FROM, from: BRAZILIAN_ID_TO).to_s
93
103
  check_digit = brazilian_id_checksum_digit(digits)
94
104
  number = [digits, check_digit].join
@@ -3,7 +3,16 @@
3
3
  module Faker
4
4
  class Internet < Base
5
5
  class << self
6
- def email(name: nil, separators: nil)
6
+ def email(legacy_name = NOT_GIVEN, legacy_separators = NOT_GIVEN, name: nil, separators: nil)
7
+ if legacy_name != NOT_GIVEN
8
+ warn_with_uplevel 'Passing `name` with the 1st argument of `Internet.email` is deprecated. Use keyword argument like `Internet.email(name: ...)` instead.', uplevel: 1
9
+ name = legacy_name
10
+ end
11
+ if legacy_separators != NOT_GIVEN
12
+ warn_with_uplevel 'Passing `separators` with the 2nd argument of `Internet.email` is deprecated. Use keyword argument like `Internet.email(separators: ...)` instead.', uplevel: 1
13
+ separators = legacy_separators
14
+ end
15
+
7
16
  if separators
8
17
  [username(specifier: name, separators: separators), domain_name].join('@')
9
18
  else
@@ -11,15 +20,34 @@ module Faker
11
20
  end
12
21
  end
13
22
 
14
- def free_email(name: nil)
23
+ def free_email(legacy_name = NOT_GIVEN, name: nil)
24
+ if legacy_name != NOT_GIVEN
25
+ warn_with_uplevel 'Passing `name` with the 1st argument of `Internet.free_email` is deprecated. Use keyword argument like `Internet.free_email(name: ...)` instead.', uplevel: 1
26
+ name = legacy_name
27
+ end
28
+
15
29
  [username(specifier: name), fetch('internet.free_email')].join('@')
16
30
  end
17
31
 
18
- def safe_email(name: nil)
32
+ def safe_email(legacy_name = NOT_GIVEN, name: nil)
33
+ if legacy_name != NOT_GIVEN
34
+ warn_with_uplevel 'Passing `name` with the 1st argument of `Internet.safe_email` is deprecated. Use keyword argument like `Internet.safe_email(name: ...)` instead.', uplevel: 1
35
+ name = legacy_name
36
+ end
37
+
19
38
  [username(specifier: name), 'example.' + sample(%w[org com net])].join('@')
20
39
  end
21
40
 
22
- def username(specifier: nil, separators: %w[. _])
41
+ def username(legacy_specifier = NOT_GIVEN, legacy_separators = NOT_GIVEN, specifier: nil, separators: %w[. _])
42
+ if legacy_specifier != NOT_GIVEN
43
+ warn_with_uplevel 'Passing `specifier` with the 1st argument of `Internet.username` is deprecated. Use keyword argument like `Internet.username(specifier: ...)` instead.', uplevel: 1
44
+ specifier = legacy_specifier
45
+ end
46
+ if legacy_separators != NOT_GIVEN
47
+ warn_with_uplevel 'Passing `separators` with the 2nd argument of `Internet.username` is deprecated. Use keyword argument like `Internet.username(separators: ...)` instead.', uplevel: 1
48
+ separators = legacy_separators
49
+ end
50
+
23
51
  with_locale(:en) do
24
52
  return shuffle(specifier.scan(/[[:word:]]+/)).join(sample(separators)).downcase if specifier.respond_to?(:scan)
25
53
 
@@ -55,8 +83,44 @@ module Faker
55
83
  end
56
84
  end
57
85
 
58
- def password(min_length: 8, max_length: 16, mix_case: true, special_characters: false)
59
- temp = Lorem.characters(number: min_length)
86
+ ##
87
+ # Produces a randomized string of characters
88
+ #
89
+ # @param [Integer] min_length
90
+ # @param [Integer] max_length
91
+ # @param [Boolean] mix_case
92
+ # @param [Boolean] special_characters
93
+ #
94
+ # @return [String]
95
+ #
96
+ # @example Faker::Internet.password #=> "Vg5mSvY1UeRg7"
97
+ # @example Faker::Internet.password(min_length: 8) #=> "YfGjIk0hGzDqS0"
98
+ # @example Faker::Internet.password(min_length: 10, max_length: 20) #=> "EoC9ShWd1hWq4vBgFw"
99
+ # @example Faker::Internet.password(min_length: 10, max_length: 20, mix_case: true) #=> "3k5qS15aNmG"
100
+ # @example Faker::Internet.password(min_length: 10, max_length: 20, mix_case: true, special_characters: true) #=> "*%NkOnJsH4"
101
+ #
102
+ # @faker.version 2.1.3
103
+ # rubocop:disable Metrics/ParameterLists
104
+ def password(legacy_min_length = NOT_GIVEN, legacy_max_length = NOT_GIVEN, legacy_mix_case = NOT_GIVEN, legacy_special_characters = NOT_GIVEN, min_length: 8, max_length: 16, mix_case: true, special_characters: false)
105
+ if legacy_min_length != NOT_GIVEN
106
+ warn_with_uplevel 'Passing `min_length` with the 1st argument of `Internet.password` is deprecated. Use keyword argument like `Internet.password(min_length: ...)` instead.', uplevel: 1
107
+ min_length = legacy_min_length
108
+ end
109
+ if legacy_max_length != NOT_GIVEN
110
+ warn_with_uplevel 'Passing `max_length` with the 2nd argument of `Internet.password` is deprecated. Use keyword argument like `Internet.password(max_length: ...)` instead.', uplevel: 1
111
+ max_length = legacy_max_length
112
+ end
113
+ if legacy_mix_case != NOT_GIVEN
114
+ warn_with_uplevel 'Passing `mix_case` with the 3rd argument of `Internet.password` is deprecated. Use keyword argument like `Internet.password(mix_case: ...)` instead.', uplevel: 1
115
+ mix_case = legacy_mix_case
116
+ end
117
+ if legacy_special_characters != NOT_GIVEN
118
+ warn_with_uplevel 'Passing `special_characters` with the 4th argument of `Internet.password` is deprecated. Use keyword argument like `Internet.password(special_characters: ...)` instead.', uplevel: 1
119
+ special_characters = legacy_special_characters
120
+ end
121
+
122
+ min_alpha = mix_case ? 2 : 0
123
+ temp = Lorem.characters(number: min_length, min_alpha: min_alpha)
60
124
  diff_length = max_length - min_length
61
125
 
62
126
  if diff_length.positive?
@@ -65,8 +129,12 @@ module Faker
65
129
  end
66
130
 
67
131
  if mix_case
132
+ alpha_count = 0
68
133
  temp.chars.each_with_index do |char, index|
69
- temp[index] = char.upcase if index.even?
134
+ if char =~ /[[:alpha:]]/
135
+ temp[index] = char.upcase if alpha_count.even?
136
+ alpha_count += 1
137
+ end
70
138
  end
71
139
  end
72
140
 
@@ -80,7 +148,12 @@ module Faker
80
148
  temp
81
149
  end
82
150
 
83
- def domain_name(subdomain: false)
151
+ def domain_name(legacy_subdomain = NOT_GIVEN, subdomain: false)
152
+ if legacy_subdomain != NOT_GIVEN
153
+ warn_with_uplevel 'Passing `subdomain` with the 1st argument of `Internet.domain_name` is deprecated. Use keyword argument like `Internet.domain_name(subdomain: ...)` instead.', uplevel: 1
154
+ subdomain = legacy_subdomain
155
+ end
156
+
84
157
  with_locale(:en) do
85
158
  domain_elements = [Char.prepare(domain_word), domain_suffix]
86
159
  domain_elements.unshift(Char.prepare(domain_word)) if subdomain
@@ -88,7 +161,12 @@ module Faker
88
161
  end
89
162
  end
90
163
 
91
- def fix_umlauts(string: '')
164
+ def fix_umlauts(legacy_string = NOT_GIVEN, string: '')
165
+ if legacy_string != NOT_GIVEN
166
+ warn_with_uplevel 'Passing `string` with the 1st argument of `Internet.fix_umlauts` is deprecated. Use keyword argument like `Internet.fix_umlauts(string: ...)` instead.', uplevel: 1
167
+ string = legacy_string
168
+ end
169
+
92
170
  Char.fix_umlauts(string)
93
171
  end
94
172
 
@@ -100,7 +178,12 @@ module Faker
100
178
  fetch('internet.domain_suffix')
101
179
  end
102
180
 
103
- def mac_address(prefix: '')
181
+ def mac_address(legacy_prefix = NOT_GIVEN, prefix: '')
182
+ if legacy_prefix != NOT_GIVEN
183
+ warn_with_uplevel 'Passing `prefix` with the 1st argument of `Internet.mac_address` is deprecated. Use keyword argument like `Internet.mac_address(prefix: ...)` instead.', uplevel: 1
184
+ prefix = legacy_prefix
185
+ end
186
+
104
187
  prefix_digits = prefix.split(':').map { |d| d.to_i(16) }
105
188
  address_digits = Array.new((6 - prefix_digits.size)) { rand(256) }
106
189
  (prefix_digits + address_digits).map { |d| format('%02x', d) }.join(':')
@@ -174,11 +257,34 @@ module Faker
174
257
  "#{ip_v6_address}/#{rand(1..127)}"
175
258
  end
176
259
 
177
- def url(host: domain_name, path: "/#{username}", scheme: 'http')
260
+ def url(legacy_host = NOT_GIVEN, legacy_path = NOT_GIVEN, legacy_scheme = NOT_GIVEN, host: domain_name, path: "/#{username}", scheme: 'http')
261
+ # rubocop:enable Metrics/ParameterLists
262
+ if legacy_host != NOT_GIVEN
263
+ warn_with_uplevel 'Passing `host` with the 1st argument of `Internet.url` is deprecated. Use keyword argument like `Internet.url(host: ...)` instead.', uplevel: 1
264
+ host = legacy_host
265
+ end
266
+ if legacy_path != NOT_GIVEN
267
+ warn_with_uplevel 'Passing `path` with the 2nd argument of `Internet.url` is deprecated. Use keyword argument like `Internet.url(path: ...)` instead.', uplevel: 1
268
+ path = legacy_path
269
+ end
270
+ if legacy_scheme != NOT_GIVEN
271
+ warn_with_uplevel 'Passing `scheme` with the 3rd argument of `Internet.url` is deprecated. Use keyword argument like `Internet.url(scheme: ...)` instead.', uplevel: 1
272
+ scheme = legacy_scheme
273
+ end
274
+
178
275
  "#{scheme}://#{host}#{path}"
179
276
  end
180
277
 
181
- def slug(words: nil, glue: nil)
278
+ def slug(legacy_words = NOT_GIVEN, legacy_glue = NOT_GIVEN, words: nil, glue: nil)
279
+ if legacy_words != NOT_GIVEN
280
+ warn_with_uplevel 'Passing `words` with the 1st argument of `Internet.slug` is deprecated. Use keyword argument like `Internet.slug(words: ...)` instead.', uplevel: 1
281
+ words = legacy_words
282
+ end
283
+ if legacy_glue != NOT_GIVEN
284
+ warn_with_uplevel 'Passing `glue` with the 2nd argument of `Internet.slug` is deprecated. Use keyword argument like `Internet.slug(glue: ...)` instead.', uplevel: 1
285
+ glue = legacy_glue
286
+ end
287
+
182
288
  glue ||= sample(%w[- _])
183
289
  (words || Faker::Lorem.words(number: 2).join(' ')).delete(',.').gsub(' ', glue).downcase
184
290
  end
@@ -187,7 +293,12 @@ module Faker
187
293
  shuffle(rand(16**64).to_s(16).rjust(64, '0').chars.to_a).join
188
294
  end
189
295
 
190
- def user_agent(vendor: nil)
296
+ def user_agent(legacy_vendor = NOT_GIVEN, vendor: nil)
297
+ if legacy_vendor != NOT_GIVEN
298
+ warn_with_uplevel 'Passing `vendor` with the 1st argument of `Internet.user_agent` is deprecated. Use keyword argument like `Internet.user_agent(vendor: ...)` instead.', uplevel: 1
299
+ vendor = legacy_vendor
300
+ end
301
+
191
302
  agent_hash = translate('faker.internet.user_agent')
192
303
  agents = vendor.respond_to?(:to_sym) && agent_hash[vendor.to_sym] || agent_hash[sample(agent_hash.keys)]
193
304
  sample(agents)
@@ -6,13 +6,27 @@ module Faker
6
6
 
7
7
  class << self
8
8
  # Generate random amount between values with 2 decimals
9
- def amount_between(from: 0, to: 0)
9
+ def amount_between(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, from: 0, to: 0)
10
+ if legacy_from != NOT_GIVEN
11
+ warn_with_uplevel 'Passing `from` with the 1st argument of `Invoice.amount_between` is deprecated. Use keyword argument like `Invoice.amount_between(from: ...)` instead.', uplevel: 1
12
+ from = legacy_from
13
+ end
14
+ if legacy_to != NOT_GIVEN
15
+ warn_with_uplevel 'Passing `to` with the 2nd argument of `Invoice.amount_between` is deprecated. Use keyword argument like `Invoice.amount_between(to: ...)` instead.', uplevel: 1
16
+ to = legacy_to
17
+ end
18
+
10
19
  Faker::Base.rand_in_range(from, to).round(2)
11
20
  end
12
21
 
13
22
  # International bank slip reference https://en.wikipedia.org/wiki/Creditor_Reference
14
23
  # ref is optional so that we can create unit tests
15
- def creditor_reference(ref: '')
24
+ def creditor_reference(legacy_ref = NOT_GIVEN, ref: '')
25
+ if legacy_ref != NOT_GIVEN
26
+ warn_with_uplevel 'Passing `ref` with the 1st argument of `Invoice.creditor_reference` is deprecated. Use keyword argument like `Invoice.creditor_reference(ref: ...)` instead.', uplevel: 1
27
+ ref = legacy_ref
28
+ end
29
+
16
30
  ref = reference if ref.empty?
17
31
 
18
32
  'RF' + iban_checksum('RF', ref) + ref
@@ -20,7 +34,12 @@ module Faker
20
34
 
21
35
  # Payment references have some rules in certain countries
22
36
  # ref is optional so that we can create unit tests
23
- def reference(ref: '')
37
+ def reference(legacy_ref = NOT_GIVEN, ref: '')
38
+ if legacy_ref != NOT_GIVEN
39
+ warn_with_uplevel 'Passing `ref` with the 1st argument of `Invoice.reference` is deprecated. Use keyword argument like `Invoice.reference(ref: ...)` instead.', uplevel: 1
40
+ ref = legacy_ref
41
+ end
42
+
24
43
  pattern = fetch('invoice.reference.pattern')
25
44
 
26
45
  ref = Base.regexify(/#{pattern}/) if ref.empty?
@@ -3,7 +3,16 @@ module Faker
3
3
  require 'json'
4
4
 
5
5
  class << self
6
- def shallow_json(width: 3, options: { key: 'Name.first_name', value: 'Name.first_name' })
6
+ def shallow_json(legacy_width = NOT_GIVEN, legacy_options = NOT_GIVEN, width: 3, options: { key: 'Name.first_name', value: 'Name.first_name' })
7
+ if legacy_width != NOT_GIVEN
8
+ warn_with_uplevel 'Passing `width` with the 1st argument of `Json.shallow_json` is deprecated. Use keyword argument like `Json.shallow_json(width: ...)` instead.', uplevel: 1
9
+ width = legacy_width
10
+ end
11
+ if legacy_options != NOT_GIVEN
12
+ warn_with_uplevel 'Passing `options` with the 2nd argument of `Json.shallow_json` is deprecated. Use keyword argument like `Json.shallow_json(options: ...)` instead.', uplevel: 1
13
+ options = legacy_options
14
+ end
15
+
7
16
  options[:key] = 'Faker::' + options[:key]
8
17
  options[:value] = 'Faker::' + options[:value]
9
18
 
@@ -11,7 +20,22 @@ module Faker
11
20
  JSON.generate(hash)
12
21
  end
13
22
 
14
- def add_depth_to_json(json: shallow_json, width: 3, options: { key: 'Name.first_name', value: 'Name.first_name' })
23
+ # rubocop:disable Metrics/ParameterLists
24
+ def add_depth_to_json(legacy_json = NOT_GIVEN, legacy_width = NOT_GIVEN, legacy_options = NOT_GIVEN, json: shallow_json, width: 3, options: { key: 'Name.first_name', value: 'Name.first_name' })
25
+ # rubocop:enable Metrics/ParameterLists
26
+ if legacy_json != NOT_GIVEN
27
+ warn_with_uplevel 'Passing `json` with the 1st argument of `Json.add_depth_to_json` is deprecated. Use keyword argument like `Json.add_depth_to_json(json: ...)` instead.', uplevel: 1
28
+ json = legacy_json
29
+ end
30
+ if legacy_width != NOT_GIVEN
31
+ warn_with_uplevel 'Passing `width` with the 2nd argument of `Json.add_depth_to_json` is deprecated. Use keyword argument like `Json.add_depth_to_json(width: ...)` instead.', uplevel: 1
32
+ width = legacy_width
33
+ end
34
+ if legacy_options != NOT_GIVEN
35
+ warn_with_uplevel 'Passing `options` with the 3rd argument of `Json.add_depth_to_json` is deprecated. Use keyword argument like `Json.add_depth_to_json(options: ...)` instead.', uplevel: 1
36
+ options = legacy_options
37
+ end
38
+
15
39
  options[:key] = 'Faker::' + options[:key]
16
40
  options[:value] = 'Faker::' + options[:value]
17
41
 
@@ -8,7 +8,16 @@ module Faker
8
8
  sample(translate('faker.lorem.words'))
9
9
  end
10
10
 
11
- def words(number: 3, supplemental: false)
11
+ def words(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
12
+ if legacy_number != NOT_GIVEN
13
+ warn_with_uplevel 'Passing `number` with the 1st argument of `Lorem.words` is deprecated. Use keyword argument like `Lorem.words(number: ...)` instead.', uplevel: 1
14
+ number = legacy_number
15
+ end
16
+ if legacy_supplemental != NOT_GIVEN
17
+ warn_with_uplevel 'Passing `supplemental` with the 2nd argument of `Lorem.words` is deprecated. Use keyword argument like `Lorem.words(supplemental: ...)` instead.', uplevel: 1
18
+ supplemental = legacy_supplemental
19
+ end
20
+
12
21
  resolved_num = resolve(number)
13
22
  word_list = (
14
23
  translate('faker.lorem.words') +
@@ -22,31 +31,108 @@ module Faker
22
31
  sample(Types::CHARACTERS)
23
32
  end
24
33
 
25
- def characters(number: 255)
26
- Alphanumeric.alphanumeric(number: number)
34
+ ##
35
+ # Produces a random string of alphanumeric characters
36
+ #
37
+ # @param [Integer] number
38
+ # @param [Integer] min_alpha
39
+ # @param [Integer] min_numeric
40
+ #
41
+ # @return [String]
42
+ #
43
+ # @example Faker::Lorem.characters #=> "uw1ep04lhs0c4d931n1jmrspprf5wrj85fefue0y7y6m56b6omquh7br7dhqijwlawejpl765nb1716idmp3xnfo85v349pzy2o9rir23y2qhflwr71c1585fnynguiphkjm8p0vktwitcsm16lny7jzp9t4drwav3qmhz4yjq4k04x14gl6p148hulyqioo72tf8nwrxxcclfypz2lc58lsibgfe5w5p0xv95peafjjmm2frkhdc6duoky0aha"
44
+ # @example Faker::Lorem.characters(number: 10) #=> "ang9cbhoa8"
45
+ # @example Faker::Lorem.characters(number: 10, min_alpha: 4) #=> "ang9cbhoa8"
46
+ # @example Faker::Lorem.characters(number: 10, min_alpha: 4, min_numeric: 1) #=> "ang9cbhoa8"
47
+ #
48
+ # @faker.version 2.1.3
49
+ def characters(legacy_number = NOT_GIVEN, number: 255, min_alpha: 0, min_numeric: 0)
50
+ if legacy_number != NOT_GIVEN
51
+ warn_with_uplevel 'Passing `number` with the 1st argument of `Lorem.characters` is deprecated. Use keyword argument like `Lorem.characters(number: ...)` instead.', uplevel: 1
52
+ number = legacy_number
53
+ end
54
+
55
+ Alphanumeric.alphanumeric(number: number, min_alpha: min_alpha, min_numeric: min_numeric)
27
56
  end
28
57
 
29
58
  def multibyte
30
59
  sample(translate('faker.lorem.multibyte')).pack('C*').force_encoding('utf-8')
31
60
  end
32
61
 
33
- def sentence(word_count: 4, supplemental: false, random_words_to_add: 0)
62
+ # rubocop:disable Metrics/ParameterLists
63
+ def sentence(legacy_word_count = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_random_words_to_add = NOT_GIVEN, word_count: 4, supplemental: false, random_words_to_add: 0)
64
+ # rubocop:enable Metrics/ParameterLists
65
+ if legacy_word_count != NOT_GIVEN
66
+ warn_with_uplevel 'Passing `word_count` with the 1st argument of `Lorem.sentence` is deprecated. Use keyword argument like `Lorem.sentence(word_count: ...)` instead.', uplevel: 1
67
+ word_count = legacy_word_count
68
+ end
69
+ if legacy_supplemental != NOT_GIVEN
70
+ warn_with_uplevel 'Passing `supplemental` with the 2nd argument of `Lorem.sentence` is deprecated. Use keyword argument like `Lorem.sentence(supplemental: ...)` instead.', uplevel: 1
71
+ supplemental = legacy_supplemental
72
+ end
73
+ if legacy_random_words_to_add != NOT_GIVEN
74
+ warn_with_uplevel 'Passing `random_words_to_add` with the 3rd argument of `Lorem.sentence` is deprecated. Use keyword argument like `Lorem.sentence(random_words_to_add: ...)` instead.', uplevel: 1
75
+ random_words_to_add = legacy_random_words_to_add
76
+ end
77
+
34
78
  words(number: word_count + rand(random_words_to_add.to_i), supplemental: supplemental).join(' ').capitalize + locale_period
35
79
  end
36
80
 
37
- def sentences(number: 3, supplemental: false)
81
+ def sentences(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
82
+ if legacy_number != NOT_GIVEN
83
+ warn_with_uplevel 'Passing `number` with the 1st argument of `Lorem.sentences` is deprecated. Use keyword argument like `Lorem.sentences(number: ...)` instead.', uplevel: 1
84
+ number = legacy_number
85
+ end
86
+ if legacy_supplemental != NOT_GIVEN
87
+ warn_with_uplevel 'Passing `supplemental` with the 2nd argument of `Lorem.sentences` is deprecated. Use keyword argument like `Lorem.sentences(supplemental: ...)` instead.', uplevel: 1
88
+ supplemental = legacy_supplemental
89
+ end
90
+
38
91
  1.upto(resolve(number)).collect { sentence(word_count: 3, supplemental: supplemental) }
39
92
  end
40
93
 
41
- def paragraph(sentence_count: 3, supplemental: false, random_sentences_to_add: 0)
94
+ # rubocop:disable Metrics/ParameterLists
95
+ def paragraph(legacy_sentence_count = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_random_sentences_to_add = NOT_GIVEN, sentence_count: 3, supplemental: false, random_sentences_to_add: 0)
96
+ # rubocop:enable Metrics/ParameterLists
97
+ if legacy_sentence_count != NOT_GIVEN
98
+ warn_with_uplevel 'Passing `sentence_count` with the 1st argument of `Lorem.paragraph` is deprecated. Use keyword argument like `Lorem.paragraph(sentence_count: ...)` instead.', uplevel: 1
99
+ sentence_count = legacy_sentence_count
100
+ end
101
+ if legacy_supplemental != NOT_GIVEN
102
+ warn_with_uplevel 'Passing `supplemental` with the 2nd argument of `Lorem.paragraph` is deprecated. Use keyword argument like `Lorem.paragraph(supplemental: ...)` instead.', uplevel: 1
103
+ supplemental = legacy_supplemental
104
+ end
105
+ if legacy_random_sentences_to_add != NOT_GIVEN
106
+ warn_with_uplevel 'Passing `random_sentences_to_add` with the 3rd argument of `Lorem.paragraph` is deprecated. Use keyword argument like `Lorem.paragraph(random_sentences_to_add: ...)` instead.', uplevel: 1
107
+ random_sentences_to_add = legacy_random_sentences_to_add
108
+ end
109
+
42
110
  sentences(number: resolve(sentence_count) + rand(random_sentences_to_add.to_i), supplemental: supplemental).join(locale_space)
43
111
  end
44
112
 
45
- def paragraphs(number: 3, supplemental: false)
113
+ def paragraphs(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
114
+ if legacy_number != NOT_GIVEN
115
+ warn_with_uplevel 'Passing `number` with the 1st argument of `Lorem.paragraphs` is deprecated. Use keyword argument like `Lorem.paragraphs(number: ...)` instead.', uplevel: 1
116
+ number = legacy_number
117
+ end
118
+ if legacy_supplemental != NOT_GIVEN
119
+ warn_with_uplevel 'Passing `supplemental` with the 2nd argument of `Lorem.paragraphs` is deprecated. Use keyword argument like `Lorem.paragraphs(supplemental: ...)` instead.', uplevel: 1
120
+ supplemental = legacy_supplemental
121
+ end
122
+
46
123
  1.upto(resolve(number)).collect { paragraph(sentence_count: 3, supplemental: supplemental) }
47
124
  end
48
125
 
49
- def paragraph_by_chars(number: 256, supplemental: false)
126
+ def paragraph_by_chars(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 256, supplemental: false)
127
+ if legacy_number != NOT_GIVEN
128
+ warn_with_uplevel 'Passing `number` with the 1st argument of `Lorem.paragraph_by_chars` is deprecated. Use keyword argument like `Lorem.paragraph_by_chars(number: ...)` instead.', uplevel: 1
129
+ number = legacy_number
130
+ end
131
+ if legacy_supplemental != NOT_GIVEN
132
+ warn_with_uplevel 'Passing `supplemental` with the 2nd argument of `Lorem.paragraph_by_chars` is deprecated. Use keyword argument like `Lorem.paragraph_by_chars(supplemental: ...)` instead.', uplevel: 1
133
+ supplemental = legacy_supplemental
134
+ end
135
+
50
136
  paragraph = paragraph(sentence_count: 3, supplemental: supplemental)
51
137
 
52
138
  paragraph += ' ' + paragraph(sentence_count: 3, supplemental: supplemental) while paragraph.length < number
@@ -54,11 +140,35 @@ module Faker
54
140
  paragraph[0...number - 1] + '.'
55
141
  end
56
142
 
57
- def question(word_count: 4, supplemental: false, random_words_to_add: 0)
143
+ # rubocop:disable Metrics/ParameterLists
144
+ def question(legacy_word_count = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_random_words_to_add = NOT_GIVEN, word_count: 4, supplemental: false, random_words_to_add: 0)
145
+ # rubocop:enable Metrics/ParameterLists
146
+ if legacy_word_count != NOT_GIVEN
147
+ warn_with_uplevel 'Passing `word_count` with the 1st argument of `Lorem.question` is deprecated. Use keyword argument like `Lorem.question(word_count: ...)` instead.', uplevel: 1
148
+ word_count = legacy_word_count
149
+ end
150
+ if legacy_supplemental != NOT_GIVEN
151
+ warn_with_uplevel 'Passing `supplemental` with the 2nd argument of `Lorem.question` is deprecated. Use keyword argument like `Lorem.question(supplemental: ...)` instead.', uplevel: 1
152
+ supplemental = legacy_supplemental
153
+ end
154
+ if legacy_random_words_to_add != NOT_GIVEN
155
+ warn_with_uplevel 'Passing `random_words_to_add` with the 3rd argument of `Lorem.question` is deprecated. Use keyword argument like `Lorem.question(random_words_to_add: ...)` instead.', uplevel: 1
156
+ random_words_to_add = legacy_random_words_to_add
157
+ end
158
+
58
159
  words(number: word_count + rand(random_words_to_add), supplemental: supplemental).join(' ').capitalize + locale_question_mark
59
160
  end
60
161
 
61
- def questions(number: 3, supplemental: false)
162
+ def questions(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
163
+ if legacy_number != NOT_GIVEN
164
+ warn_with_uplevel 'Passing `number` with the 1st argument of `Lorem.questions` is deprecated. Use keyword argument like `Lorem.questions(number: ...)` instead.', uplevel: 1
165
+ number = legacy_number
166
+ end
167
+ if legacy_supplemental != NOT_GIVEN
168
+ warn_with_uplevel 'Passing `supplemental` with the 2nd argument of `Lorem.questions` is deprecated. Use keyword argument like `Lorem.questions(supplemental: ...)` instead.', uplevel: 1
169
+ supplemental = legacy_supplemental
170
+ end
171
+
62
172
  1.upto(resolve(number)).collect { question(word_count: 3, supplemental: supplemental) }
63
173
  end
64
174