faker 2.0.0 → 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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +72 -1
- data/README.md +3 -3
- data/lib/faker.rb +22 -1
- data/lib/faker/books/dune.rb +12 -2
- data/lib/faker/books/lovecraft.rb +54 -7
- data/lib/faker/default/address.rb +30 -5
- data/lib/faker/default/alphanumeric.rb +45 -7
- data/lib/faker/default/app.rb +16 -1
- data/lib/faker/default/avatar.rb +24 -1
- data/lib/faker/default/bank.rb +12 -2
- data/lib/faker/default/boolean.rb +6 -1
- data/lib/faker/default/chile_rut.rb +20 -2
- data/lib/faker/default/code.rb +22 -3
- data/lib/faker/default/commerce.rb +26 -3
- data/lib/faker/default/company.rb +12 -2
- data/lib/faker/default/crypto_coin.rb +18 -3
- data/lib/faker/default/date.rb +48 -5
- data/lib/faker/default/demographic.rb +6 -1
- data/lib/faker/default/driving_licence.rb +20 -4
- data/lib/faker/default/file.rb +36 -2
- data/lib/faker/default/fillmurray.rb +16 -1
- data/lib/faker/default/finance.rb +6 -1
- data/lib/faker/default/hipster.rb +78 -6
- data/lib/faker/default/id_number.rb +50 -3
- data/lib/faker/default/internet.rb +124 -13
- data/lib/faker/default/invoice.rb +22 -3
- data/lib/faker/default/json.rb +26 -2
- data/lib/faker/default/lorem.rb +120 -10
- data/lib/faker/default/lorem_flickr.rb +69 -5
- data/lib/faker/default/lorem_pixel.rb +26 -1
- data/lib/faker/default/markdown.rb +10 -1
- data/lib/faker/default/measurement.rb +48 -8
- data/lib/faker/default/name.rb +6 -1
- data/lib/faker/default/nhs.rb +6 -1
- data/lib/faker/default/number.rb +81 -11
- data/lib/faker/default/omniauth.rb +84 -5
- data/lib/faker/default/phone_number.rb +6 -1
- data/lib/faker/default/placeholdit.rb +24 -1
- data/lib/faker/default/relationship.rb +6 -1
- data/lib/faker/default/source.rb +22 -3
- data/lib/faker/default/string.rb +6 -1
- data/lib/faker/default/stripe.rb +24 -4
- data/lib/faker/default/time.rb +68 -4
- data/lib/faker/default/twitter.rb +26 -3
- data/lib/faker/default/types.rb +38 -5
- data/lib/faker/default/vehicle.rb +22 -3
- data/lib/faker/default/world_cup.rb +16 -2
- data/lib/faker/games/dota.rb +6 -1
- data/lib/faker/movies/star_wars.rb +6 -1
- data/lib/faker/version.rb +1 -1
- data/lib/locales/en.yml +0 -47
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5587b3da998c6565466a5886c285dc46218d0c6be32bbc9d1578b2493ccca0a
|
4
|
+
data.tar.gz: da07c93a781ccaf2f57b79a220f05905913b11261d6c324ab54e63f7c4f757d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5e2770457c5eabde0476cbb1a6cd320c633ceb0dbb734636569dbd84471df2d85f47f1664f597a65ccfedda1af67340904b2cf64e3798edfa83481d11015a39
|
7
|
+
data.tar.gz: 16721c3cd11278e59c6df91b5a99f507c938e705d1eb9e20bd2fb26811819b5c781abf639d7ac8ab79b11ee3d7fea56c7d7ef876054c177e597116a967c41375
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,77 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
-
## [v2.
|
3
|
+
## [v2.2.1](https://github.com/faker-ruby/faker/tree/v2.2.1) (2019-30-08)
|
4
|
+
|
5
|
+
## Bug/Fixes
|
6
|
+
|
7
|
+
- [PR #1712](https://github.com/faker-ruby/faker/pull/1712) Fix number(digits: 1) always returns 0 [@ianlet](https://github.com/ianlet)
|
8
|
+
|
9
|
+
`Faker::Number.number(digits: 1)` was always returning `0`.
|
10
|
+
|
11
|
+
Fixing number with one digit caused the test_insignificant_zero to fail. As it seemed that the behavior tested by test_insignificant_zero was already covered by test_number and test_decimal, we removed it to prevent duplication.
|
12
|
+
|
13
|
+
## [v2.2.0](https://github.com/faker-ruby/faker/tree/v2.2.0) (2019-25-08)
|
14
|
+
|
15
|
+
## Deprecate
|
16
|
+
|
17
|
+
- [PR #1698](https://github.com/faker-ruby/faker/pull/1698) Add warn for positional arguments when using Faker 2.0 [@koic](https://github.com/koic)
|
18
|
+
|
19
|
+
Add deprecation warning for positional arguments to notify users that are coming from Faker version < 2.0. Its main goal is to make upgrades easier.
|
20
|
+
|
21
|
+
## Documentation
|
22
|
+
|
23
|
+
- [PR #1688](https://github.com/faker-ruby/faker/pull/1688) Update README install instructions [@EduardoGHdez](https://github.com/EduardoGHdez)
|
24
|
+
- [PR #1689](https://github.com/faker-ruby/faker/pull/1689) Update README.md [@Zeragamba](https://github.com/Zeragamba)
|
25
|
+
- [PR #1690](https://github.com/faker-ruby/faker/pull/1690) Update issue url in PULL_REQUEST_TEMPLATE [@bugtender](https://github.com/bugtender)
|
26
|
+
- [PR #1703](https://github.com/faker-ruby/faker/pull/1703) Return HTTPS URLs from Lorem Flickr [@connorshea](https://github.com/connorshea)
|
27
|
+
|
28
|
+
## Feature Request
|
29
|
+
- [PR #1686](https://github.com/faker-ruby/faker/pull/1686) Update test-unit gem to 3.3.3 [@connorshea](https://github.com/connorshea)
|
30
|
+
|
31
|
+
## Bug/Fixes
|
32
|
+
- [PR #1702](https://github.com/faker-ruby/faker/pull/1702) Fix an argument for test_faker_stripe.rb [@koic](https://github.com/koic)
|
33
|
+
- [PR #1694](https://github.com/faker-ruby/faker/pull/1694) Ensure mix_case returns at least one lower and one upper case letter [@bpleslie](https://github.com/bpleslie)
|
34
|
+
|
35
|
+
------------------------------------------------------------------------------
|
36
|
+
|
37
|
+
## [v2.1.2](https://github.com/faker-ruby/faker/tree/v2.1.2) (2019-10-08)
|
38
|
+
|
39
|
+
## Enhancements
|
40
|
+
|
41
|
+
- [PR #1495](https://github.com/faker-ruby/faker/pull/1495) Add Brazilian documents generation and documentation [@lucasqueiroz](https://github.com/lucasqueiroz)
|
42
|
+
|
43
|
+
## Issues
|
44
|
+
|
45
|
+
We had to use `bundled with 1.7.3` to avoid some issues.
|
46
|
+
|
47
|
+
## [v2.1.1](https://github.com/faker-ruby/faker/tree/2.1.1) (2019-10-08)
|
48
|
+
|
49
|
+
## Bug/Fixes
|
50
|
+
|
51
|
+
- [PR #1685](https://github.com/stympy/faker/pull/1685) Upgrade i18n [@EduardoGHdez](https://github.com/EduardoGHdez)
|
52
|
+
|
53
|
+
`bundler-audit` has identified that i18 has fix a security vulnerability, that has been fixed in the 0.8 version.
|
54
|
+
|
55
|
+
- [PR #1683](https://github.com/stympy/faker/pull/1683) Rollback Faker::Time changes [@vbrazo](https://github.com/vbrazo)
|
56
|
+
|
57
|
+
Rollback Faker::Time changes because we should expect the date format from activesupport's en.yml.
|
58
|
+
|
59
|
+
## Documentation
|
60
|
+
|
61
|
+
- [PR #1677](https://github.com/faker-ruby/faker/pull/1677) Fix docs for Internet#password generator [@ur5us](https://github.com/ur5us)
|
62
|
+
|
63
|
+
------------------------------------------------------------------------------
|
64
|
+
|
65
|
+
## [v2.1.0](https://github.com/faker-ruby/faker/tree/v2.1.0) (2019-31-07)
|
66
|
+
|
67
|
+
## Bug/Fixes
|
68
|
+
- [PR #1675](https://github.com/faker-ruby/faker/pull/1675) Fix off-by-one error when formatting month names [@jutonz](https://github.com/jutonz)
|
69
|
+
|
70
|
+
This change required a quick release because it's a breaking issue. Every place where I18n.l() was used began to display the wrong date, causing test suite to fail.
|
71
|
+
|
72
|
+
------------------------------------------------------------------------------
|
73
|
+
|
74
|
+
## [v2.0](https://github.com/faker-ruby/faker/tree/v2.0) (2019-31-07)
|
4
75
|
|
5
76
|
## Important Note:
|
6
77
|
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|

|
3
3
|
|
4
4
|
# Faker
|
5
|
-
[](https://travis-ci.org/faker-ruby/faker)
|
6
6
|
[](https://badge.fury.io/rb/faker)
|
7
7
|
[](http://inch-ci.org/github/stympy/faker)
|
8
8
|
[](https://codeclimate.com/github/stympy/faker/test_coverage)
|
@@ -55,7 +55,7 @@ gem install faker
|
|
55
55
|
Note: if you are getting a `uninitialized constant Faker::[some_class]` error, your version of the gem is behind the one documented here. To make sure that your gem is the one documented here, change the line in your Gemfile to:
|
56
56
|
|
57
57
|
```ruby
|
58
|
-
gem 'faker', :git => 'https://github.com/
|
58
|
+
gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'master'
|
59
59
|
```
|
60
60
|
|
61
61
|
## Usage
|
@@ -117,7 +117,7 @@ Faker::Company.bs #=> "cultivate viral synergies"
|
|
117
117
|
**NOTE: Some of the generators below aren't released yet. If you want to use them, change the line in your gemfile to:**
|
118
118
|
|
119
119
|
```ruby
|
120
|
-
gem 'faker', :git => 'https://github.com/
|
120
|
+
gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'master'
|
121
121
|
```
|
122
122
|
|
123
123
|
### Default
|
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,24 @@ module Faker
|
|
245
248
|
ensure
|
246
249
|
I18n.enforce_available_locales = old_enforce_available_locales
|
247
250
|
end
|
251
|
+
|
252
|
+
private
|
253
|
+
|
254
|
+
# Workaround for emulating `warn '...', uplevel: 1` in Ruby 2.4 or lower.
|
255
|
+
def warn_with_uplevel(message, uplevel: 1)
|
256
|
+
at = parse_caller(caller[uplevel]).join(':')
|
257
|
+
warn "#{at}: #{message}"
|
258
|
+
end
|
259
|
+
|
260
|
+
def parse_caller(at)
|
261
|
+
# rubocop:disable Style/GuardClause
|
262
|
+
if /^(.+?):(\d+)(?::in `.*')?/ =~ at
|
263
|
+
file = Regexp.last_match(1)
|
264
|
+
line = Regexp.last_match(2).to_i
|
265
|
+
[file, line]
|
266
|
+
end
|
267
|
+
# rubocop:enable Style/GuardClause
|
268
|
+
end
|
248
269
|
end
|
249
270
|
end
|
250
271
|
end
|
data/lib/faker/books/dune.rb
CHANGED
@@ -19,7 +19,12 @@ module Faker
|
|
19
19
|
fetch('dune.planets')
|
20
20
|
end
|
21
21
|
|
22
|
-
def quote(character: nil)
|
22
|
+
def quote(legacy_character = NOT_GIVEN, character: nil)
|
23
|
+
if legacy_character != NOT_GIVEN
|
24
|
+
warn_with_uplevel 'Passing `character` with the 1st argument of `Dune.quote` is deprecated. Use keyword argument like `Dune.quote(character: ...)` instead.', uplevel: 1
|
25
|
+
character = legacy_character
|
26
|
+
end
|
27
|
+
|
23
28
|
quoted_characters = translate('faker.dune.quotes').keys
|
24
29
|
|
25
30
|
if character.nil?
|
@@ -36,7 +41,12 @@ module Faker
|
|
36
41
|
fetch('dune.quotes.' + character)
|
37
42
|
end
|
38
43
|
|
39
|
-
def saying(source: nil)
|
44
|
+
def saying(legacy_source = NOT_GIVEN, source: nil)
|
45
|
+
if legacy_source != NOT_GIVEN
|
46
|
+
warn_with_uplevel 'Passing `source` with the 1st argument of `Dune.saying` is deprecated. Use keyword argument like `Dune.saying(source: ...)` instead.', uplevel: 1
|
47
|
+
source = legacy_source
|
48
|
+
end
|
49
|
+
|
40
50
|
sourced_sayings = translate('faker.dune.sayings').keys
|
41
51
|
|
42
52
|
if source.nil?
|
@@ -8,7 +8,12 @@ module Faker
|
|
8
8
|
fetch('lovecraft.location')
|
9
9
|
end
|
10
10
|
|
11
|
-
def fhtagn(number: 1)
|
11
|
+
def fhtagn(legacy_number = NOT_GIVEN, number: 1)
|
12
|
+
if legacy_number != NOT_GIVEN
|
13
|
+
warn_with_uplevel 'Passing `number` with the 1st argument of `Lovecraft.fhtagn` is deprecated. Use keyword argument like `Lovecraft.fhtagn(number: ...)` instead.', uplevel: 1
|
14
|
+
number = legacy_number
|
15
|
+
end
|
16
|
+
|
12
17
|
Array.new(number) { fetch('lovecraft.fhtagn') }.join('. ')
|
13
18
|
end
|
14
19
|
|
@@ -20,7 +25,16 @@ module Faker
|
|
20
25
|
fetch('lovecraft.tome')
|
21
26
|
end
|
22
27
|
|
23
|
-
def sentence(word_count: 4, random_words_to_add: 6)
|
28
|
+
def sentence(legacy_word_count = NOT_GIVEN, legacy_random_words_to_add = NOT_GIVEN, word_count: 4, random_words_to_add: 6)
|
29
|
+
if legacy_word_count != NOT_GIVEN
|
30
|
+
warn_with_uplevel 'Passing `word_count` with the 1st argument of `Lovecraft.sentence` is deprecated. Use keyword argument like `Lovecraft.sentence(word_count: ...)` instead.', uplevel: 1
|
31
|
+
word_count = legacy_word_count
|
32
|
+
end
|
33
|
+
if legacy_random_words_to_add != NOT_GIVEN
|
34
|
+
warn_with_uplevel 'Passing `random_words_to_add` with the 2nd argument of `Lovecraft.sentence` is deprecated. Use keyword argument like `Lovecraft.sentence(random_words_to_add: ...)` instead.', uplevel: 1
|
35
|
+
random_words_to_add = legacy_random_words_to_add
|
36
|
+
end
|
37
|
+
|
24
38
|
words(number: word_count + rand(random_words_to_add.to_i).to_i, spaces_allowed: true).join(' ').capitalize + '.'
|
25
39
|
end
|
26
40
|
|
@@ -29,7 +43,16 @@ module Faker
|
|
29
43
|
random_word =~ /\s/ ? word : random_word
|
30
44
|
end
|
31
45
|
|
32
|
-
def words(number: 3, spaces_allowed: false)
|
46
|
+
def words(legacy_number = NOT_GIVEN, legacy_spaces_allowed = NOT_GIVEN, number: 3, spaces_allowed: false)
|
47
|
+
if legacy_number != NOT_GIVEN
|
48
|
+
warn_with_uplevel 'Passing `number` with the 1st argument of `Lovecraft.words` is deprecated. Use keyword argument like `Lovecraft.words(number: ...)` instead.', uplevel: 1
|
49
|
+
number = legacy_number
|
50
|
+
end
|
51
|
+
if legacy_spaces_allowed != NOT_GIVEN
|
52
|
+
warn_with_uplevel 'Passing `spaces_allowed` with the 2nd argument of `Lovecraft.words` is deprecated. Use keyword argument like `Lovecraft.words(spaces_allowed: ...)` instead.', uplevel: 1
|
53
|
+
spaces_allowed = legacy_spaces_allowed
|
54
|
+
end
|
55
|
+
|
33
56
|
resolved_num = resolve(number)
|
34
57
|
word_list = translate('faker.lovecraft.words')
|
35
58
|
word_list *= ((resolved_num / word_list.length) + 1)
|
@@ -40,7 +63,12 @@ module Faker
|
|
40
63
|
words.each_with_index { |w, i| words[i] = word if w =~ /\s/ }
|
41
64
|
end
|
42
65
|
|
43
|
-
def sentences(number: 3)
|
66
|
+
def sentences(legacy_number = NOT_GIVEN, number: 3)
|
67
|
+
if legacy_number != NOT_GIVEN
|
68
|
+
warn_with_uplevel 'Passing `number` with the 1st argument of `Lovecraft.sentences` is deprecated. Use keyword argument like `Lovecraft.sentences(number: ...)` instead.', uplevel: 1
|
69
|
+
number = legacy_number
|
70
|
+
end
|
71
|
+
|
44
72
|
[].tap do |sentences|
|
45
73
|
1.upto(resolve(number)) do
|
46
74
|
sentences << sentence(word_count: 3)
|
@@ -48,11 +76,25 @@ module Faker
|
|
48
76
|
end
|
49
77
|
end
|
50
78
|
|
51
|
-
def paragraph(sentence_count: 3, random_sentences_to_add: 3)
|
79
|
+
def paragraph(legacy_sentence_count = NOT_GIVEN, legacy_random_sentences_to_add = NOT_GIVEN, sentence_count: 3, random_sentences_to_add: 3)
|
80
|
+
if legacy_sentence_count != NOT_GIVEN
|
81
|
+
warn_with_uplevel 'Passing `sentence_count` with the 1st argument of `Lovecraft.paragraph` is deprecated. Use keyword argument like `Lovecraft.paragraph(sentence_count: ...)` instead.', uplevel: 1
|
82
|
+
sentence_count = legacy_sentence_count
|
83
|
+
end
|
84
|
+
if legacy_random_sentences_to_add != NOT_GIVEN
|
85
|
+
warn_with_uplevel 'Passing `random_sentences_to_add` with the 2nd argument of `Lovecraft.paragraph` is deprecated. Use keyword argument like `Lovecraft.paragraph(random_sentences_to_add: ...)` instead.', uplevel: 1
|
86
|
+
random_sentences_to_add = legacy_random_sentences_to_add
|
87
|
+
end
|
88
|
+
|
52
89
|
sentences(number: resolve(sentence_count) + rand(random_sentences_to_add.to_i).to_i).join(' ')
|
53
90
|
end
|
54
91
|
|
55
|
-
def paragraphs(number: 3)
|
92
|
+
def paragraphs(legacy_number = NOT_GIVEN, number: 3)
|
93
|
+
if legacy_number != NOT_GIVEN
|
94
|
+
warn_with_uplevel 'Passing `number` with the 1st argument of `Lovecraft.paragraphs` is deprecated. Use keyword argument like `Lovecraft.paragraphs(number: ...)` instead.', uplevel: 1
|
95
|
+
number = legacy_number
|
96
|
+
end
|
97
|
+
|
56
98
|
[].tap do |paragraphs|
|
57
99
|
1.upto(resolve(number)) do
|
58
100
|
paragraphs << paragraph(sentence_count: 3)
|
@@ -60,7 +102,12 @@ module Faker
|
|
60
102
|
end
|
61
103
|
end
|
62
104
|
|
63
|
-
def paragraph_by_chars(characters: 256)
|
105
|
+
def paragraph_by_chars(legacy_characters = NOT_GIVEN, characters: 256)
|
106
|
+
if legacy_characters != NOT_GIVEN
|
107
|
+
warn_with_uplevel 'Passing `characters` with the 1st argument of `Lovecraft.paragraph_by_chars` is deprecated. Use keyword argument like `Lovecraft.paragraph_by_chars(characters: ...)` instead.', uplevel: 1
|
108
|
+
characters = legacy_characters
|
109
|
+
end
|
110
|
+
|
64
111
|
paragraph = paragraph(sentence_count: 3)
|
65
112
|
|
66
113
|
paragraph += ' ' + paragraph(sentence_count: 3) while paragraph.length < characters
|
@@ -5,7 +5,12 @@ module Faker
|
|
5
5
|
flexible :address
|
6
6
|
|
7
7
|
class << self
|
8
|
-
def city(options: {})
|
8
|
+
def city(legacy_options = NOT_GIVEN, options: {})
|
9
|
+
if legacy_options != NOT_GIVEN
|
10
|
+
warn_with_uplevel 'Passing `options` with the 1st argument of `Address.city` is deprecated. Use keyword argument like `Address.city(options: ...)` instead.', uplevel: 1
|
11
|
+
options = legacy_options
|
12
|
+
end
|
13
|
+
|
9
14
|
parse(options[:with_state] ? 'address.city_with_state' : 'address.city')
|
10
15
|
end
|
11
16
|
|
@@ -13,7 +18,12 @@ module Faker
|
|
13
18
|
parse('address.street_name')
|
14
19
|
end
|
15
20
|
|
16
|
-
def street_address(include_secondary: false)
|
21
|
+
def street_address(legacy_include_secondary = NOT_GIVEN, include_secondary: false)
|
22
|
+
if legacy_include_secondary != NOT_GIVEN
|
23
|
+
warn_with_uplevel 'Passing `include_secondary` with the 1st argument of `Address.street_address` is deprecated. Use keyword argument like `Address.street_address(include_secondary: ...)` instead.', uplevel: 1
|
24
|
+
include_secondary = legacy_include_secondary
|
25
|
+
end
|
26
|
+
|
17
27
|
numerify(parse('address.street_address') + (include_secondary ? ' ' + secondary_address : ''))
|
18
28
|
end
|
19
29
|
|
@@ -29,7 +39,12 @@ module Faker
|
|
29
39
|
parse('address.community')
|
30
40
|
end
|
31
41
|
|
32
|
-
def zip_code(state_abbreviation: '')
|
42
|
+
def zip_code(legacy_state_abbreviation = NOT_GIVEN, state_abbreviation: '')
|
43
|
+
if legacy_state_abbreviation != NOT_GIVEN
|
44
|
+
warn_with_uplevel 'Passing `state_abbreviation` with the 1st argument of `Address.zip_code` is deprecated. Use keyword argument like `Address.zip_code(state_abbreviation: ...)` instead.', uplevel: 1
|
45
|
+
state_abbreviation = legacy_state_abbreviation
|
46
|
+
end
|
47
|
+
|
33
48
|
if state_abbreviation.empty?
|
34
49
|
letterified_string = letterify(fetch('address.postcode'))
|
35
50
|
return numerify(letterified_string, leading_zero: true)
|
@@ -71,11 +86,21 @@ module Faker
|
|
71
86
|
fetch('address.country')
|
72
87
|
end
|
73
88
|
|
74
|
-
def country_by_code(code: 'US')
|
89
|
+
def country_by_code(legacy_code = NOT_GIVEN, code: 'US')
|
90
|
+
if legacy_code != NOT_GIVEN
|
91
|
+
warn_with_uplevel 'Passing `code` with the 1st argument of `Address.country_by_code` is deprecated. Use keyword argument like `Address.country_by_code(code: ...)` instead.', uplevel: 1
|
92
|
+
code = legacy_code
|
93
|
+
end
|
94
|
+
|
75
95
|
fetch('address.country_by_code.' + code)
|
76
96
|
end
|
77
97
|
|
78
|
-
def country_name_to_code(name: 'united_states')
|
98
|
+
def country_name_to_code(legacy_name = NOT_GIVEN, name: 'united_states')
|
99
|
+
if legacy_name != NOT_GIVEN
|
100
|
+
warn_with_uplevel 'Passing `name` with the 1st argument of `Address.country_name_to_code` is deprecated. Use keyword argument like `Address.country_name_to_code(name: ...)` instead.', uplevel: 1
|
101
|
+
name = legacy_name
|
102
|
+
end
|
103
|
+
|
79
104
|
fetch('address.country_by_name.' + name)
|
80
105
|
end
|
81
106
|
|
@@ -2,22 +2,60 @@
|
|
2
2
|
|
3
3
|
module Faker
|
4
4
|
class Alphanumeric < Base
|
5
|
-
|
6
|
-
ALPHABET = ('a'..'z').to_a
|
7
|
-
ALPHANUMS = ALPHABET + (0..9).to_a
|
5
|
+
ALPHANUMS = LLetters + Numbers
|
8
6
|
|
9
|
-
|
7
|
+
class << self
|
8
|
+
def alpha(legacy_number = NOT_GIVEN, number: 32)
|
9
|
+
if legacy_number != NOT_GIVEN
|
10
|
+
warn_with_uplevel 'Passing `number` with the 1st argument of `Alphanumeric.alpha` is deprecated. Use keyword argument like `Alphanumeric.alpha(number: ...)` instead.', uplevel: 1
|
11
|
+
number = legacy_number
|
12
|
+
end
|
10
13
|
char_count = resolve(number)
|
11
14
|
return '' if char_count.to_i < 1
|
12
15
|
|
13
|
-
Array.new(char_count) { sample(
|
16
|
+
Array.new(char_count) { sample(self::LLetters) }.join
|
14
17
|
end
|
15
18
|
|
16
|
-
|
19
|
+
##
|
20
|
+
# Produces a random string of alphanumeric characters
|
21
|
+
#
|
22
|
+
# @param [Integer] number
|
23
|
+
# @param [Integer] min_alpha
|
24
|
+
# @param [Integer] min_numeric
|
25
|
+
#
|
26
|
+
# @return [String]
|
27
|
+
#
|
28
|
+
# @example Faker::Alphanumeric.alphanumeric(number: 10) #=> "3yfq2phxtb"
|
29
|
+
# @example Faker::Alphanumeric.alphanumeric(number: 10, min_alpha: 3) #=> "3yfq2phxtb"
|
30
|
+
# @example Faker::Alphanumeric.alphanumeric(number: 10, min_alpha: 3, min_numeric: 3) #=> "3yfq2phx8b"
|
31
|
+
#
|
32
|
+
# @faker.version 2.1.3
|
33
|
+
def alphanumeric(legacy_number = NOT_GIVEN, number: 32, min_alpha: 0, min_numeric: 0)
|
34
|
+
if legacy_number != NOT_GIVEN
|
35
|
+
warn_with_uplevel 'Passing `number` with the 1st argument of `Alphanumeric.alphanumeric` is deprecated. Use keyword argument like `Alphanumeric.alphanumeric(number: ...)` instead.', uplevel: 1
|
36
|
+
number = legacy_number
|
37
|
+
end
|
17
38
|
char_count = resolve(number)
|
18
39
|
return '' if char_count.to_i < 1
|
40
|
+
raise ArgumentError, 'min_alpha must be greater than or equal to 0' if min_alpha&.negative?
|
41
|
+
raise ArgumentError, 'min_numeric must be greater than or equal to 0' if min_numeric&.negative?
|
42
|
+
|
43
|
+
if min_alpha.zero? && min_numeric.zero?
|
44
|
+
return Array.new(char_count) { sample(ALPHANUMS) }.join
|
45
|
+
end
|
46
|
+
|
47
|
+
if min_alpha + min_numeric > char_count
|
48
|
+
raise ArgumentError, 'min_alpha + min_numeric must be <= number'
|
49
|
+
end
|
50
|
+
|
51
|
+
random_count = char_count - min_alpha - min_numeric
|
52
|
+
|
53
|
+
alphas = Array.new(min_alpha) { sample(self::LLetters) }
|
54
|
+
numbers = Array.new(min_numeric) { sample(self::Numbers) }
|
55
|
+
randoms = Array.new(random_count) { sample(ALPHANUMS) }
|
19
56
|
|
20
|
-
|
57
|
+
combined = alphas + numbers + randoms
|
58
|
+
combined.shuffle.join
|
21
59
|
end
|
22
60
|
end
|
23
61
|
end
|
data/lib/faker/default/app.rb
CHANGED
@@ -15,7 +15,22 @@ module Faker
|
|
15
15
|
parse('app.author')
|
16
16
|
end
|
17
17
|
|
18
|
-
|
18
|
+
# rubocop:disable Metrics/ParameterLists
|
19
|
+
def semantic_version(legacy_major = NOT_GIVEN, legacy_minor = NOT_GIVEN, legacy_patch = NOT_GIVEN, major: 0..9, minor: 0..9, patch: 1..9)
|
20
|
+
# rubocop:enable Metrics/ParameterLists
|
21
|
+
if legacy_major != NOT_GIVEN
|
22
|
+
warn_with_uplevel 'Passing `major` with the 1st argument of `App.semantic_version` is deprecated. Use keyword argument like `App.semantic_version(major: ...)` instead.', uplevel: 1
|
23
|
+
major = legacy_major
|
24
|
+
end
|
25
|
+
if legacy_minor != NOT_GIVEN
|
26
|
+
warn_with_uplevel 'Passing `minor` with the 2nd argument of `App.semantic_version` is deprecated. Use keyword argument like `App.semantic_version(minor: ...)` instead.', uplevel: 1
|
27
|
+
minor = legacy_minor
|
28
|
+
end
|
29
|
+
if legacy_patch != NOT_GIVEN
|
30
|
+
warn_with_uplevel 'Passing `patch` with the 3rd argument of `App.semantic_version` is deprecated. Use keyword argument like `App.semantic_version(patch: ...)` instead.', uplevel: 1
|
31
|
+
patch = legacy_patch
|
32
|
+
end
|
33
|
+
|
19
34
|
[major, minor, patch].map { |chunk| sample(Array(chunk)) }.join('.')
|
20
35
|
end
|
21
36
|
end
|