faker 2.11.0 → 3.4.2
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 +1131 -19
- data/README.md +249 -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 +16 -44
- data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
- data/lib/faker/creature/bird.rb +203 -0
- data/lib/faker/default/address.rb +42 -32
- 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 +62 -18
- data/lib/faker/default/chuck_norris.rb +1 -0
- data/lib/faker/default/code.rb +162 -52
- data/lib/faker/default/color.rb +77 -6
- data/lib/faker/default/commerce.rb +105 -28
- data/lib/faker/default/company.rb +210 -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 +26 -4
- data/lib/faker/default/crypto_coin.rb +48 -15
- data/lib/faker/default/date.rb +81 -54
- data/lib/faker/default/demographic.rb +1 -5
- data/lib/faker/default/driving_licence.rb +85 -18
- 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 +108 -51
- data/lib/faker/default/hobby.rb +22 -0
- data/lib/faker/default/html.rb +230 -0
- data/lib/faker/default/id_number.rb +251 -17
- data/lib/faker/default/internet.rb +361 -113
- data/lib/faker/default/internet_http.rb +48 -0
- data/lib/faker/default/invoice.rb +37 -23
- data/lib/faker/default/json.rb +63 -25
- data/lib/faker/default/lorem.rb +177 -75
- 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 → national_health_service.rb} +26 -6
- data/lib/faker/default/number.rb +39 -69
- data/lib/faker/default/omniauth.rb +115 -57
- data/lib/faker/default/phone_number.rb +112 -14
- 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 +93 -3
- 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/theater.rb +52 -0
- data/lib/faker/default/time.rb +4 -34
- data/lib/faker/default/twitter.rb +42 -23
- data/lib/faker/default/types.rb +92 -34
- data/lib/faker/default/university.rb +45 -0
- data/lib/faker/default/vehicle.rb +227 -57
- 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/final_fantasy_xiv.rb +73 -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 +51 -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 +52 -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/star_wars.rb +75 -7
- data/lib/faker/movies/the_room.rb +63 -0
- 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/smashing_pumpkins.rb +64 -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/travel/train_station.rb +54 -0
- data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +13 -0
- data/lib/faker/tv_shows/archer.rb +51 -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/south_park.rb +15 -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 +51 -87
- data/lib/helpers/base58.rb +1 -1
- data/lib/helpers/char.rb +22 -27
- data/lib/helpers/deprecator.rb +53 -0
- data/lib/helpers/positional_generator.rb +480 -0
- data/lib/helpers/unique_generator.rb +13 -13
- data/lib/locales/README.md +18 -2
- data/lib/locales/ar.yml +6 -1
- data/lib/locales/bg.yml +1 -2
- data/lib/locales/da-DK.yml +529 -35
- data/lib/locales/de-AT.yml +3487 -25
- data/lib/locales/de-CH.yml +6020 -9
- data/lib/locales/de.yml +7185 -97
- data/lib/locales/ee.yml +0 -1
- data/lib/locales/en/address.yml +1828 -562
- 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/archer.yml +75 -0
- data/lib/locales/en/australia.yml +108 -0
- data/lib/locales/en/avatar.yml +31 -0
- data/lib/locales/en/bank.yml +2 -2
- 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/dog.yml +262 -7
- data/lib/locales/en/doraemon.yml +286 -0
- data/lib/locales/en/dota.yml +704 -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_fantasy_xiv.yml +754 -0
- data/lib/locales/en/final_space.yml +37 -0
- data/lib/locales/en/finance.yml +80 -4
- data/lib/locales/en/food.yml +1067 -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/fullmetal_alchemist_brotherhood.yml +78 -0
- 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/harry_potter.yml +1 -1
- 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/id_number.yml +1 -1
- data/lib/locales/en/internet.yml +136 -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/phone_number.yml +78 -3
- 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/rush.yml +32 -0
- data/lib/locales/en/science.yml +481 -3
- data/lib/locales/en/shakespeare.yml +21 -24
- data/lib/locales/en/simpsons.yml +668 -0
- data/lib/locales/en/smashing_pumpkins.yml +382 -0
- data/lib/locales/en/source.yml +35 -0
- data/lib/locales/en/south_park.yml +360 -2
- 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/the_room.yml +68 -0
- data/lib/locales/en/theater.yml +597 -0
- data/lib/locales/en/tolkien.yml +2453 -0
- data/lib/locales/en/touhou.yml +839 -0
- data/lib/locales/en/train_station.yml +280 -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 +728 -17
- data/lib/locales/en-CA.yml +373 -16
- data/lib/locales/en-GB.yml +116 -8
- data/lib/locales/en-IND.yml +1259 -16
- data/lib/locales/en-KE.yml +212 -0
- data/lib/locales/en-MS.yml +364 -16
- data/lib/locales/en-NEP.yml +212 -35
- data/lib/locales/en-NG.yml +1 -0
- data/lib/locales/en-NZ.yml +1153 -121
- data/lib/locales/en-PAK.yml +369 -9
- data/lib/locales/en-SG.yml +581 -15
- data/lib/locales/en-UG.yml +1 -0
- data/lib/locales/en-US.yml +6937 -71
- data/lib/locales/en-ZA.yml +1 -1
- data/lib/locales/en-au-ocker.yml +266 -21
- data/lib/locales/en.yml +0 -3
- data/lib/locales/es-AR.yml +4570 -0
- data/lib/locales/es-MX.yml +1 -2
- data/lib/locales/es.yml +58 -3
- 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 +4 -0
- data/lib/locales/fr/lorem.yml +5 -0
- data/lib/locales/fr/measurement.yml +7 -0
- data/lib/locales/fr/name.yml +22 -0
- data/lib/locales/fr/phone_number.yml +7 -0
- data/lib/locales/fr/pokemon.yml +7 -0
- data/lib/locales/fr-CA.yml +2748 -43
- data/lib/locales/fr-CH.yml +3 -4
- data/lib/locales/fr.yml +2 -112
- data/lib/locales/hy.yml +3624 -119
- data/lib/locales/id.yml +839 -10
- data/lib/locales/it.yml +1304 -31
- 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/football.yml +115 -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/sport.yml +130 -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/touhou.yml +466 -0
- data/lib/locales/ja/university.yml +9 -0
- data/lib/locales/ja/zelda.yml +5 -0
- data/lib/locales/ko.yml +1450 -17
- data/lib/locales/lt.yml +315 -0
- data/lib/locales/lv.yml +1 -2
- data/lib/locales/mi-NZ.yml +283 -0
- data/lib/locales/nb-NO.yml +518 -27
- data/lib/locales/nl.yml +1 -1
- data/lib/locales/pl.yml +1 -2
- data/lib/locales/pt-BR.yml +8157 -659
- data/lib/locales/pt.yml +844 -43
- data/lib/locales/ru.yml +1355 -30
- data/lib/locales/sk.yml +4410 -41
- data/lib/locales/sv.yml +100 -0
- data/lib/locales/th.yml +76 -76
- data/lib/locales/tr.yml +1 -2
- data/lib/locales/uk.yml +1810 -44
- data/lib/locales/vi.yml +1 -0
- data/lib/locales/zh-CN/bank.yml +17 -0
- data/lib/locales/zh-CN.yml +1 -0
- data/lib/locales/zh-TW.yml +1 -0
- metadata +192 -127
- data/History.md +0 -176
- 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
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Faker
|
|
4
|
+
class HTML < Base
|
|
5
|
+
class << self
|
|
6
|
+
##
|
|
7
|
+
# Produces a random HTML header format.
|
|
8
|
+
#
|
|
9
|
+
# @return [String]
|
|
10
|
+
#
|
|
11
|
+
# @example
|
|
12
|
+
# Faker::HTML.heading #=> "<h5>Autem</h5>"
|
|
13
|
+
#
|
|
14
|
+
# @faker.version 3.2.1
|
|
15
|
+
def heading
|
|
16
|
+
level = rand(1..6)
|
|
17
|
+
"<h#{level}>#{Lorem.word.capitalize}</h#{level}>"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
##
|
|
21
|
+
# Produces a random HTML paragraph format.
|
|
22
|
+
#
|
|
23
|
+
# @param sentence_count [Integer] The number of sentences in the paragraph.
|
|
24
|
+
# @param supplemental [Boolean] Include supplemental text.
|
|
25
|
+
# @param random_sentences_to_add [Integer] The number of random sentences to add to the paragraph.
|
|
26
|
+
# @param exclude_words [Array<String>] Words to exclude from the generated paragraph.
|
|
27
|
+
# @return [String]
|
|
28
|
+
#
|
|
29
|
+
# @example
|
|
30
|
+
# Faker::HTML.paragraph #=> "<p>Incidunt atque quis</p>"
|
|
31
|
+
#
|
|
32
|
+
# @faker.version 3.2.1
|
|
33
|
+
def paragraph(sentence_count: 3, supplemental: false, random_sentences_to_add: 0, exclude_words: nil)
|
|
34
|
+
"<p>#{Faker::Lorem.paragraph(sentence_count: sentence_count, supplemental: supplemental, random_sentences_to_add: random_sentences_to_add, exclude_words: exclude_words)}</p>"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
##
|
|
38
|
+
# Produces a random emphasis formatting on a random word in two HTML paragraphs.
|
|
39
|
+
#
|
|
40
|
+
# @return [String]
|
|
41
|
+
#
|
|
42
|
+
# @example
|
|
43
|
+
# Faker::HTML.emphasis #=> "<em>repellat id impedit</em>"
|
|
44
|
+
#
|
|
45
|
+
# @faker.version 3.2.1
|
|
46
|
+
def emphasis
|
|
47
|
+
"<em>#{Faker::Lorem.paragraph(sentence_count: 1)}</em>"
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
##
|
|
51
|
+
# Produces a random ordered list in HTML format, with at least one element.
|
|
52
|
+
#
|
|
53
|
+
# @return [String]
|
|
54
|
+
#
|
|
55
|
+
# @example
|
|
56
|
+
# Faker::HTML.ordered_list #=> "<ol>\n<li>Qui reiciendis non consequatur atque.</li>\n<li>Quo doloremque veritatis tempora aut.</li>\n<li>Aspernatur.</li>\n<li>Ea ab.</li>\n<li>Qui.</li>\n<li>Sit pariatur nemo eveniet.</li>\n<li>Molestiae aut.</li>\n<li>Nihil molestias iure placeat.</li>\n<li>Dolore autem quisquam.</li>\n</ol>"
|
|
57
|
+
#
|
|
58
|
+
# @faker.version 3.2.1
|
|
59
|
+
def ordered_list
|
|
60
|
+
number = rand(1..10)
|
|
61
|
+
|
|
62
|
+
items = []
|
|
63
|
+
number.times do
|
|
64
|
+
items << "<li>#{Faker::Lorem.sentence(word_count: 1)}</li>"
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
"<ol>\n#{items.join("\n")}\n</ol>"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
##
|
|
71
|
+
# Produces a random unordered list of items between 1 and 10 randomly in HTML format.
|
|
72
|
+
#
|
|
73
|
+
# @return [String]
|
|
74
|
+
#
|
|
75
|
+
# @example
|
|
76
|
+
# Faker::HTML.unordered_list #=> "<ul>\n<li>Voluptatum aliquid tempora molestiae facilis non sed.</li>\n<li>Nostrum omnis iste impedit voluptatum dolor.</li>\n<li>Esse quidem et facere.</li>\n</ul>"
|
|
77
|
+
#
|
|
78
|
+
# @faker.version 3.2.1
|
|
79
|
+
def unordered_list
|
|
80
|
+
number = rand(1..10)
|
|
81
|
+
|
|
82
|
+
items = []
|
|
83
|
+
number.times do
|
|
84
|
+
items << "<li>#{Faker::Lorem.sentence(word_count: 1)}</li>"
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
"<ul>\n#{items.join("\n")}\n</ul>"
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
##
|
|
91
|
+
# Produces a random code block formatted in HTML.
|
|
92
|
+
#
|
|
93
|
+
# @return [String]
|
|
94
|
+
#
|
|
95
|
+
# @example
|
|
96
|
+
# Faker::HTML.code #=> "<code>Eos quasi qui.</code>"
|
|
97
|
+
#
|
|
98
|
+
# @faker.version 3.2.1
|
|
99
|
+
def code
|
|
100
|
+
"<code>#{Lorem.sentence(word_count: 1)}</code>"
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
##
|
|
104
|
+
# Produces a random HTML table.
|
|
105
|
+
#
|
|
106
|
+
# @return [String]
|
|
107
|
+
#
|
|
108
|
+
# @example
|
|
109
|
+
# Faker::HTML.table #=> "<table>\n<thead>\n<th>ad</th>\n<th>similique</th>\n<th>voluptatem</th>\n</thead>\n<tbody>\n<td>corrupti</td>\n<td>est</td>\n<td>rerum</td>\n<td>molestiae</td>\n<td>quidem</td>\n<td>et</td>\n<td>in</td>\n<td>tempora</td>\n<td>at</td>\n<\tbody>\n<tfoot>\n<td>voluptatem</td>\n<td>debitis</td>\n<td>rem</td>\n</tfoot>\n</table>"
|
|
110
|
+
#
|
|
111
|
+
# @faker.version 3.2.1
|
|
112
|
+
def table
|
|
113
|
+
header_row = generate_table_row('th', 3)
|
|
114
|
+
footer_row = generate_table_row('td', 3)
|
|
115
|
+
|
|
116
|
+
body_rows = []
|
|
117
|
+
3.times do
|
|
118
|
+
row = generate_table_row('td', 3)
|
|
119
|
+
body_rows << row
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
thead = "<thead>\n#{header_row}</thead>"
|
|
123
|
+
tbody = "<tbody>\n#{body_rows.join("\n")}</tbody>"
|
|
124
|
+
tfoot = "<tfoot>\n#{footer_row}</tfoot>"
|
|
125
|
+
|
|
126
|
+
"<table>\n#{thead}\n#{tbody}\n#{tfoot}\n</table>"
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
##
|
|
130
|
+
# Generates a random <script> tag with the `src` attribute set to a random URL.
|
|
131
|
+
#
|
|
132
|
+
# @return [String]
|
|
133
|
+
#
|
|
134
|
+
# @example
|
|
135
|
+
# Faker::HTML.script #=> "<script src=\"http://gulgowski.name/jordan.weimann.js\"></script>"
|
|
136
|
+
#
|
|
137
|
+
# @faker.version 3.2.1
|
|
138
|
+
def script
|
|
139
|
+
"<script src=\"#{Faker::Internet.url}.js\"></script>"
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
##
|
|
143
|
+
# Generates a random <link> tag with the `rel` attribute set to "stylesheet" and the `href` attribute set to a random URL.
|
|
144
|
+
#
|
|
145
|
+
# @param rel [String] The rel of the link tag.
|
|
146
|
+
# @return [String]
|
|
147
|
+
#
|
|
148
|
+
# @example
|
|
149
|
+
# Faker::HTML.link #=> "<link rel=\"stylesheet\" href=\"http://fay.io/darryl.barrows.css\">"
|
|
150
|
+
#
|
|
151
|
+
# @faker.version 3.2.1
|
|
152
|
+
def link(rel: 'stylesheet')
|
|
153
|
+
"<link rel=\"#{rel}\" href=\"#{Faker::Internet.url}.css\">"
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
##
|
|
157
|
+
# Generates HTML content with customizable attributes for any HTML tag.
|
|
158
|
+
#
|
|
159
|
+
# @param tag [String] The HTML tag to generate.
|
|
160
|
+
# @param content [String] The Content of the HTML tag.
|
|
161
|
+
# @param attributes [Hash] The attributes to include in the tag.
|
|
162
|
+
# @return [String]
|
|
163
|
+
#
|
|
164
|
+
# @example
|
|
165
|
+
# Faker::HTML.element(tag: 'div', content: "This is a div with XSS attributes.", attributes: {class: 'xss', onclick: "alert('XSS')"}) #=> "<div class=\"xss\" onclick=\"alert('XSS')\">This is a div with XSS attributes.</div>"
|
|
166
|
+
#
|
|
167
|
+
# @faker.version 3.2.1
|
|
168
|
+
def element(tag: 'div', content: Lorem.sentence(word_count: 3), attributes: { class: Lorem.word, onclick: "#{Lorem.word}()" })
|
|
169
|
+
attribute_string = attributes.map { |key, value| "#{key}=\"#{value}\"" }.join(' ')
|
|
170
|
+
"<#{tag} #{attribute_string}>#{content}</#{tag}>"
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
##
|
|
174
|
+
# Produces a random method from the methods above, excluding the methods listed in the arguments.
|
|
175
|
+
#
|
|
176
|
+
# @overload random(methods)
|
|
177
|
+
# @param methods [Symbol] Specify which methods to exclude.
|
|
178
|
+
#
|
|
179
|
+
# @return [String]
|
|
180
|
+
#
|
|
181
|
+
# @example
|
|
182
|
+
# Faker::HTML.random #=> returns output from a single method outlined above
|
|
183
|
+
# Faker::HTML.random(exclude: [:table]) #=> returns output from any single method outlined above except for "table"
|
|
184
|
+
# Faker::HTML.random(exclude: [:ordered_list, :unordered_list]) #=> returns output from any single method outlined above except for either ordered_list and unordered_list
|
|
185
|
+
#
|
|
186
|
+
# @faker.version 3.2.1
|
|
187
|
+
def random(exclude: [])
|
|
188
|
+
method_list = available_methods
|
|
189
|
+
exclude.each { |ex| method_list.delete_if { |meth| meth == ex.to_sym } }
|
|
190
|
+
send(method_list[Faker::Config.random.rand(0..method_list.length - 1)])
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
##
|
|
194
|
+
# Generates a random HTML content sandwich, starting with a header, followed by paragraphs, and random elements.
|
|
195
|
+
#
|
|
196
|
+
# @param sentences [Integer] The number of sentences in each paragraph.
|
|
197
|
+
# @param repeat [Integer] The number of times to repeat the pattern (header, paragraph, random).
|
|
198
|
+
# @return [String]
|
|
199
|
+
#
|
|
200
|
+
# @example
|
|
201
|
+
# Faker::HTML.sandwich(sentences: 3, repeat: 2) #=> returns a sandwich of HTML content with 2 repetitions, each having a header, paragraph, and random element
|
|
202
|
+
#
|
|
203
|
+
# @faker.version 3.2.1
|
|
204
|
+
def sandwich(sentences: 3, repeat: 1)
|
|
205
|
+
text_block = []
|
|
206
|
+
text_block << heading
|
|
207
|
+
repeat.times do
|
|
208
|
+
text_block << paragraph(sentence_count: sentences)
|
|
209
|
+
text_block << random(exclude: %i[script link])
|
|
210
|
+
end
|
|
211
|
+
text_block.join("\n")
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
private
|
|
215
|
+
|
|
216
|
+
def available_methods
|
|
217
|
+
(HTML.public_methods(false) - Base.methods).sort
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
def generate_table_row(tag, cell_count)
|
|
221
|
+
row = "<tr>\n"
|
|
222
|
+
cell_count.times do
|
|
223
|
+
row += "<#{tag == 'th' ? 'th' : 'td'}>#{Lorem.word}</#{tag == 'th' ? 'th' : 'td'}>\n"
|
|
224
|
+
end
|
|
225
|
+
row += "</tr>\n"
|
|
226
|
+
row
|
|
227
|
+
end
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Faker
|
|
4
|
-
class
|
|
4
|
+
class IdNumber < Base
|
|
5
5
|
CHECKS = 'TRWAGMYFPDXBNJZSQVHLCKE'
|
|
6
6
|
INVALID_SSN = [
|
|
7
7
|
/0{3}-\d{2}-\d{4}/,
|
|
@@ -19,20 +19,61 @@ module Faker
|
|
|
19
19
|
CHILEAN_MODULO = 11
|
|
20
20
|
|
|
21
21
|
class << self
|
|
22
|
+
##
|
|
23
|
+
# Produces a random valid US Social Security number.
|
|
24
|
+
#
|
|
25
|
+
# @return [String]
|
|
26
|
+
#
|
|
27
|
+
# @example
|
|
28
|
+
# Faker::IdNumber.valid #=> "552-56-3593"
|
|
29
|
+
#
|
|
30
|
+
# @faker.version 1.6.0
|
|
22
31
|
def valid
|
|
23
32
|
_translate('valid')
|
|
24
33
|
end
|
|
25
34
|
|
|
35
|
+
##
|
|
36
|
+
# Produces a random invalid US Social Security number.
|
|
37
|
+
#
|
|
38
|
+
# @return [String]
|
|
39
|
+
#
|
|
40
|
+
# @example
|
|
41
|
+
# Faker::IdNumber.invalid #=> "311-72-0000"
|
|
42
|
+
#
|
|
43
|
+
# @faker.version 1.6.0
|
|
26
44
|
def invalid
|
|
27
45
|
_translate('invalid')
|
|
28
46
|
end
|
|
29
47
|
|
|
30
48
|
def ssn_valid
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
49
|
+
generate(:string) do |g|
|
|
50
|
+
g.computed(name: :first) do
|
|
51
|
+
range = [1..665, 667..899].sample(random: Faker::Config.random)
|
|
52
|
+
n = Faker::Base.rand(range)
|
|
53
|
+
format('%03d', n)
|
|
54
|
+
end
|
|
55
|
+
g.lit('-')
|
|
56
|
+
g.computed(name: :second) do
|
|
57
|
+
n = Faker::Base.rand(1..99)
|
|
58
|
+
format('%02d', n)
|
|
59
|
+
end
|
|
60
|
+
g.lit('-')
|
|
61
|
+
g.computed(name: :third) do
|
|
62
|
+
n = Faker::Base.rand(1..9999)
|
|
63
|
+
format('%04d', n)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
34
66
|
end
|
|
35
67
|
|
|
68
|
+
##
|
|
69
|
+
# Produces a random Spanish citizen identifier (DNI).
|
|
70
|
+
#
|
|
71
|
+
# @return [String]
|
|
72
|
+
#
|
|
73
|
+
# @example
|
|
74
|
+
# Faker::IdNumber.spanish_citizen_number #=> "53290236-H"
|
|
75
|
+
#
|
|
76
|
+
# @faker.version 1.9.0
|
|
36
77
|
def spanish_citizen_number
|
|
37
78
|
num = Faker::Number.number(digits: 8)
|
|
38
79
|
mod = num.to_i % 23
|
|
@@ -40,6 +81,15 @@ module Faker
|
|
|
40
81
|
"#{num}-#{check}"
|
|
41
82
|
end
|
|
42
83
|
|
|
84
|
+
##
|
|
85
|
+
# Produces a random Spanish foreign born citizen identifier (NIE).
|
|
86
|
+
#
|
|
87
|
+
# @return [String]
|
|
88
|
+
#
|
|
89
|
+
# @example
|
|
90
|
+
# Faker::IdNumber.spanish_foreign_citizen_number #=> "Z-1600870-Y"
|
|
91
|
+
#
|
|
92
|
+
# @faker.version 1.9.0
|
|
43
93
|
def spanish_foreign_citizen_number
|
|
44
94
|
code = 'XYZ'
|
|
45
95
|
digits = Faker::Number.number(digits: 7)
|
|
@@ -50,6 +100,16 @@ module Faker
|
|
|
50
100
|
"#{prefix}-#{digits}-#{check}"
|
|
51
101
|
end
|
|
52
102
|
|
|
103
|
+
##
|
|
104
|
+
# Produces a random valid South African ID Number.
|
|
105
|
+
#
|
|
106
|
+
# @return [String]
|
|
107
|
+
#
|
|
108
|
+
# @example
|
|
109
|
+
# Faker::IdNumber.south_african_id_number #=> "8105128870184"
|
|
110
|
+
# Faker::IdNumber.valid_south_african_id_number #=> "8105128870184"
|
|
111
|
+
#
|
|
112
|
+
# @faker.version 1.9.2
|
|
53
113
|
def valid_south_african_id_number
|
|
54
114
|
id_number = [
|
|
55
115
|
Faker::Date.birthday.strftime('%y%m%d'),
|
|
@@ -63,6 +123,15 @@ module Faker
|
|
|
63
123
|
|
|
64
124
|
alias south_african_id_number valid_south_african_id_number
|
|
65
125
|
|
|
126
|
+
##
|
|
127
|
+
# Produces a random invalid South African ID Number.
|
|
128
|
+
#
|
|
129
|
+
# @return [String]
|
|
130
|
+
#
|
|
131
|
+
# @example
|
|
132
|
+
# Faker::IdNumber.invalid_south_african_id_number #=> "1642972065088"
|
|
133
|
+
#
|
|
134
|
+
# @faker.version 1.9.2
|
|
66
135
|
def invalid_south_african_id_number
|
|
67
136
|
invalid_date_of_birth = [
|
|
68
137
|
Faker::Number.number(digits: 2),
|
|
@@ -80,11 +149,18 @@ module Faker
|
|
|
80
149
|
[id_number, south_african_id_checksum_digit(id_number)].join
|
|
81
150
|
end
|
|
82
151
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
152
|
+
##
|
|
153
|
+
# Produces a random Brazilian Citizen Number (CPF).
|
|
154
|
+
#
|
|
155
|
+
# @param formatted [Boolean] Specifies if the number is formatted with dividers.
|
|
156
|
+
# @return [String]
|
|
157
|
+
#
|
|
158
|
+
# @example
|
|
159
|
+
# Faker::IdNumber.brazilian_citizen_number #=> "53540542221"
|
|
160
|
+
# Faker::IdNumber.brazilian_citizen_number(formatted: true) #=> "535.405.422-21"
|
|
161
|
+
#
|
|
162
|
+
# @faker.version 1.9.2
|
|
163
|
+
def brazilian_citizen_number(formatted: false)
|
|
88
164
|
digits = Faker::Number.leading_zero_number(digits: 9) until digits&.match(/(\d)((?!\1)\d)+/)
|
|
89
165
|
first_digit = brazilian_citizen_number_checksum_digit(digits)
|
|
90
166
|
second_digit = brazilian_citizen_number_checksum_digit(digits + first_digit)
|
|
@@ -94,11 +170,18 @@ module Faker
|
|
|
94
170
|
|
|
95
171
|
alias brazilian_cpf brazilian_citizen_number
|
|
96
172
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
173
|
+
##
|
|
174
|
+
# Produces a random Brazilian ID Number (RG).
|
|
175
|
+
#
|
|
176
|
+
# @param formatted [Boolean] Specifies if the number is formatted with dividers.
|
|
177
|
+
# @return [String]
|
|
178
|
+
#
|
|
179
|
+
# @example
|
|
180
|
+
# Faker::IdNumber.brazilian_id #=> "493054029"
|
|
181
|
+
# Faker::IdNumber.brazilian_id(formatted: true) #=> "49.305.402-9"
|
|
182
|
+
#
|
|
183
|
+
# @faker.version 2.1.2
|
|
184
|
+
def brazilian_id(formatted: false)
|
|
102
185
|
digits = Faker::Number.between(to: BRAZILIAN_ID_FROM, from: BRAZILIAN_ID_TO).to_s
|
|
103
186
|
check_digit = brazilian_id_checksum_digit(digits)
|
|
104
187
|
number = [digits, check_digit].join
|
|
@@ -107,15 +190,124 @@ module Faker
|
|
|
107
190
|
|
|
108
191
|
alias brazilian_rg brazilian_id
|
|
109
192
|
|
|
193
|
+
##
|
|
194
|
+
# Produces a random Chilean ID (Rut with 8 digits).
|
|
195
|
+
#
|
|
196
|
+
# @return [String]
|
|
197
|
+
#
|
|
198
|
+
# @example
|
|
199
|
+
# Faker::IdNumber.chilean_id #=> "15620613-K"
|
|
200
|
+
#
|
|
201
|
+
# @faker.version 2.1.2
|
|
110
202
|
def chilean_id
|
|
111
203
|
digits = Faker::Number.number(digits: 8)
|
|
112
204
|
verification_code = chilean_verification_code(digits)
|
|
113
205
|
|
|
114
|
-
digits
|
|
206
|
+
"#{digits}-#{verification_code}"
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
##
|
|
210
|
+
# Produces a random Croatian ID number (OIB).
|
|
211
|
+
#
|
|
212
|
+
# @param international [Boolean] Specifies whether to add international prefix.
|
|
213
|
+
# @return [String]
|
|
214
|
+
#
|
|
215
|
+
# @example
|
|
216
|
+
# Faker::IdNumber.croatian_id #=> "88467617508"
|
|
217
|
+
# Faker::IdNumber.croatian_id(international: true) #=> "HR88467617508"
|
|
218
|
+
#
|
|
219
|
+
# @faker.version next
|
|
220
|
+
def croatian_id(international: false)
|
|
221
|
+
prefix = international ? 'HR' : ''
|
|
222
|
+
digits = Faker::Number.number(digits: 10).to_s
|
|
223
|
+
checksum_digit = croatian_id_checksum_digit(digits)
|
|
224
|
+
|
|
225
|
+
"#{prefix}#{digits}#{checksum_digit}"
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
##
|
|
229
|
+
# Produces a random Danish ID Number (CPR number).
|
|
230
|
+
# CPR number is 10 digits. Digit 1-6 is the birthdate (format "DDMMYY").
|
|
231
|
+
# Digit 7-10 is a sequence number.
|
|
232
|
+
# Digit 7 digit is a control digit that determines the century of birth.
|
|
233
|
+
# Digit 10 reveals the gender: # even is female, odd is male.
|
|
234
|
+
#
|
|
235
|
+
# @param formatted [Boolean] Specifies if the number is formatted with dividers.
|
|
236
|
+
# @param birthday [Date] Specifies the birthday for the id number.
|
|
237
|
+
# @param gender [Symbol] Specifies the gender for the id number. Must be one :male or :female if present.
|
|
238
|
+
# @return [String]
|
|
239
|
+
#
|
|
240
|
+
# @example
|
|
241
|
+
# Faker::IdNumber.danish_id_number #=> "0503909980"
|
|
242
|
+
# Faker::IdNumber.danish_id_number(formatted: true) #=> "050390-9980"
|
|
243
|
+
# Faker::IdNumber.danish_id_number(birthday: Date.new(1990, 3, 5)) #=> "0503909980"
|
|
244
|
+
# Faker::IdNumber.danish_id_number(gender: :female) #=> "0503909980"
|
|
245
|
+
#
|
|
246
|
+
# @faker.version next
|
|
247
|
+
def danish_id_number(formatted: false, birthday: Faker::Date.birthday, gender: nil)
|
|
248
|
+
valid_control_digits = danish_control_digits(birthday)
|
|
249
|
+
control_digit = sample(valid_control_digits)
|
|
250
|
+
digits = (0..9).to_a
|
|
251
|
+
gender = gender.to_sym if gender.respond_to?(:to_sym)
|
|
252
|
+
gender_digit = case gender
|
|
253
|
+
when nil
|
|
254
|
+
sample(digits)
|
|
255
|
+
when :male
|
|
256
|
+
sample(digits.select(&:odd?))
|
|
257
|
+
when :female
|
|
258
|
+
sample(digits.select(&:even?))
|
|
259
|
+
else
|
|
260
|
+
raise ArgumentError, "Invalid gender #{gender}. Must be one of male, female, or be omitted."
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
[
|
|
264
|
+
birthday.strftime('%d%m%y'),
|
|
265
|
+
formatted ? '-' : '',
|
|
266
|
+
control_digit,
|
|
267
|
+
Faker::Number.number(digits: 2),
|
|
268
|
+
gender_digit
|
|
269
|
+
].join
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
##
|
|
273
|
+
# Produces a random French social security number (INSEE number).
|
|
274
|
+
#
|
|
275
|
+
# @return [String]
|
|
276
|
+
#
|
|
277
|
+
# @example
|
|
278
|
+
# Faker::IdNumber.french_insee_number #=> "53290236-H"
|
|
279
|
+
#
|
|
280
|
+
# @faker.version next
|
|
281
|
+
def french_insee_number
|
|
282
|
+
num = [
|
|
283
|
+
[1, 2].sample(random: Faker::Config.random), # gender
|
|
284
|
+
Faker::Number.between(from: 0, to: 99).to_s.rjust(2, '0'), # year of birth
|
|
285
|
+
Faker::Number.between(from: 1, to: 12).to_s.rjust(2, '0'), # month of birth
|
|
286
|
+
Faker::Number.number(digits: 5), # place of birth
|
|
287
|
+
Faker::Number.number(digits: 3) # order number
|
|
288
|
+
].join
|
|
289
|
+
mod = num.to_i % 97
|
|
290
|
+
check = (97 - mod).to_s.rjust(2, '0')
|
|
291
|
+
"#{num}#{check}"
|
|
115
292
|
end
|
|
116
293
|
|
|
117
294
|
private
|
|
118
295
|
|
|
296
|
+
def croatian_id_checksum_digit(digits)
|
|
297
|
+
control_sum = 10
|
|
298
|
+
|
|
299
|
+
digits.chars.map(&:to_i).each do |digit|
|
|
300
|
+
control_sum += digit
|
|
301
|
+
control_sum %= 10
|
|
302
|
+
control_sum = 10 if control_sum.zero?
|
|
303
|
+
control_sum *= 2
|
|
304
|
+
control_sum %= 11
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
control_sum = 11 - control_sum
|
|
308
|
+
control_sum % 10
|
|
309
|
+
end
|
|
310
|
+
|
|
119
311
|
def chilean_verification_code(digits)
|
|
120
312
|
# First digit is multiplied by 3, second by 2, and so on
|
|
121
313
|
multiplication_rule = [3, 2, 7, 6, 5, 4, 3, 2]
|
|
@@ -146,7 +338,7 @@ module Faker
|
|
|
146
338
|
.with_index { |_, i| (i + 1).odd? }
|
|
147
339
|
|
|
148
340
|
sum_of_odd_digits = odd_digits_without_last_character.map(&:to_i).reduce(:+)
|
|
149
|
-
even_digits_times_two = (even_digits.join
|
|
341
|
+
even_digits_times_two = (even_digits.join.to_i * 2).to_s
|
|
150
342
|
sum_of_even_digits = even_digits_times_two.chars.map(&:to_i).reduce(:+)
|
|
151
343
|
|
|
152
344
|
total_sum = sum_of_odd_digits + sum_of_even_digits
|
|
@@ -170,7 +362,7 @@ module Faker
|
|
|
170
362
|
end * 10
|
|
171
363
|
end
|
|
172
364
|
|
|
173
|
-
def brazilian_document_digit(checksum, id
|
|
365
|
+
def brazilian_document_digit(checksum, id: false)
|
|
174
366
|
remainder = checksum % 11
|
|
175
367
|
id ? brazilian_id_digit(remainder) : brazilian_citizen_number_digit(remainder)
|
|
176
368
|
end
|
|
@@ -185,9 +377,51 @@ module Faker
|
|
|
185
377
|
digits.include?(subtraction) ? digits[subtraction] : subtraction.to_s
|
|
186
378
|
end
|
|
187
379
|
|
|
380
|
+
def danish_control_digits(birthday)
|
|
381
|
+
year = birthday.year
|
|
382
|
+
century = year.to_s.slice(0, 2).to_i
|
|
383
|
+
year_digits = year.to_s.slice(2, 2).to_i
|
|
384
|
+
error_message = "Invalid birthday: #{birthday}. Danish CPR numbers are only distributed to persons born between 1858 and 2057."
|
|
385
|
+
|
|
386
|
+
case century
|
|
387
|
+
when 18
|
|
388
|
+
# If 5, 6, 7 or 8 and the year numbers are greater than or equal to 58, you were born in 18XX.
|
|
389
|
+
case year_digits
|
|
390
|
+
when 58..99
|
|
391
|
+
[5, 6, 7, 8]
|
|
392
|
+
else
|
|
393
|
+
raise ArgumentError, error_message
|
|
394
|
+
end
|
|
395
|
+
when 19
|
|
396
|
+
# If 0, 1, 2 or 3, you are always born in 19XX.
|
|
397
|
+
# If 4 or 9, you are born in 19XX if the year digits are greater than 36.
|
|
398
|
+
|
|
399
|
+
case year_digits
|
|
400
|
+
when 0..36
|
|
401
|
+
[0, 1, 2, 3]
|
|
402
|
+
else # 37..99
|
|
403
|
+
[0, 1, 2, 3, 4, 9]
|
|
404
|
+
end
|
|
405
|
+
else
|
|
406
|
+
# If 4, 5, 6, 7, 8 or 9 and the year digits are less than or equal to 36, you were born in 20XX.
|
|
407
|
+
# 5, 6, 7 and 8 are not distributed to persons, with year digits from and including 37 to and including 57.
|
|
408
|
+
case year_digits
|
|
409
|
+
when 0..36
|
|
410
|
+
[4, 5, 6, 7, 8, 9]
|
|
411
|
+
when 37..57
|
|
412
|
+
[5, 6, 7, 8]
|
|
413
|
+
else
|
|
414
|
+
raise ArgumentError, error_message
|
|
415
|
+
end
|
|
416
|
+
end
|
|
417
|
+
end
|
|
418
|
+
|
|
188
419
|
def _translate(key)
|
|
189
420
|
parse("id_number.#{key}")
|
|
190
421
|
end
|
|
191
422
|
end
|
|
192
423
|
end
|
|
424
|
+
|
|
425
|
+
include Faker::Deprecator
|
|
426
|
+
deprecate_generator('IDNumber', IdNumber)
|
|
193
427
|
end
|