faker 2.11.0 → 2.17.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +372 -13
- data/History.md +4 -4
- data/README.md +27 -3
- data/lib/faker/blockchain/aeternity.rb +4 -4
- data/lib/faker/blockchain/bitcoin.rb +2 -2
- data/lib/faker/blockchain/tezos.rb +30 -2
- data/lib/faker/books/dune.rb +15 -2
- data/lib/faker/books/lovecraft.rb +8 -4
- data/lib/faker/default/address.rb +35 -5
- data/lib/faker/default/app.rb +1 -1
- data/lib/faker/default/avatar.rb +1 -1
- data/lib/faker/default/bank.rb +96 -3
- data/lib/faker/default/barcode.rb +165 -0
- data/lib/faker/default/beer.rb +3 -3
- data/lib/faker/default/blood.rb +48 -0
- data/lib/faker/default/business.rb +1 -1
- data/lib/faker/default/camera.rb +46 -0
- data/lib/faker/default/cannabis.rb +10 -0
- data/lib/faker/default/chile_rut.rb +47 -3
- data/lib/faker/default/chuck_norris.rb +1 -0
- data/lib/faker/default/code.rb +98 -17
- data/lib/faker/default/commerce.rb +74 -11
- data/lib/faker/default/company.rb +96 -11
- data/lib/faker/default/compass.rb +135 -0
- data/lib/faker/default/computer.rb +63 -0
- data/lib/faker/default/construction.rb +54 -0
- data/lib/faker/default/cosmere.rb +90 -0
- data/lib/faker/default/crypto.rb +4 -4
- data/lib/faker/default/crypto_coin.rb +45 -0
- data/lib/faker/default/date.rb +16 -12
- data/lib/faker/default/driving_licence.rb +67 -1
- data/lib/faker/default/drone.rb +332 -0
- data/lib/faker/default/educator.rb +13 -0
- data/lib/faker/default/faker_adjective.rb +35 -0
- data/lib/faker/default/file.rb +53 -2
- data/lib/faker/default/finance.rb +45 -0
- data/lib/faker/default/food.rb +1 -1
- data/lib/faker/default/gender.rb +1 -1
- data/lib/faker/default/hipster.rb +107 -10
- data/lib/faker/default/id_number.rb +88 -2
- data/lib/faker/default/internet.rb +266 -12
- data/lib/faker/default/internet_http.rb +48 -0
- data/lib/faker/default/invoice.rb +33 -6
- data/lib/faker/default/json.rb +61 -5
- data/lib/faker/default/lorem.rb +160 -5
- data/lib/faker/default/lorem_flickr.rb +67 -7
- data/lib/faker/default/lorem_pixel.rb +23 -0
- data/lib/faker/default/markdown.rb +91 -0
- data/lib/faker/default/measurement.rb +93 -2
- data/lib/faker/default/military.rb +26 -0
- data/lib/faker/default/mountain.rb +33 -0
- data/lib/faker/default/name.rb +98 -0
- data/lib/faker/default/nhs.rb +19 -0
- data/lib/faker/default/number.rb +28 -13
- data/lib/faker/default/omniauth.rb +62 -14
- data/lib/faker/default/phone_number.rb +88 -5
- data/lib/faker/default/placeholdit.rb +23 -1
- data/lib/faker/default/relationship.rb +1 -1
- data/lib/faker/default/slack_emoji.rb +81 -0
- data/lib/faker/default/south_africa.rb +90 -0
- data/lib/faker/default/space.rb +1 -1
- data/lib/faker/default/string.rb +20 -3
- data/lib/faker/default/stripe.rb +64 -3
- data/lib/faker/default/twitter.rb +35 -0
- data/lib/faker/default/types.rb +84 -3
- data/lib/faker/default/university.rb +45 -0
- data/lib/faker/default/vehicle.rb +184 -4
- data/lib/faker/default/verb.rb +45 -0
- data/lib/faker/default/world_cup.rb +4 -4
- data/lib/faker/fantasy/tolkien.rb +67 -0
- data/lib/faker/games/clash_of_clans.rb +48 -0
- data/lib/faker/games/control.rb +113 -0
- data/lib/faker/games/dnd.rb +136 -0
- data/lib/faker/games/elder_scrolls.rb +26 -0
- data/lib/faker/games/heroes.rb +13 -0
- data/lib/faker/games/heroes_of_the_storm.rb +16 -5
- data/lib/faker/games/minecraft.rb +113 -0
- data/lib/faker/games/street_fighter.rb +61 -0
- data/lib/faker/games/super_mario.rb +48 -0
- data/lib/faker/games/touhou.rb +75 -0
- data/lib/faker/games/warhammer_fantasy.rb +74 -0
- data/lib/faker/games/world_of_warcraft.rb +26 -1
- data/lib/faker/japanese_media/conan.rb +48 -0
- data/lib/faker/japanese_media/doraemon.rb +48 -0
- data/lib/faker/japanese_media/dragon_ball.rb +26 -0
- data/lib/faker/japanese_media/naruto.rb +61 -0
- data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
- data/lib/faker/movies/departed.rb +49 -0
- data/lib/faker/movies/hobbit.rb +4 -4
- data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
- data/lib/faker/movies/lord_of_the_rings.rb +3 -3
- data/lib/faker/movies/movie.rb +13 -0
- data/lib/faker/movies/room.rb +63 -0
- data/lib/faker/movies/star_wars.rb +74 -2
- data/lib/faker/music/hiphop.rb +48 -0
- data/lib/faker/music/opera.rb +237 -1
- data/lib/faker/music/pearl_jam.rb +50 -0
- data/lib/faker/music/phish.rb +27 -1
- data/lib/faker/music/prince.rb +64 -0
- data/lib/faker/music/rock_band.rb +12 -0
- data/lib/faker/music/rush.rb +37 -0
- data/lib/faker/music/show.rb +49 -0
- data/lib/faker/quotes/quote.rb +80 -1
- data/lib/faker/quotes/rajnikanth.rb +1 -0
- data/lib/faker/quotes/shakespeare.rb +70 -0
- data/lib/faker/sports/volleyball.rb +74 -0
- data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +13 -0
- data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
- data/lib/faker/tv_shows/buffy.rb +17 -4
- data/lib/faker/tv_shows/dr_who.rb +1 -1
- data/lib/faker/tv_shows/final_space.rb +51 -0
- data/lib/faker/tv_shows/futurama.rb +65 -0
- data/lib/faker/tv_shows/simpsons.rb +14 -0
- data/lib/faker/tv_shows/suits.rb +37 -0
- data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +17 -4
- data/lib/faker/version.rb +1 -1
- data/lib/faker.rb +28 -23
- data/lib/helpers/base58.rb +1 -1
- data/lib/helpers/char.rb +22 -27
- data/lib/helpers/unique_generator.rb +0 -2
- data/lib/locales/de-AT.yml +4 -2
- data/lib/locales/de-CH.yml +1696 -1
- data/lib/locales/de.yml +4 -2
- data/lib/locales/en/address.yml +2 -0
- data/lib/locales/en/adjective.yml +179 -0
- data/lib/locales/en/animal.yml +1 -1
- data/lib/locales/en/aqua_teen_hunger_force.yml +33 -1
- data/lib/locales/en/bank.yml +1 -1
- data/lib/locales/en/barcode.yml +24 -0
- data/lib/locales/en/big_bang_theory.yml +38 -0
- data/lib/locales/en/blood.yml +13 -0
- data/lib/locales/en/buffy.yml +1 -1
- data/lib/locales/en/camera.yml +611 -0
- data/lib/locales/en/clash_of_clan.yml +101 -0
- data/lib/locales/en/company.yml +2 -2
- data/lib/locales/en/computer.yml +36 -0
- data/lib/locales/en/conan.yml +171 -0
- data/lib/locales/en/control.yml +247 -0
- data/lib/locales/en/demographic.yml +218 -5
- data/lib/locales/en/departed.yml +50 -0
- data/lib/locales/en/device.yml +112 -4
- data/lib/locales/en/dnd.yml +451 -0
- data/lib/locales/en/doraemon.yml +286 -0
- data/lib/locales/en/dota.yml +531 -63
- data/lib/locales/en/dragon_ball.yml +243 -1
- data/lib/locales/en/driving_license.yml +181 -0
- data/lib/locales/en/drone.yml +95 -0
- data/lib/locales/en/dune.yml +401 -131
- data/lib/locales/en/educator.yml +6 -0
- data/lib/locales/en/elder_scrolls.yml +583 -9
- data/lib/locales/en/fallout.yml +311 -133
- data/lib/locales/en/final_space.yml +37 -0
- data/lib/locales/en/finance.yml +53 -0
- data/lib/locales/en/football.yml +3 -3
- data/lib/locales/en/fresh_prince_of_bel_air.yml +1 -1
- data/lib/locales/en/futurama.yml +344 -0
- data/lib/locales/en/half_life.yml +84 -3
- data/lib/locales/en/heroes.yml +408 -3
- data/lib/locales/en/heroes_of_the_storm.yml +131 -4
- data/lib/locales/en/house.yml +1 -1
- data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
- data/lib/locales/en/jack_handey.yml +54 -0
- data/lib/locales/en/league_of_legends.yml +285 -6
- data/lib/locales/en/lebowski.yml +1 -1
- data/lib/locales/en/military.yml +179 -5
- data/lib/locales/en/minecraft.yml +663 -0
- data/lib/locales/en/mountain.yml +158 -0
- data/lib/locales/en/movie.yml +192 -1
- data/lib/locales/en/music.yml +451 -29
- data/lib/locales/en/myst.yml +87 -31
- data/lib/locales/en/name.yml +5 -4
- data/lib/locales/en/naruto.yml +231 -0
- data/lib/locales/en/one_piece.yml +2 -2
- data/lib/locales/en/opera.yml +168 -0
- data/lib/locales/en/overwatch.yml +2650 -2622
- data/lib/locales/en/pearl_jam.yml +213 -0
- data/lib/locales/en/phish.yml +392 -1
- data/lib/locales/en/pokemon.yml +417 -4
- data/lib/locales/en/prince.yml +227 -0
- data/lib/locales/en/quote.yml +692 -163
- data/lib/locales/en/rock_band.yml +1 -0
- data/lib/locales/en/room.yml +68 -0
- data/lib/locales/en/rush.yml +32 -0
- data/lib/locales/en/shakespeare.yml +21 -24
- data/lib/locales/en/show.yml +597 -0
- data/lib/locales/en/simpsons.yml +668 -0
- data/lib/locales/en/source.yml +30 -0
- data/lib/locales/en/star_trek.yml +1 -1
- data/lib/locales/en/star_wars.yml +568 -220
- data/lib/locales/en/street_fighter.yml +1524 -0
- data/lib/locales/en/studio_ghibli.yml +107 -0
- data/lib/locales/en/suits.yml +45 -0
- data/lib/locales/en/super_mario.yml +58 -0
- data/lib/locales/en/super_smash_bros.yml +18 -4
- data/lib/locales/en/tolkien.yml +2453 -0
- data/lib/locales/en/touhou.yml +839 -0
- data/lib/locales/en/volleyball.yml +501 -0
- data/lib/locales/en/warhammer_fantasy.yml +582 -0
- data/lib/locales/en/witcher.yml +389 -7
- data/lib/locales/en/world_of_warcraft.yml +122 -4
- data/lib/locales/en/zelda.yml +962 -4
- data/lib/locales/en-AU.yml +50 -10
- data/lib/locales/en-CA.yml +2 -0
- data/lib/locales/en-GB.yml +1 -1
- data/lib/locales/en-IND.yml +2 -1
- data/lib/locales/en-MS.yml +2 -1
- data/lib/locales/en-NEP.yml +4 -1
- data/lib/locales/en-NZ.yml +3 -1
- data/lib/locales/en-PAK.yml +2 -1
- data/lib/locales/en-SG.yml +2 -1
- data/lib/locales/en-US.yml +36 -10
- data/lib/locales/en-au-ocker.yml +2 -1
- data/lib/locales/en.yml +0 -3
- data/lib/locales/es-AR.yml +4603 -0
- data/lib/locales/es.yml +56 -0
- data/lib/locales/fi-FI.yml +1 -1
- data/lib/locales/fr-CA.yml +21 -5
- data/lib/locales/fr-CH.yml +2 -2
- data/lib/locales/fr.yml +12 -6
- data/lib/locales/id.yml +3 -1
- data/lib/locales/it.yml +2 -1
- data/lib/locales/ja.yml +18 -1
- data/lib/locales/ko.yml +94 -2
- data/lib/locales/nb-NO.yml +4 -2
- data/lib/locales/pt-BR.yml +2 -1
- data/lib/locales/pt.yml +3 -1
- data/lib/locales/ru.yml +3 -1
- data/lib/locales/sk.yml +4 -2
- data/lib/locales/uk.yml +2 -0
- metadata +90 -23
- data/lib/locales/en/hobbit.yml +0 -19
- data/lib/locales/en/lord_of_the_rings.yml +0 -6
|
@@ -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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
|
@@ -52,7 +121,7 @@ module Faker
|
|
|
52
121
|
price = (rand(range) * 100).floor / 100.0
|
|
53
122
|
if as_string
|
|
54
123
|
price_parts = price.to_s.split('.')
|
|
55
|
-
price = price_parts[0]
|
|
124
|
+
price = "#{price_parts[0]}.#{price_parts[-1].ljust(2, '0')}"
|
|
56
125
|
end
|
|
57
126
|
price
|
|
58
127
|
end
|
|
@@ -60,13 +129,7 @@ module Faker
|
|
|
60
129
|
private
|
|
61
130
|
|
|
62
131
|
def categories(num)
|
|
63
|
-
|
|
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)
|
|
@@ -162,12 +162,17 @@ module Faker
|
|
|
162
162
|
# @faker.version 1.8.5
|
|
163
163
|
#
|
|
164
164
|
# Get a random Spanish organization number. See more here https://es.wikipedia.org/wiki/N%C3%BAmero_de_identificaci%C3%B3n_fiscal
|
|
165
|
-
def spanish_organisation_number
|
|
165
|
+
def spanish_organisation_number(organization_type: nil)
|
|
166
166
|
# Valid leading character: A, B, C, D, E, F, G, H, J, N, P, Q, R, S, U, V, W
|
|
167
|
-
# 7 digit numbers
|
|
167
|
+
# format: 1 digit letter (organization type) + 7 digit numbers + 1 digit control (letter or number based on
|
|
168
|
+
# organization type)
|
|
168
169
|
letters = %w[A B C D E F G H J N P Q R S U V W]
|
|
169
|
-
|
|
170
|
-
|
|
170
|
+
|
|
171
|
+
organization_type = sample(letters) unless letters.include?(organization_type)
|
|
172
|
+
code = format('%07d', rand(10**7))
|
|
173
|
+
control = spanish_cif_control_digit(organization_type, code)
|
|
174
|
+
|
|
175
|
+
[organization_type, code, control].join
|
|
171
176
|
end
|
|
172
177
|
|
|
173
178
|
##
|
|
@@ -399,6 +404,22 @@ module Faker
|
|
|
399
404
|
formatted ? format('%s.%s.%s/%s-%s', *number.scan(/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/).flatten) : number
|
|
400
405
|
end
|
|
401
406
|
|
|
407
|
+
##
|
|
408
|
+
# Get a random Russian tax number.
|
|
409
|
+
# @param region [String] Any region string
|
|
410
|
+
# @param type [Symbol] Legeal or not, defaults to :legal
|
|
411
|
+
#
|
|
412
|
+
# @return [String]
|
|
413
|
+
# @example
|
|
414
|
+
# Faker::Company.russian_tax_number #=> "0415584064"
|
|
415
|
+
# Faker::Company.russian_tax_number(region: 'AZ') #=> "AZ50124562"
|
|
416
|
+
# Faker::Company.russian_tax_number(region: 'AZ', type: false) #=> "AZ8802315465"
|
|
417
|
+
#
|
|
418
|
+
# @faker.version 1.9.4
|
|
419
|
+
def russian_tax_number(region: nil, type: :legal)
|
|
420
|
+
inn_number(region, type)
|
|
421
|
+
end
|
|
422
|
+
|
|
402
423
|
##
|
|
403
424
|
# Produces a company sic code.
|
|
404
425
|
#
|
|
@@ -454,13 +475,11 @@ module Faker
|
|
|
454
475
|
end
|
|
455
476
|
end
|
|
456
477
|
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
control_digit
|
|
478
|
+
if (sum % 10).zero?
|
|
479
|
+
0
|
|
480
|
+
else
|
|
481
|
+
(sum / 10 + 1) * 10 - sum
|
|
482
|
+
end
|
|
464
483
|
end
|
|
465
484
|
|
|
466
485
|
def abn_checksum(abn)
|
|
@@ -491,6 +510,72 @@ module Faker
|
|
|
491
510
|
end
|
|
492
511
|
sum
|
|
493
512
|
end
|
|
513
|
+
|
|
514
|
+
# rubocop:disable Style/AsciiComments
|
|
515
|
+
#
|
|
516
|
+
# For more on Russian tax number algorithm here:
|
|
517
|
+
# https://ru.wikipedia.org/wiki/Идентификационный_номер_налогоплательщика#Вычисление_контрольных_цифр
|
|
518
|
+
#
|
|
519
|
+
# Range of regions:
|
|
520
|
+
# https://ru.wikipedia.org/wiki/Коды_субъектов_Российской_Федерации
|
|
521
|
+
# region [String] Any region string
|
|
522
|
+
# @param type [Symbol] Legeal or not, defaults to :legal
|
|
523
|
+
#
|
|
524
|
+
# @return [String]
|
|
525
|
+
# @example
|
|
526
|
+
# Faker::Comnpany.russian_tax_number
|
|
527
|
+
# Faker::Comnpany.russian_tax_number(region: 'AZ')
|
|
528
|
+
# Faker::Comnpany.russian_tax_number(region: 'AZ', type: false)
|
|
529
|
+
# rubocop:enable Style/AsciiComments
|
|
530
|
+
def inn_number(region, type)
|
|
531
|
+
n10 = [2, 4, 10, 3, 5, 9, 4, 6, 8]
|
|
532
|
+
n11 = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
|
|
533
|
+
n12 = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
|
|
534
|
+
|
|
535
|
+
region = format('%.2d', rand(0o1..92)) if region.nil?
|
|
536
|
+
checksum = if type == :legal
|
|
537
|
+
number = region.to_s + rand(1_000_000..9_999_999).to_s
|
|
538
|
+
inn_checksum(n10, number)
|
|
539
|
+
else
|
|
540
|
+
number = region.to_s + rand(10_000_000..99_999_999).to_s
|
|
541
|
+
inn_checksum(n11, number) + inn_checksum(n12, number + inn_checksum(n11, number))
|
|
542
|
+
end
|
|
543
|
+
|
|
544
|
+
number + checksum
|
|
545
|
+
end
|
|
546
|
+
|
|
547
|
+
def inn_checksum(factor, number)
|
|
548
|
+
(
|
|
549
|
+
factor.map.with_index.reduce(0) do |v, i|
|
|
550
|
+
v + i[0] * number[i[1]].to_i
|
|
551
|
+
end % 11 % 10
|
|
552
|
+
).to_s
|
|
553
|
+
end
|
|
554
|
+
|
|
555
|
+
def spanish_cif_control_digit(organization_type, code)
|
|
556
|
+
letters = %w[J A B C D E F G H]
|
|
557
|
+
|
|
558
|
+
control = code.split('').each_with_index.inject(0) do |sum, (value, index)|
|
|
559
|
+
if (index + 1).even?
|
|
560
|
+
sum + value.to_i
|
|
561
|
+
else
|
|
562
|
+
sum + spanish_b_algorithm(value.to_i)
|
|
563
|
+
end
|
|
564
|
+
end
|
|
565
|
+
|
|
566
|
+
control = control.to_s[-1].to_i
|
|
567
|
+
control = control.zero? ? control : 10 - control
|
|
568
|
+
|
|
569
|
+
%w[A B C D E F G H J U V].include?(organization_type) ? control : letters[control]
|
|
570
|
+
end
|
|
571
|
+
|
|
572
|
+
def spanish_b_algorithm(value)
|
|
573
|
+
result = value.to_i * 2
|
|
574
|
+
|
|
575
|
+
return result if result < 10
|
|
576
|
+
|
|
577
|
+
result.to_s[0].to_i + result.to_s[1].to_i
|
|
578
|
+
end
|
|
494
579
|
end
|
|
495
580
|
end
|
|
496
581
|
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
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Faker
|
|
4
|
+
class Computer < Base
|
|
5
|
+
class << self
|
|
6
|
+
##
|
|
7
|
+
# Produces the name of a computer platform.
|
|
8
|
+
#
|
|
9
|
+
# @return [String]
|
|
10
|
+
#
|
|
11
|
+
# @example
|
|
12
|
+
# Faker::Computer.platform #=> "Linux"
|
|
13
|
+
#
|
|
14
|
+
# @faker.version 2.12.0
|
|
15
|
+
def platform
|
|
16
|
+
fetch('computer.platform')
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
##
|
|
20
|
+
# Produces the name of a computer type.
|
|
21
|
+
#
|
|
22
|
+
# @return [String]
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
# Faker::Computer.type #=> "server"
|
|
26
|
+
#
|
|
27
|
+
# @faker.version 2.12.0
|
|
28
|
+
def type
|
|
29
|
+
fetch('computer.type')
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
##
|
|
33
|
+
# Produces the name of a computer os.
|
|
34
|
+
#
|
|
35
|
+
# @param platform [String] optionally specify the platform `linux`, `macos`, or `windows`.
|
|
36
|
+
# @return [String]
|
|
37
|
+
#
|
|
38
|
+
# @example
|
|
39
|
+
# Faker::Computer.os #=> "RHEL 6.10"
|
|
40
|
+
#
|
|
41
|
+
# @faker.version 2.12.0
|
|
42
|
+
def os(platform: self.platform)
|
|
43
|
+
platform = self.platform unless fetch_all('computer.platform').include?(platform)
|
|
44
|
+
fetch("computer.os.#{platform.downcase}")
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
##
|
|
48
|
+
# Produces a string with computer platform and os
|
|
49
|
+
#
|
|
50
|
+
# @return [String]
|
|
51
|
+
#
|
|
52
|
+
# @example
|
|
53
|
+
# Faker::Computer.stack #=> "Linux, RHEL 6.10"
|
|
54
|
+
#
|
|
55
|
+
# @faker.version 2.12.0
|
|
56
|
+
def stack
|
|
57
|
+
platform = self.platform
|
|
58
|
+
os = fetch("computer.os.#{platform.downcase}")
|
|
59
|
+
"#{platform}, #{os}"
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -2,26 +2,80 @@
|
|
|
2
2
|
|
|
3
3
|
module Faker
|
|
4
4
|
class Construction < Base
|
|
5
|
+
##
|
|
6
|
+
# Produces a random material.
|
|
7
|
+
#
|
|
8
|
+
# @return [String]
|
|
9
|
+
#
|
|
10
|
+
# @example
|
|
11
|
+
# Faker::Construction.material #=> "Wood"
|
|
12
|
+
#
|
|
13
|
+
# @faker.version 1.9.2
|
|
5
14
|
def self.material
|
|
6
15
|
fetch('construction.materials')
|
|
7
16
|
end
|
|
8
17
|
|
|
18
|
+
##
|
|
19
|
+
# Produces a random heavy equipment.
|
|
20
|
+
#
|
|
21
|
+
# @return [String]
|
|
22
|
+
#
|
|
23
|
+
# @example
|
|
24
|
+
# Faker::Construction.heavy_equipment #=> "Excavator"
|
|
25
|
+
#
|
|
26
|
+
# @faker.version 1.9.2
|
|
9
27
|
def self.heavy_equipment
|
|
10
28
|
fetch('construction.heavy_equipment')
|
|
11
29
|
end
|
|
12
30
|
|
|
31
|
+
##
|
|
32
|
+
# Produces a random trade.
|
|
33
|
+
#
|
|
34
|
+
# @return [String]
|
|
35
|
+
#
|
|
36
|
+
# @example
|
|
37
|
+
# Faker::Construction.trade #=> "Carpenter"
|
|
38
|
+
#
|
|
39
|
+
# @faker.version 1.9.2
|
|
13
40
|
def self.trade
|
|
14
41
|
fetch('construction.trades')
|
|
15
42
|
end
|
|
16
43
|
|
|
44
|
+
##
|
|
45
|
+
# Produces a random subcontract category.
|
|
46
|
+
#
|
|
47
|
+
# @return [String]
|
|
48
|
+
#
|
|
49
|
+
# @example
|
|
50
|
+
# Faker::Construction.subcontract_category #=> "Curb & Gutter"
|
|
51
|
+
#
|
|
52
|
+
# @faker.version 1.9.2
|
|
17
53
|
def self.subcontract_category
|
|
18
54
|
fetch('construction.subcontract_categories')
|
|
19
55
|
end
|
|
20
56
|
|
|
57
|
+
##
|
|
58
|
+
# Produces a random standard cost code.
|
|
59
|
+
#
|
|
60
|
+
# @return [String]
|
|
61
|
+
#
|
|
62
|
+
# @example
|
|
63
|
+
# Faker::Construction.standard_cost_code #=> "1-000 - Purpose"
|
|
64
|
+
#
|
|
65
|
+
# @faker.version 1.9.2
|
|
21
66
|
def self.standard_cost_code
|
|
22
67
|
fetch('construction.standard_cost_codes')
|
|
23
68
|
end
|
|
24
69
|
|
|
70
|
+
##
|
|
71
|
+
# Produces a random role.
|
|
72
|
+
#
|
|
73
|
+
# @return [String]
|
|
74
|
+
#
|
|
75
|
+
# @example
|
|
76
|
+
# Faker::Construction.role #=> "Engineer"
|
|
77
|
+
#
|
|
78
|
+
# @faker.version 1.9.2
|
|
25
79
|
def self.role
|
|
26
80
|
fetch('construction.roles')
|
|
27
81
|
end
|