faker 2.11.0 → 3.2.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 +810 -19
- data/History.md +5 -5
- data/README.md +232 -105
- data/lib/faker/blockchain/aeternity.rb +5 -5
- data/lib/faker/blockchain/bitcoin.rb +2 -2
- data/lib/faker/blockchain/ethereum.rb +1 -1
- data/lib/faker/blockchain/tezos.rb +31 -3
- data/lib/faker/books/dune.rb +17 -12
- data/lib/faker/books/lovecraft.rb +14 -41
- data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
- data/lib/faker/creature/bird.rb +203 -0
- data/lib/faker/default/address.rb +40 -30
- data/lib/faker/default/adjective.rb +35 -0
- data/lib/faker/default/alphanumeric.rb +2 -8
- data/lib/faker/default/app.rb +1 -10
- data/lib/faker/default/avatar.rb +1 -12
- data/lib/faker/default/bank.rb +104 -19
- 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/boolean.rb +1 -4
- 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 +54 -16
- data/lib/faker/default/chuck_norris.rb +1 -0
- data/lib/faker/default/code.rb +106 -38
- data/lib/faker/default/color.rb +77 -6
- data/lib/faker/default/commerce.rb +105 -28
- data/lib/faker/default/company.rb +116 -28
- 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 +17 -4
- data/lib/faker/default/crypto_coin.rb +48 -15
- data/lib/faker/default/date.rb +21 -50
- data/lib/faker/default/demographic.rb +1 -5
- data/lib/faker/default/driving_licence.rb +66 -10
- data/lib/faker/default/drone.rb +332 -0
- data/lib/faker/default/educator.rb +13 -0
- data/lib/faker/default/emotion.rb +33 -0
- data/lib/faker/default/file.rb +53 -21
- data/lib/faker/default/finance.rb +75 -7
- data/lib/faker/default/food.rb +28 -2
- data/lib/faker/default/gender.rb +1 -1
- data/lib/faker/default/hipster.rb +106 -48
- data/lib/faker/default/hobby.rb +22 -0
- data/lib/faker/default/id_number.rb +230 -13
- data/lib/faker/default/internet.rb +390 -108
- data/lib/faker/default/internet_http.rb +48 -0
- data/lib/faker/default/invoice.rb +37 -23
- data/lib/faker/default/json.rb +61 -23
- data/lib/faker/default/lorem.rb +171 -72
- data/lib/faker/default/lorem_flickr.rb +69 -37
- data/lib/faker/default/markdown.rb +97 -11
- data/lib/faker/default/marketing.rb +1 -1
- data/lib/faker/default/measurement.rb +101 -42
- data/lib/faker/default/military.rb +26 -0
- data/lib/faker/default/mountain.rb +33 -0
- data/lib/faker/default/name.rb +99 -5
- data/lib/faker/default/nation.rb +0 -3
- data/lib/faker/default/nhs.rb +21 -6
- data/lib/faker/default/number.rb +38 -68
- data/lib/faker/default/omniauth.rb +111 -53
- data/lib/faker/default/phone_number.rb +89 -10
- data/lib/faker/default/placeholdit.rb +23 -12
- data/lib/faker/default/relationship.rb +2 -6
- data/lib/faker/default/religion.rb +6 -0
- data/lib/faker/default/science.rb +108 -0
- data/lib/faker/default/slack_emoji.rb +81 -0
- data/lib/faker/default/source.rb +3 -16
- data/lib/faker/default/south_africa.rb +90 -0
- data/lib/faker/default/space.rb +1 -1
- data/lib/faker/default/string.rb +18 -8
- data/lib/faker/default/stripe.rb +68 -23
- data/lib/faker/default/tea.rb +41 -0
- data/lib/faker/default/time.rb +4 -34
- data/lib/faker/default/twitter.rb +42 -23
- data/lib/faker/default/types.rb +88 -29
- data/lib/faker/default/university.rb +45 -0
- data/lib/faker/default/vehicle.rb +212 -54
- data/lib/faker/default/verb.rb +45 -0
- data/lib/faker/default/vulnerability_identifier.rb +23 -0
- data/lib/faker/default/world_cup.rb +6 -15
- 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 +178 -0
- data/lib/faker/games/dota.rb +14 -5
- 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/myst.rb +1 -1
- data/lib/faker/games/street_fighter.rb +61 -0
- data/lib/faker/games/super_mario.rb +48 -0
- data/lib/faker/games/tarkov.rb +205 -0
- data/lib/faker/games/touhou.rb +75 -0
- data/lib/faker/games/warhammer_fantasy.rb +74 -0
- data/lib/faker/games/witcher.rb +39 -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/cowboy_bebop.rb +61 -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/fullmetal_alchemist_brotherhood.rb +48 -0
- data/lib/faker/japanese_media/kamen_rider.rb +102 -0
- data/lib/faker/japanese_media/naruto.rb +61 -0
- data/lib/faker/japanese_media/one_piece.rb +1 -1
- data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
- data/lib/faker/locations/australia.rb +47 -0
- data/lib/faker/movies/avatar.rb +49 -0
- data/lib/faker/movies/departed.rb +49 -0
- data/lib/faker/movies/hackers.rb +48 -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 +75 -7
- data/lib/faker/movies/tron.rb +161 -0
- data/lib/faker/music/hiphop.rb +48 -0
- data/lib/faker/music/music.rb +12 -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 +93 -1
- data/lib/faker/quotes/rajnikanth.rb +1 -0
- data/lib/faker/quotes/shakespeare.rb +70 -0
- data/lib/faker/religion/bible.rb +50 -0
- data/lib/faker/sports/chess.rb +90 -0
- data/lib/faker/sports/mountaineering.rb +22 -0
- data/lib/faker/sports/sport.rb +116 -0
- data/lib/faker/sports/volleyball.rb +74 -0
- data/lib/faker/travel/airport.rb +43 -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/brooklyn_nine_nine.rb +38 -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/michael_scott.rb +0 -3
- data/lib/faker/tv_shows/simpsons.rb +14 -0
- data/lib/faker/tv_shows/spongebob.rb +50 -0
- data/lib/faker/tv_shows/suits.rb +37 -0
- data/lib/faker/tv_shows/supernatural.rb +48 -0
- data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +17 -4
- data/lib/faker/tv_shows/the_office.rb +37 -0
- data/lib/faker/version.rb +2 -2
- data/lib/faker.rb +40 -84
- data/lib/helpers/base58.rb +1 -1
- data/lib/helpers/char.rb +22 -27
- data/lib/helpers/unique_generator.rb +13 -13
- data/lib/locales/ar.yml +6 -1
- data/lib/locales/bg.yml +1 -1
- data/lib/locales/da-DK.yml +1 -1
- data/lib/locales/de-AT.yml +7 -6
- data/lib/locales/de-CH.yml +1697 -2
- data/lib/locales/de.yml +12 -6
- data/lib/locales/en/address.yml +4 -3
- data/lib/locales/en/adjective.yml +179 -0
- data/lib/locales/en/airport.yml +381 -0
- data/lib/locales/en/animal.yml +1 -1
- data/lib/locales/en/aqua_teen_hunger_force.yml +33 -1
- data/lib/locales/en/australia.yml +107 -0
- data/lib/locales/en/avatar.yml +31 -0
- data/lib/locales/en/bank.yml +1 -1
- data/lib/locales/en/barcode.yml +24 -0
- data/lib/locales/en/bible.yml +90 -0
- data/lib/locales/en/big_bang_theory.yml +38 -0
- data/lib/locales/en/bird.yml +1281 -0
- data/lib/locales/en/blood.yml +13 -0
- data/lib/locales/en/book.yml +487 -3
- data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
- data/lib/locales/en/buffy.yml +1 -1
- data/lib/locales/en/camera.yml +611 -0
- data/lib/locales/en/cat.yml +1 -1
- data/lib/locales/en/chess.yml +103 -0
- data/lib/locales/en/clash_of_clan.yml +101 -0
- data/lib/locales/en/coffee.yml +1 -1
- data/lib/locales/en/commerce.yml +17 -0
- data/lib/locales/en/community.yml +17 -17
- data/lib/locales/en/company.yml +3 -2
- data/lib/locales/en/computer.yml +55 -0
- data/lib/locales/en/conan.yml +171 -0
- data/lib/locales/en/control.yml +247 -0
- data/lib/locales/en/cowboy_bebop.yml +163 -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 +636 -0
- data/lib/locales/en/doraemon.yml +286 -0
- data/lib/locales/en/dota.yml +651 -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 +270 -131
- data/lib/locales/en/educator.yml +6 -0
- data/lib/locales/en/elder_scrolls.yml +583 -9
- data/lib/locales/en/emotion.yml +480 -0
- data/lib/locales/en/fallout.yml +311 -133
- data/lib/locales/en/file.yml +9 -1
- data/lib/locales/en/final_space.yml +37 -0
- data/lib/locales/en/finance.yml +77 -1
- data/lib/locales/en/fma_brotherhood.yml +78 -0
- data/lib/locales/en/food.yml +1066 -10
- 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/game.yml +11 -0
- data/lib/locales/en/hackers.yml +53 -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/hobby.yml +171 -0
- data/lib/locales/en/horse.yml +2 -2
- data/lib/locales/en/house.yml +1 -1
- data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
- data/lib/locales/en/internet.yml +140 -3
- data/lib/locales/en/jack_handey.yml +54 -0
- data/lib/locales/en/kamen_rider.yml +452 -0
- data/lib/locales/en/kpop.yml +7 -7
- data/lib/locales/en/league_of_legends.yml +285 -6
- data/lib/locales/en/lebowski.yml +1 -1
- data/lib/locales/en/lovecraft.yml +76 -6
- data/lib/locales/en/military.yml +179 -5
- data/lib/locales/en/minecraft.yml +663 -0
- data/lib/locales/en/mitch_hedberg.yml +46 -0
- data/lib/locales/en/mountain.yml +171 -0
- data/lib/locales/en/mountaineering.yml +14 -0
- data/lib/locales/en/movie.yml +194 -2
- data/lib/locales/en/music.yml +461 -29
- data/lib/locales/en/myst.yml +87 -31
- data/lib/locales/en/name.yml +5 -4
- data/lib/locales/en/naruto.yml +230 -0
- data/lib/locales/en/one_piece.yml +2 -2
- data/lib/locales/en/opera.yml +169 -1
- data/lib/locales/en/overwatch.yml +2648 -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/science.yml +481 -3
- 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 +35 -0
- data/lib/locales/en/space.yml +1 -1
- data/lib/locales/en/spongebob.yml +489 -0
- data/lib/locales/en/sport.yml +130 -0
- data/lib/locales/en/star_trek.yml +1 -1
- data/lib/locales/en/star_wars.yml +568 -220
- data/lib/locales/en/stranger_thing.yml +1 -1
- 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 +23 -6
- data/lib/locales/en/supernatural.yml +141 -0
- data/lib/locales/en/tarkov.yml +593 -0
- data/lib/locales/en/tea.yml +172 -0
- data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
- data/lib/locales/en/the_office.yml +86 -0
- data/lib/locales/en/tolkien.yml +2453 -0
- data/lib/locales/en/touhou.yml +839 -0
- data/lib/locales/en/tron.yml +227 -0
- data/lib/locales/en/vehicle.yml +2809 -75
- data/lib/locales/en/volleyball.yml +501 -0
- data/lib/locales/en/warhammer_fantasy.yml +582 -0
- data/lib/locales/en/witcher.yml +426 -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 +4 -1
- data/lib/locales/en-GB.yml +3 -2
- data/lib/locales/en-IND.yml +2 -1
- data/lib/locales/en-MS.yml +3 -1
- data/lib/locales/en-NEP.yml +4 -1
- data/lib/locales/en-NG.yml +1 -0
- data/lib/locales/en-NZ.yml +4 -1
- data/lib/locales/en-PAK.yml +3 -1
- data/lib/locales/en-SG.yml +3 -1
- data/lib/locales/en-UG.yml +1 -0
- data/lib/locales/en-US.yml +38 -12
- data/lib/locales/en-ZA.yml +1 -1
- data/lib/locales/en-au-ocker.yml +4 -1
- data/lib/locales/en.yml +0 -3
- data/lib/locales/es-AR.yml +4601 -0
- data/lib/locales/es-MX.yml +1 -1
- data/lib/locales/es.yml +58 -2
- data/lib/locales/fi-FI.yml +4 -2
- data/lib/locales/fr/address.yml +20 -0
- data/lib/locales/fr/adjective.yml +266 -0
- data/lib/locales/fr/ancient.yml +141 -0
- data/lib/locales/fr/animal.yml +5 -0
- data/lib/locales/fr/appliance.yml +4 -0
- data/lib/locales/fr/book.yml +7 -0
- data/lib/locales/fr/color.yml +4 -0
- data/lib/locales/fr/company.yml +17 -0
- data/lib/locales/fr/compass.yml +23 -0
- data/lib/locales/fr/demographic.yml +4 -0
- data/lib/locales/fr/gender.yml +6 -0
- data/lib/locales/fr/internet.yml +5 -0
- data/lib/locales/fr/lorem.yml +5 -0
- data/lib/locales/fr/measurement.yml +7 -0
- data/lib/locales/fr/name.yml +21 -0
- data/lib/locales/fr/phone_number.yml +7 -0
- data/lib/locales/fr/pokemon.yml +7 -0
- data/lib/locales/fr-CA.yml +22 -6
- data/lib/locales/fr-CH.yml +3 -3
- data/lib/locales/fr.yml +1 -113
- data/lib/locales/hy.yml +2 -1
- data/lib/locales/id.yml +3 -1
- data/lib/locales/it.yml +3 -1
- data/lib/locales/ja/README.md +13 -0
- data/lib/locales/ja/address.yml +120539 -0
- data/lib/locales/ja/adjective.yml +148 -0
- data/lib/locales/ja/ancient.yml +4 -0
- data/lib/locales/ja/animal.yml +5 -0
- data/lib/locales/ja/bank.yml +4 -0
- data/lib/locales/ja/book.yml +7 -0
- data/lib/locales/ja/cat.yml +5 -0
- data/lib/locales/ja/coffee.yml +4 -0
- data/lib/locales/ja/color.yml +4 -0
- data/lib/locales/ja/commerce.yml +11 -0
- data/lib/locales/ja/company.yml +8 -0
- data/lib/locales/ja/dog.yml +6 -0
- data/lib/locales/ja/emotion.yml +51 -0
- data/lib/locales/ja/food.yml +4 -0
- data/lib/locales/ja/gender.yml +4 -0
- data/lib/locales/ja/lorem.yml +9 -0
- data/lib/locales/ja/name.yml +13 -0
- data/lib/locales/ja/naruto.yml +230 -0
- data/lib/locales/ja/overwatch.yml +5 -0
- data/lib/locales/ja/phone_number.yml +7 -0
- data/lib/locales/ja/pokemon.yml +7 -0
- data/lib/locales/ja/relationship.yml +10 -0
- data/lib/locales/ja/restaurant.yml +11 -0
- data/lib/locales/ja/space.yml +5 -0
- data/lib/locales/ja/studio_ghibli.yml +112 -0
- data/lib/locales/ja/subscription.yml +8 -0
- data/lib/locales/ja/super_mario.yml +9 -0
- data/lib/locales/ja/super_smash_bros.yml +8 -0
- data/lib/locales/ja/university.yml +9 -0
- data/lib/locales/ja/zelda.yml +5 -0
- data/lib/locales/ko.yml +95 -2
- data/lib/locales/lt.yml +34 -0
- data/lib/locales/lv.yml +1 -1
- data/lib/locales/mi-NZ.yml +283 -0
- data/lib/locales/nb-NO.yml +5 -2
- data/lib/locales/nl.yml +1 -0
- data/lib/locales/pl.yml +2 -2
- data/lib/locales/pt-BR.yml +10 -2
- data/lib/locales/pt.yml +4 -2
- data/lib/locales/ru.yml +43 -1
- data/lib/locales/sk.yml +5 -2
- data/lib/locales/sv.yml +1 -0
- data/lib/locales/th.yml +76 -76
- data/lib/locales/tr.yml +1 -0
- data/lib/locales/uk.yml +3 -0
- data/lib/locales/vi.yml +1 -0
- data/lib/locales/zh-CN.yml +1 -0
- data/lib/locales/zh-TW.yml +1 -0
- metadata +219 -29
- data/lib/faker/default/fillmurray.rb +0 -45
- data/lib/faker/default/lorem_pixel.rb +0 -47
- data/lib/locales/en/hobbit.yml +0 -19
- data/lib/locales/en/lord_of_the_rings.yml +0 -6
- data/lib/locales/ja.yml +0 -101
|
@@ -5,18 +5,34 @@ module Faker
|
|
|
5
5
|
class << self
|
|
6
6
|
@last_rut = nil
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
|
21
|
+
def rut(min_rut: 1, fixed: false)
|
|
15
22
|
@last_rut = fixed ? min_rut : rand_in_range(min_rut, 99_999_999)
|
|
16
23
|
end
|
|
17
24
|
|
|
25
|
+
##
|
|
26
|
+
# Produces a random Chilean digito verificador (check-digit).
|
|
27
|
+
#
|
|
28
|
+
# @return [String]
|
|
29
|
+
#
|
|
30
|
+
# @example
|
|
31
|
+
# Faker::ChileRut.dv #=> "k"
|
|
32
|
+
#
|
|
33
|
+
# @faker.version 1.9.2
|
|
18
34
|
def dv
|
|
19
|
-
split_reversed_rut = @last_rut.to_s.reverse.
|
|
35
|
+
split_reversed_rut = @last_rut.to_s.reverse.chars
|
|
20
36
|
seq = [2, 3, 4, 5, 6, 7]
|
|
21
37
|
i = 0
|
|
22
38
|
digit_sum = split_reversed_rut.reduce(0) do |sum, n|
|
|
@@ -25,27 +41,49 @@ module Faker
|
|
|
25
41
|
partial_result
|
|
26
42
|
end
|
|
27
43
|
partial_check_digit = 11 - (digit_sum % 11)
|
|
28
|
-
|
|
44
|
+
case partial_check_digit
|
|
45
|
+
when 11
|
|
29
46
|
'0'
|
|
30
|
-
|
|
47
|
+
when 10
|
|
31
48
|
'k'
|
|
32
49
|
else
|
|
33
50
|
partial_check_digit.to_s
|
|
34
51
|
end
|
|
35
52
|
end
|
|
36
53
|
|
|
54
|
+
##
|
|
55
|
+
# Produces a random Chilean digito verificador (check-digit).
|
|
37
56
|
# Alias for english speaking devs.
|
|
57
|
+
#
|
|
58
|
+
# @return [String]
|
|
59
|
+
#
|
|
60
|
+
# @example
|
|
61
|
+
# Faker::ChileRut.check_digit #=> "5"
|
|
62
|
+
#
|
|
63
|
+
# @faker.version 1.9.2
|
|
38
64
|
def check_digit
|
|
39
65
|
dv
|
|
40
66
|
end
|
|
41
67
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
68
|
+
##
|
|
69
|
+
# Produces a random Chilean RUT (Rol Unico Tributario, ID with 8 digits) with a dv (digito verificador, check-digit).
|
|
70
|
+
#
|
|
71
|
+
# @param min_rut [Integer] Specifies the minimum value of the rut.
|
|
72
|
+
# @param fixed [Boolean] Determines if the rut is fixed (returns the min_rut value).
|
|
73
|
+
# @return [String]
|
|
74
|
+
#
|
|
75
|
+
# @example
|
|
76
|
+
# Faker::ChileRut.full_rut #=> "30686957-4"
|
|
77
|
+
# Faker::ChileRut.full_rut(min_rut: 20890156) #=> "30686957-4"
|
|
78
|
+
# Faker::ChileRut.full_rut(min_rut: 30686957, fixed: true) #=> "30686957-4"
|
|
79
|
+
#
|
|
80
|
+
# @faker.version next
|
|
81
|
+
def full_rut(min_rut: 0, fixed: false, formatted: false)
|
|
82
|
+
if formatted
|
|
83
|
+
"#{rut(min_rut: min_rut, fixed: fixed).to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1.').reverse}-#{dv}"
|
|
84
|
+
else
|
|
85
|
+
"#{rut(min_rut: min_rut, fixed: fixed)}-#{dv}"
|
|
46
86
|
end
|
|
47
|
-
|
|
48
|
-
"#{rut(min_rut: min_rut, fixed: fixed)}-#{dv}"
|
|
49
87
|
end
|
|
50
88
|
|
|
51
89
|
attr_reader :last_rut
|
data/lib/faker/default/code.rb
CHANGED
|
@@ -4,67 +4,137 @@ module Faker
|
|
|
4
4
|
class Code < Base
|
|
5
5
|
flexible :code
|
|
6
6
|
class << self
|
|
7
|
-
|
|
8
|
-
#
|
|
7
|
+
##
|
|
8
|
+
# Produces a random NPI (National Provider Identifier) code.
|
|
9
|
+
#
|
|
10
|
+
# @return [String]
|
|
11
|
+
#
|
|
12
|
+
# @example
|
|
13
|
+
# Faker::Code.npi #=> "9804062802"
|
|
14
|
+
#
|
|
15
|
+
# @faker.version 1.9.4
|
|
9
16
|
def npi
|
|
10
17
|
rand(10**10).to_s.rjust(10, '0')
|
|
11
18
|
end
|
|
12
19
|
|
|
13
|
-
|
|
14
|
-
#
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
##
|
|
21
|
+
# Produces a random ISBN (International Standard Book Number) code.
|
|
22
|
+
#
|
|
23
|
+
# @param base [Integer] the length of the code to generate (either 10 or 13)
|
|
24
|
+
# @return [String]
|
|
25
|
+
#
|
|
26
|
+
# @example
|
|
27
|
+
# Faker::Code.isbn(base: 13) #=> "896579606969-8"
|
|
28
|
+
# @example
|
|
29
|
+
# Faker::Code.isbn #=> "170366802-2"
|
|
30
|
+
#
|
|
31
|
+
# @faker.version 2.2.0
|
|
32
|
+
def isbn(base: 10)
|
|
33
|
+
case base
|
|
34
|
+
when 10 then generate_base10_isbn
|
|
35
|
+
when 13 then generate_base13_isbn
|
|
36
|
+
else raise ArgumentError, 'base must be 10 or 13'
|
|
18
37
|
end
|
|
19
|
-
|
|
20
|
-
base == 13 ? generate_base13_isbn : generate_base10_isbn
|
|
21
38
|
end
|
|
22
39
|
|
|
23
|
-
|
|
24
|
-
#
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
40
|
+
##
|
|
41
|
+
# Produces a random EAN (European Article Number) code.
|
|
42
|
+
#
|
|
43
|
+
# @param base [Integer] the length of the code to generate (either 8 or 13)
|
|
44
|
+
# @return [String]
|
|
45
|
+
#
|
|
46
|
+
# @example
|
|
47
|
+
# Faker::Code.ean(base: 8) #=> "36941070"
|
|
48
|
+
# @example
|
|
49
|
+
# Faker::Code.ean #=> "9941880131907"
|
|
50
|
+
#
|
|
51
|
+
# @faker.version 2.2.0
|
|
52
|
+
def ean(base: 13)
|
|
53
|
+
case base
|
|
54
|
+
when 8 then generate_base8_ean
|
|
55
|
+
when 13 then generate_base13_ean
|
|
56
|
+
else raise ArgumentError, 'base must be 8 or 13'
|
|
28
57
|
end
|
|
29
|
-
|
|
30
|
-
base == 8 ? generate_base8_ean : generate_base13_ean
|
|
31
58
|
end
|
|
32
59
|
|
|
60
|
+
##
|
|
61
|
+
# Produces a random RUT (Rol Unico Nacional) code.
|
|
62
|
+
#
|
|
63
|
+
# @return [String]
|
|
64
|
+
#
|
|
65
|
+
# @example
|
|
66
|
+
# Faker::Code.rut #=> "91611842-2"
|
|
67
|
+
#
|
|
68
|
+
# @faker.version 1.9.4
|
|
33
69
|
def rut
|
|
34
70
|
value = Number.number(digits: 8).to_s
|
|
35
71
|
vd = rut_verificator_digit(value)
|
|
36
72
|
value << "-#{vd}"
|
|
37
73
|
end
|
|
38
74
|
|
|
75
|
+
##
|
|
76
|
+
# Produces a random NRIC (National Registry Identity Card) code.
|
|
39
77
|
# By default generates a Singaporean NRIC ID for someone
|
|
40
78
|
# who is born between the age of 18 and 65.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
79
|
+
#
|
|
80
|
+
# @param min_age [Integer] the min age of the person in years
|
|
81
|
+
# @param max_age [Integer] the max age of the person in years
|
|
82
|
+
# @return [String]
|
|
83
|
+
#
|
|
84
|
+
# @example
|
|
85
|
+
# Faker::Code.nric(min_age: 25, max_age: 50) #=> "S9347283G"
|
|
86
|
+
# @example
|
|
87
|
+
# Faker::Code.nric(max_age: 55) #=> "S7876903C"
|
|
88
|
+
# @example
|
|
89
|
+
# Faker::Code.nric(min_age: 25) #=> "S6281697Z"
|
|
90
|
+
# @example
|
|
91
|
+
# Faker::Code.nric #=> "S6372958B"
|
|
92
|
+
#
|
|
93
|
+
# @faker.version 2.2.0
|
|
94
|
+
def nric(min_age: 18, max_age: 65)
|
|
47
95
|
birthyear = Date.birthday(min_age: min_age, max_age: max_age).year
|
|
48
96
|
prefix = birthyear < 2000 ? 'S' : 'T'
|
|
49
|
-
values = birthyear.to_s[-2
|
|
97
|
+
values = birthyear.to_s[-2..]
|
|
50
98
|
values << regexify(/\d{5}/)
|
|
51
99
|
check_alpha = generate_nric_check_alphabet(values, prefix)
|
|
52
100
|
"#{prefix}#{values}#{check_alpha}"
|
|
53
101
|
end
|
|
54
102
|
|
|
55
|
-
|
|
103
|
+
##
|
|
104
|
+
# Produces a random IMEI (International Mobile Equipment Number) code.
|
|
105
|
+
#
|
|
106
|
+
# @return [String]
|
|
107
|
+
#
|
|
108
|
+
# @example
|
|
109
|
+
# Faker::Code.imei #=> "492033129092256"
|
|
110
|
+
#
|
|
111
|
+
# @faker.version 1.9.4
|
|
56
112
|
def imei
|
|
57
113
|
generate_imei
|
|
58
114
|
end
|
|
59
115
|
|
|
60
|
-
|
|
61
|
-
# https://archive.org/details/asin_listing
|
|
116
|
+
##
|
|
117
|
+
# Retrieves a real Amazon ASIN code from https://archive.org/details/asin_listing
|
|
118
|
+
#
|
|
119
|
+
# @return [String]
|
|
120
|
+
#
|
|
121
|
+
# @example
|
|
122
|
+
# Faker::Code.asin #=> "B000MZW1GE"
|
|
123
|
+
#
|
|
124
|
+
# @faker.version 1.9.4
|
|
62
125
|
def asin
|
|
63
126
|
fetch('code.asin')
|
|
64
127
|
end
|
|
65
128
|
|
|
66
|
-
|
|
67
|
-
#
|
|
129
|
+
##
|
|
130
|
+
# Produces a random SIN (Social Insurance Number for Canada) code.
|
|
131
|
+
#
|
|
132
|
+
# @return [String]
|
|
133
|
+
#
|
|
134
|
+
# @example
|
|
135
|
+
# Faker::Code.sin #=> "996586962"
|
|
136
|
+
#
|
|
137
|
+
# @faker.version 1.9.4
|
|
68
138
|
def sin
|
|
69
139
|
# 1 - province or temporary resident
|
|
70
140
|
# 2-8 - random numbers
|
|
@@ -77,7 +147,7 @@ module Faker
|
|
|
77
147
|
partial = Array.new(7) { Faker::Config.random.rand(0..9) }.join
|
|
78
148
|
|
|
79
149
|
# Generate 9th digit
|
|
80
|
-
check_digit = generate_sin_check_digit(registry
|
|
150
|
+
check_digit = generate_sin_check_digit("#{registry}#{partial}0").to_s
|
|
81
151
|
|
|
82
152
|
registry + partial + check_digit
|
|
83
153
|
end
|
|
@@ -90,8 +160,6 @@ module Faker
|
|
|
90
160
|
def generate_imei
|
|
91
161
|
str = Array.new(15, 0)
|
|
92
162
|
sum = 0
|
|
93
|
-
t = 0
|
|
94
|
-
len_offset = 0
|
|
95
163
|
len = 15
|
|
96
164
|
|
|
97
165
|
# Fill in the first two values of the string based with the specified prefix.
|
|
@@ -125,7 +193,7 @@ module Faker
|
|
|
125
193
|
str[len - 1] = (10 - (sum % 10)) % 10
|
|
126
194
|
|
|
127
195
|
# Output the IMEI value.
|
|
128
|
-
str.join
|
|
196
|
+
str.join
|
|
129
197
|
end
|
|
130
198
|
|
|
131
199
|
def generate_base10_isbn
|
|
@@ -137,24 +205,24 @@ module Faker
|
|
|
137
205
|
def generate_base13_isbn
|
|
138
206
|
values = regexify(/\d{12}/)
|
|
139
207
|
remainder = sum(values) { |value, index| index.even? ? value.to_i : value.to_i * 3 } % 10
|
|
140
|
-
values << "-#{(
|
|
208
|
+
values << "-#{(10 - remainder) % 10}"
|
|
141
209
|
end
|
|
142
210
|
|
|
143
211
|
def sum(values)
|
|
144
|
-
values.
|
|
212
|
+
values.chars.each_with_index.inject(0) do |sum, (value, index)|
|
|
145
213
|
sum + yield(value, index)
|
|
146
214
|
end
|
|
147
215
|
end
|
|
148
216
|
|
|
149
217
|
def generate_base8_ean
|
|
150
218
|
values = regexify(/\d{7}/)
|
|
151
|
-
check_digit = 10 - values.
|
|
219
|
+
check_digit = 10 - values.chars.each_with_index.inject(0) { |s, (v, i)| s + v.to_i * EAN_CHECK_DIGIT8[i] } % 10
|
|
152
220
|
values << (check_digit == 10 ? 0 : check_digit).to_s
|
|
153
221
|
end
|
|
154
222
|
|
|
155
223
|
def generate_base13_ean
|
|
156
224
|
values = regexify(/\d{12}/)
|
|
157
|
-
check_digit = 10 - values.
|
|
225
|
+
check_digit = 10 - values.chars.each_with_index.inject(0) { |s, (v, i)| s + v.to_i * EAN_CHECK_DIGIT13[i] } % 10
|
|
158
226
|
values << (check_digit == 10 ? 0 : check_digit).to_s
|
|
159
227
|
end
|
|
160
228
|
|
|
@@ -162,13 +230,13 @@ module Faker
|
|
|
162
230
|
EAN_CHECK_DIGIT13 = [1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3].freeze
|
|
163
231
|
|
|
164
232
|
def rut_verificator_digit(rut)
|
|
165
|
-
total = rut.to_s.rjust(8, '0').
|
|
233
|
+
total = rut.to_s.rjust(8, '0').chars.zip(%w[3 2 7 6 5 4 3 2]).collect { |a, b| a.to_i * b.to_i }.inject(:+)
|
|
166
234
|
(11 - total % 11).to_s.gsub(/10/, 'k').gsub(/11/, '0')
|
|
167
235
|
end
|
|
168
236
|
|
|
169
237
|
def generate_nric_check_alphabet(values, prefix)
|
|
170
238
|
weight = %w[2 7 6 5 4 3 2]
|
|
171
|
-
total = values.
|
|
239
|
+
total = values.chars.zip(weight).collect { |a, b| a.to_i * b.to_i }.inject(:+)
|
|
172
240
|
total += 4 if prefix == 'T'
|
|
173
241
|
%w[A B C D E F G H I Z J][10 - total % 11]
|
|
174
242
|
end
|
data/lib/faker/default/color.rb
CHANGED
|
@@ -3,17 +3,34 @@
|
|
|
3
3
|
module Faker
|
|
4
4
|
class Color < Base
|
|
5
5
|
class << self
|
|
6
|
+
LIGHTNESS_LOOKUP = {
|
|
7
|
+
light: 0.8,
|
|
8
|
+
dark: 0.2
|
|
9
|
+
}.freeze
|
|
6
10
|
##
|
|
7
11
|
# Produces a hex color code.
|
|
12
|
+
# Clients are able to specify the hue, saturation, or lightness of the required color.
|
|
13
|
+
# Alternatively a client can simply specify that they need a light or dark color.
|
|
14
|
+
#
|
|
15
|
+
# @param args [Hash, Symbol] Allows the client to specify what color should be return
|
|
8
16
|
#
|
|
9
17
|
# @return [String]
|
|
10
18
|
#
|
|
11
19
|
# @example
|
|
12
20
|
# Faker::Color.hex_color #=> "#31a785"
|
|
21
|
+
# @example
|
|
22
|
+
# Faker::Color.hex_color(hue: 118, saturation: 1, lightness: 0.53) #=> "#048700"
|
|
23
|
+
# @example
|
|
24
|
+
# Faker::Color.hex_color(:light) #=> "#FFEE99"
|
|
25
|
+
# @example
|
|
26
|
+
# Faker::Color.hex_color(:dark) #=> "#665500"
|
|
13
27
|
#
|
|
14
|
-
# @faker.version
|
|
15
|
-
def hex_color
|
|
16
|
-
|
|
28
|
+
# @faker.version next
|
|
29
|
+
def hex_color(args = nil)
|
|
30
|
+
hsl_hash = {}
|
|
31
|
+
hsl_hash = { lightness: LIGHTNESS_LOOKUP[args] } if %i[dark light].include?(args)
|
|
32
|
+
hsl_hash = args if args.is_a?(Hash)
|
|
33
|
+
hsl_to_hex(hsl_color(**hsl_hash))
|
|
17
34
|
end
|
|
18
35
|
|
|
19
36
|
##
|
|
@@ -51,14 +68,28 @@ module Faker
|
|
|
51
68
|
# Produces an array of floats representing an HSL color.
|
|
52
69
|
# The array is in the form of `[hue, saturation, lightness]`.
|
|
53
70
|
#
|
|
71
|
+
# @param hue [FLoat] Optional value to use for hue
|
|
72
|
+
# @param saturation [Float] Optional value to use for saturation
|
|
73
|
+
# @param lightness [Float] Optional value to use for lightness
|
|
54
74
|
# @return [Array(Float, Float, Float)]
|
|
55
75
|
#
|
|
56
76
|
# @example
|
|
57
77
|
# Faker::Color.hsl_color #=> [69.87, 0.66, 0.3]
|
|
78
|
+
# @example
|
|
79
|
+
# Faker::Color.hsl_color(hue: 70, saturation: 0.5, lightness: 0.8) #=> [70, 0.5, 0.8]
|
|
80
|
+
# @example
|
|
81
|
+
# Faker::Color.hsl_color(hue: 70) #=> [70, 0.66, 0.6]
|
|
82
|
+
# @example
|
|
83
|
+
# Faker::Color.hsl_color(saturation: 0.2) #=> [54, 0.2, 0.3]
|
|
84
|
+
# @example
|
|
85
|
+
# Faker::Color.hsl_color(lightness: 0.6) #=> [69.87, 0.66, 0.6]
|
|
58
86
|
#
|
|
59
|
-
# @faker.version
|
|
60
|
-
def hsl_color
|
|
61
|
-
|
|
87
|
+
# @faker.version next
|
|
88
|
+
def hsl_color(hue: nil, saturation: nil, lightness: nil)
|
|
89
|
+
valid_hue = hue || sample((0..360).to_a)
|
|
90
|
+
valid_saturation = saturation&.clamp(0, 1) || rand.round(2)
|
|
91
|
+
valid_lightness = lightness&.clamp(0, 1) || rand.round(2)
|
|
92
|
+
[valid_hue, valid_saturation, valid_lightness]
|
|
62
93
|
end
|
|
63
94
|
|
|
64
95
|
##
|
|
@@ -74,6 +105,46 @@ module Faker
|
|
|
74
105
|
def hsla_color
|
|
75
106
|
hsl_color << rand.round(1)
|
|
76
107
|
end
|
|
108
|
+
|
|
109
|
+
private
|
|
110
|
+
|
|
111
|
+
##
|
|
112
|
+
# Produces a hex code representation of an HSL color
|
|
113
|
+
#
|
|
114
|
+
# @param a_hsl_color [Array(Float, Float, Float)] The array that represents the HSL color
|
|
115
|
+
#
|
|
116
|
+
# @return [String]
|
|
117
|
+
#
|
|
118
|
+
# @example
|
|
119
|
+
# hsl_to_hex([50, 100,80]) #=> #FFEE99
|
|
120
|
+
#
|
|
121
|
+
# @see https://en.wikipedia.org/wiki/HSL_and_HSV#HSL_to_RGB
|
|
122
|
+
# @see https://github.com/jpmckinney/color-generator/blob/master/lib/color-generator.rb
|
|
123
|
+
#
|
|
124
|
+
def hsl_to_hex(a_hsl_color)
|
|
125
|
+
h, s, l = a_hsl_color
|
|
126
|
+
c = (1 - (2 * l - 1).abs) * s
|
|
127
|
+
h_prime = h / 60
|
|
128
|
+
x = c * (1 - (h_prime % 2 - 1).abs)
|
|
129
|
+
m = l - 0.5 * c
|
|
130
|
+
|
|
131
|
+
rgb = case h_prime.to_i
|
|
132
|
+
when 0 # 0 <= H' < 1
|
|
133
|
+
[c, x, 0]
|
|
134
|
+
when 1 # 1 <= H' < 2
|
|
135
|
+
[x, c, 0]
|
|
136
|
+
when 2 # 2 <= H' < 3
|
|
137
|
+
[0, c, x]
|
|
138
|
+
when 3 # 3 <= H' < 4
|
|
139
|
+
[0, x, c]
|
|
140
|
+
when 4 # 4 <= H' < 5
|
|
141
|
+
[x, 0, c]
|
|
142
|
+
else # 5 <= H' < 6
|
|
143
|
+
[c, 0, x]
|
|
144
|
+
end.map { |value| ((value + m) * 255).round }
|
|
145
|
+
|
|
146
|
+
format('#%02x%02x%02x', rgb[0], rgb[1], rgb[2])
|
|
147
|
+
end
|
|
77
148
|
end
|
|
78
149
|
end
|
|
79
150
|
end
|
|
@@ -3,15 +3,31 @@
|
|
|
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
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
|
30
|
+
def promotion_code(digits: 6)
|
|
15
31
|
[
|
|
16
32
|
fetch('commerce.promotion_code.adjective'),
|
|
17
33
|
fetch('commerce.promotion_code.noun'),
|
|
@@ -19,54 +35,115 @@ module Faker
|
|
|
19
35
|
].join
|
|
20
36
|
end
|
|
21
37
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
38
|
+
##
|
|
39
|
+
# Produces a random department.
|
|
40
|
+
#
|
|
41
|
+
# @param max [Integer] Updates the maximum number of names used to generate the department name.
|
|
42
|
+
# @param fixed_amount [Boolean] Fixes the amount of departments to use instead of using a range.
|
|
43
|
+
# @return [String]
|
|
44
|
+
#
|
|
45
|
+
# @example
|
|
46
|
+
# Faker::Commerce.department #=> "Grocery, Health & Beauty"
|
|
47
|
+
# Faker::Commerce.department(max: 5) #=> "Grocery, Books, Health & Beauty"
|
|
48
|
+
# Faker::Commerce.department(max: 2, fixed_amount: true) #=> "Books & Tools"
|
|
49
|
+
#
|
|
50
|
+
# @faker.version 1.2.0
|
|
51
|
+
def department(max: 3, fixed_amount: false)
|
|
28
52
|
num = max if fixed_amount
|
|
29
53
|
num ||= 1 + rand(max)
|
|
30
54
|
|
|
31
55
|
categories = categories(num)
|
|
32
56
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
57
|
+
if categories.is_a?(Array)
|
|
58
|
+
if categories.length > 1
|
|
59
|
+
merge_categories(categories)
|
|
60
|
+
else
|
|
61
|
+
categories[0]
|
|
62
|
+
end
|
|
63
|
+
else
|
|
64
|
+
categories
|
|
65
|
+
end
|
|
36
66
|
end
|
|
37
67
|
|
|
68
|
+
##
|
|
69
|
+
# Produces a random product name.
|
|
70
|
+
#
|
|
71
|
+
# @return [String]
|
|
72
|
+
#
|
|
73
|
+
# @example
|
|
74
|
+
# Faker::Commerce.product_name #=> "Practical Granite Shirt"
|
|
75
|
+
#
|
|
76
|
+
# @faker.version 1.2.0
|
|
38
77
|
def product_name
|
|
39
78
|
"#{fetch('commerce.product_name.adjective')} #{fetch('commerce.product_name.material')} #{fetch('commerce.product_name.product')}"
|
|
40
79
|
end
|
|
41
80
|
|
|
81
|
+
##
|
|
82
|
+
# Produces a random material.
|
|
83
|
+
#
|
|
84
|
+
# @return [String]
|
|
85
|
+
#
|
|
86
|
+
# @example
|
|
87
|
+
# Faker::Commerce.material #=> "Plastic"
|
|
88
|
+
#
|
|
89
|
+
# @faker.version 1.5.0
|
|
42
90
|
def material
|
|
43
91
|
fetch('commerce.product_name.material')
|
|
44
92
|
end
|
|
45
93
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
94
|
+
##
|
|
95
|
+
# Produces a random product price.
|
|
96
|
+
#
|
|
97
|
+
# @param range [Range] A range to generate the random number within.
|
|
98
|
+
# @param as_string [Boolean] Changes the return value to [String].
|
|
99
|
+
# @return [Float]
|
|
100
|
+
#
|
|
101
|
+
# @example
|
|
102
|
+
# Faker::Commerce.price #=> 44.6
|
|
103
|
+
# Faker::Commerce.price(range: 0..10.0, as_string: true) #=> "2.18"
|
|
104
|
+
#
|
|
105
|
+
# @faker.version 1.2.0
|
|
106
|
+
def price(range: 0..100.0, as_string: false)
|
|
52
107
|
price = (rand(range) * 100).floor / 100.0
|
|
53
108
|
if as_string
|
|
54
109
|
price_parts = price.to_s.split('.')
|
|
55
|
-
price = price_parts[0]
|
|
110
|
+
price = "#{price_parts[0]}.#{price_parts[-1].ljust(2, '0')}"
|
|
56
111
|
end
|
|
57
112
|
price
|
|
58
113
|
end
|
|
59
114
|
|
|
115
|
+
##
|
|
116
|
+
# Produces a randomized string of a brand name
|
|
117
|
+
# @example
|
|
118
|
+
# Faker::Commerce.brand #=> 'Apple'
|
|
119
|
+
#
|
|
120
|
+
# @return [string]
|
|
121
|
+
#
|
|
122
|
+
# @faker.version next
|
|
123
|
+
#
|
|
124
|
+
##
|
|
125
|
+
def brand
|
|
126
|
+
fetch('commerce.brand')
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
##
|
|
130
|
+
# Produces a randomized string of a vendor name
|
|
131
|
+
# @example
|
|
132
|
+
# Faker::Commerce.vendor #=> 'Dollar General'
|
|
133
|
+
#
|
|
134
|
+
# @return [string]
|
|
135
|
+
#
|
|
136
|
+
# @faker.version next
|
|
137
|
+
#
|
|
138
|
+
##
|
|
139
|
+
def vendor
|
|
140
|
+
fetch('commerce.vendor')
|
|
141
|
+
end
|
|
142
|
+
|
|
60
143
|
private
|
|
61
144
|
|
|
62
145
|
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
|
|
146
|
+
sample(fetch_all('commerce.department'), num)
|
|
70
147
|
end
|
|
71
148
|
|
|
72
149
|
def merge_categories(categories)
|