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.
Files changed (404) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1131 -19
  3. data/README.md +249 -105
  4. data/lib/faker/blockchain/aeternity.rb +5 -5
  5. data/lib/faker/blockchain/bitcoin.rb +2 -2
  6. data/lib/faker/blockchain/ethereum.rb +1 -1
  7. data/lib/faker/blockchain/tezos.rb +31 -3
  8. data/lib/faker/books/dune.rb +17 -12
  9. data/lib/faker/books/lovecraft.rb +16 -44
  10. data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
  11. data/lib/faker/creature/bird.rb +203 -0
  12. data/lib/faker/default/address.rb +42 -32
  13. data/lib/faker/default/adjective.rb +35 -0
  14. data/lib/faker/default/alphanumeric.rb +2 -8
  15. data/lib/faker/default/app.rb +1 -10
  16. data/lib/faker/default/avatar.rb +1 -12
  17. data/lib/faker/default/bank.rb +104 -19
  18. data/lib/faker/default/barcode.rb +165 -0
  19. data/lib/faker/default/beer.rb +3 -3
  20. data/lib/faker/default/blood.rb +48 -0
  21. data/lib/faker/default/boolean.rb +1 -4
  22. data/lib/faker/default/business.rb +1 -1
  23. data/lib/faker/default/camera.rb +46 -0
  24. data/lib/faker/default/cannabis.rb +10 -0
  25. data/lib/faker/default/chile_rut.rb +62 -18
  26. data/lib/faker/default/chuck_norris.rb +1 -0
  27. data/lib/faker/default/code.rb +162 -52
  28. data/lib/faker/default/color.rb +77 -6
  29. data/lib/faker/default/commerce.rb +105 -28
  30. data/lib/faker/default/company.rb +210 -28
  31. data/lib/faker/default/compass.rb +135 -0
  32. data/lib/faker/default/computer.rb +63 -0
  33. data/lib/faker/default/construction.rb +54 -0
  34. data/lib/faker/default/cosmere.rb +90 -0
  35. data/lib/faker/default/crypto.rb +26 -4
  36. data/lib/faker/default/crypto_coin.rb +48 -15
  37. data/lib/faker/default/date.rb +81 -54
  38. data/lib/faker/default/demographic.rb +1 -5
  39. data/lib/faker/default/driving_licence.rb +85 -18
  40. data/lib/faker/default/drone.rb +332 -0
  41. data/lib/faker/default/educator.rb +13 -0
  42. data/lib/faker/default/emotion.rb +33 -0
  43. data/lib/faker/default/file.rb +53 -21
  44. data/lib/faker/default/finance.rb +75 -7
  45. data/lib/faker/default/food.rb +28 -2
  46. data/lib/faker/default/gender.rb +1 -1
  47. data/lib/faker/default/hipster.rb +108 -51
  48. data/lib/faker/default/hobby.rb +22 -0
  49. data/lib/faker/default/html.rb +230 -0
  50. data/lib/faker/default/id_number.rb +251 -17
  51. data/lib/faker/default/internet.rb +361 -113
  52. data/lib/faker/default/internet_http.rb +48 -0
  53. data/lib/faker/default/invoice.rb +37 -23
  54. data/lib/faker/default/json.rb +63 -25
  55. data/lib/faker/default/lorem.rb +177 -75
  56. data/lib/faker/default/lorem_flickr.rb +69 -37
  57. data/lib/faker/default/markdown.rb +97 -11
  58. data/lib/faker/default/marketing.rb +1 -1
  59. data/lib/faker/default/measurement.rb +101 -42
  60. data/lib/faker/default/military.rb +26 -0
  61. data/lib/faker/default/mountain.rb +33 -0
  62. data/lib/faker/default/name.rb +99 -5
  63. data/lib/faker/default/nation.rb +0 -3
  64. data/lib/faker/default/{nhs.rb → national_health_service.rb} +26 -6
  65. data/lib/faker/default/number.rb +39 -69
  66. data/lib/faker/default/omniauth.rb +115 -57
  67. data/lib/faker/default/phone_number.rb +112 -14
  68. data/lib/faker/default/placeholdit.rb +23 -12
  69. data/lib/faker/default/relationship.rb +2 -6
  70. data/lib/faker/default/religion.rb +6 -0
  71. data/lib/faker/default/science.rb +108 -0
  72. data/lib/faker/default/slack_emoji.rb +81 -0
  73. data/lib/faker/default/source.rb +3 -16
  74. data/lib/faker/default/south_africa.rb +93 -3
  75. data/lib/faker/default/space.rb +1 -1
  76. data/lib/faker/default/string.rb +18 -8
  77. data/lib/faker/default/stripe.rb +68 -23
  78. data/lib/faker/default/tea.rb +41 -0
  79. data/lib/faker/default/theater.rb +52 -0
  80. data/lib/faker/default/time.rb +4 -34
  81. data/lib/faker/default/twitter.rb +42 -23
  82. data/lib/faker/default/types.rb +92 -34
  83. data/lib/faker/default/university.rb +45 -0
  84. data/lib/faker/default/vehicle.rb +227 -57
  85. data/lib/faker/default/verb.rb +45 -0
  86. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  87. data/lib/faker/default/world_cup.rb +6 -15
  88. data/lib/faker/fantasy/tolkien.rb +67 -0
  89. data/lib/faker/games/clash_of_clans.rb +48 -0
  90. data/lib/faker/games/control.rb +113 -0
  91. data/lib/faker/games/dnd.rb +178 -0
  92. data/lib/faker/games/dota.rb +14 -5
  93. data/lib/faker/games/elder_scrolls.rb +26 -0
  94. data/lib/faker/games/final_fantasy_xiv.rb +73 -0
  95. data/lib/faker/games/heroes.rb +13 -0
  96. data/lib/faker/games/heroes_of_the_storm.rb +16 -5
  97. data/lib/faker/games/minecraft.rb +113 -0
  98. data/lib/faker/games/myst.rb +1 -1
  99. data/lib/faker/games/street_fighter.rb +61 -0
  100. data/lib/faker/games/super_mario.rb +48 -0
  101. data/lib/faker/games/tarkov.rb +205 -0
  102. data/lib/faker/games/touhou.rb +75 -0
  103. data/lib/faker/games/warhammer_fantasy.rb +74 -0
  104. data/lib/faker/games/witcher.rb +39 -0
  105. data/lib/faker/games/world_of_warcraft.rb +26 -1
  106. data/lib/faker/japanese_media/conan.rb +48 -0
  107. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  108. data/lib/faker/japanese_media/doraemon.rb +48 -0
  109. data/lib/faker/japanese_media/dragon_ball.rb +26 -0
  110. data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +51 -0
  111. data/lib/faker/japanese_media/kamen_rider.rb +102 -0
  112. data/lib/faker/japanese_media/naruto.rb +61 -0
  113. data/lib/faker/japanese_media/one_piece.rb +1 -1
  114. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  115. data/lib/faker/locations/australia.rb +52 -0
  116. data/lib/faker/movies/avatar.rb +49 -0
  117. data/lib/faker/movies/departed.rb +49 -0
  118. data/lib/faker/movies/hackers.rb +48 -0
  119. data/lib/faker/movies/hobbit.rb +4 -4
  120. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  121. data/lib/faker/movies/lord_of_the_rings.rb +3 -3
  122. data/lib/faker/movies/movie.rb +13 -0
  123. data/lib/faker/movies/star_wars.rb +75 -7
  124. data/lib/faker/movies/the_room.rb +63 -0
  125. data/lib/faker/movies/tron.rb +161 -0
  126. data/lib/faker/music/hiphop.rb +48 -0
  127. data/lib/faker/music/music.rb +12 -0
  128. data/lib/faker/music/opera.rb +237 -1
  129. data/lib/faker/music/pearl_jam.rb +50 -0
  130. data/lib/faker/music/phish.rb +27 -1
  131. data/lib/faker/music/prince.rb +64 -0
  132. data/lib/faker/music/rock_band.rb +12 -0
  133. data/lib/faker/music/rush.rb +37 -0
  134. data/lib/faker/music/smashing_pumpkins.rb +64 -0
  135. data/lib/faker/quotes/quote.rb +93 -1
  136. data/lib/faker/quotes/rajnikanth.rb +1 -0
  137. data/lib/faker/quotes/shakespeare.rb +70 -0
  138. data/lib/faker/religion/bible.rb +50 -0
  139. data/lib/faker/sports/chess.rb +90 -0
  140. data/lib/faker/sports/mountaineering.rb +22 -0
  141. data/lib/faker/sports/sport.rb +116 -0
  142. data/lib/faker/sports/volleyball.rb +74 -0
  143. data/lib/faker/travel/airport.rb +43 -0
  144. data/lib/faker/travel/train_station.rb +54 -0
  145. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +13 -0
  146. data/lib/faker/tv_shows/archer.rb +51 -0
  147. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  148. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  149. data/lib/faker/tv_shows/buffy.rb +17 -4
  150. data/lib/faker/tv_shows/dr_who.rb +1 -1
  151. data/lib/faker/tv_shows/final_space.rb +51 -0
  152. data/lib/faker/tv_shows/futurama.rb +65 -0
  153. data/lib/faker/tv_shows/michael_scott.rb +0 -3
  154. data/lib/faker/tv_shows/simpsons.rb +14 -0
  155. data/lib/faker/tv_shows/south_park.rb +15 -0
  156. data/lib/faker/tv_shows/spongebob.rb +50 -0
  157. data/lib/faker/tv_shows/suits.rb +37 -0
  158. data/lib/faker/tv_shows/supernatural.rb +48 -0
  159. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +17 -4
  160. data/lib/faker/tv_shows/the_office.rb +37 -0
  161. data/lib/faker/version.rb +2 -2
  162. data/lib/faker.rb +51 -87
  163. data/lib/helpers/base58.rb +1 -1
  164. data/lib/helpers/char.rb +22 -27
  165. data/lib/helpers/deprecator.rb +53 -0
  166. data/lib/helpers/positional_generator.rb +480 -0
  167. data/lib/helpers/unique_generator.rb +13 -13
  168. data/lib/locales/README.md +18 -2
  169. data/lib/locales/ar.yml +6 -1
  170. data/lib/locales/bg.yml +1 -2
  171. data/lib/locales/da-DK.yml +529 -35
  172. data/lib/locales/de-AT.yml +3487 -25
  173. data/lib/locales/de-CH.yml +6020 -9
  174. data/lib/locales/de.yml +7185 -97
  175. data/lib/locales/ee.yml +0 -1
  176. data/lib/locales/en/address.yml +1828 -562
  177. data/lib/locales/en/adjective.yml +179 -0
  178. data/lib/locales/en/airport.yml +381 -0
  179. data/lib/locales/en/animal.yml +1 -1
  180. data/lib/locales/en/aqua_teen_hunger_force.yml +33 -1
  181. data/lib/locales/en/archer.yml +75 -0
  182. data/lib/locales/en/australia.yml +108 -0
  183. data/lib/locales/en/avatar.yml +31 -0
  184. data/lib/locales/en/bank.yml +2 -2
  185. data/lib/locales/en/barcode.yml +24 -0
  186. data/lib/locales/en/bible.yml +90 -0
  187. data/lib/locales/en/big_bang_theory.yml +38 -0
  188. data/lib/locales/en/bird.yml +1281 -0
  189. data/lib/locales/en/blood.yml +13 -0
  190. data/lib/locales/en/book.yml +487 -3
  191. data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
  192. data/lib/locales/en/buffy.yml +1 -1
  193. data/lib/locales/en/camera.yml +611 -0
  194. data/lib/locales/en/cat.yml +1 -1
  195. data/lib/locales/en/chess.yml +103 -0
  196. data/lib/locales/en/clash_of_clan.yml +101 -0
  197. data/lib/locales/en/coffee.yml +1 -1
  198. data/lib/locales/en/commerce.yml +17 -0
  199. data/lib/locales/en/community.yml +17 -17
  200. data/lib/locales/en/company.yml +3 -2
  201. data/lib/locales/en/computer.yml +55 -0
  202. data/lib/locales/en/conan.yml +171 -0
  203. data/lib/locales/en/control.yml +247 -0
  204. data/lib/locales/en/cowboy_bebop.yml +163 -0
  205. data/lib/locales/en/demographic.yml +218 -5
  206. data/lib/locales/en/departed.yml +50 -0
  207. data/lib/locales/en/device.yml +112 -4
  208. data/lib/locales/en/dnd.yml +636 -0
  209. data/lib/locales/en/dog.yml +262 -7
  210. data/lib/locales/en/doraemon.yml +286 -0
  211. data/lib/locales/en/dota.yml +704 -63
  212. data/lib/locales/en/dragon_ball.yml +243 -1
  213. data/lib/locales/en/driving_license.yml +181 -0
  214. data/lib/locales/en/drone.yml +95 -0
  215. data/lib/locales/en/dune.yml +270 -131
  216. data/lib/locales/en/educator.yml +6 -0
  217. data/lib/locales/en/elder_scrolls.yml +583 -9
  218. data/lib/locales/en/emotion.yml +480 -0
  219. data/lib/locales/en/fallout.yml +311 -133
  220. data/lib/locales/en/file.yml +9 -1
  221. data/lib/locales/en/final_fantasy_xiv.yml +754 -0
  222. data/lib/locales/en/final_space.yml +37 -0
  223. data/lib/locales/en/finance.yml +80 -4
  224. data/lib/locales/en/food.yml +1067 -10
  225. data/lib/locales/en/football.yml +3 -3
  226. data/lib/locales/en/fresh_prince_of_bel_air.yml +1 -1
  227. data/lib/locales/en/fullmetal_alchemist_brotherhood.yml +78 -0
  228. data/lib/locales/en/futurama.yml +344 -0
  229. data/lib/locales/en/game.yml +11 -0
  230. data/lib/locales/en/hackers.yml +53 -0
  231. data/lib/locales/en/half_life.yml +84 -3
  232. data/lib/locales/en/harry_potter.yml +1 -1
  233. data/lib/locales/en/heroes.yml +408 -3
  234. data/lib/locales/en/heroes_of_the_storm.yml +131 -4
  235. data/lib/locales/en/hobby.yml +171 -0
  236. data/lib/locales/en/horse.yml +2 -2
  237. data/lib/locales/en/house.yml +1 -1
  238. data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
  239. data/lib/locales/en/id_number.yml +1 -1
  240. data/lib/locales/en/internet.yml +136 -3
  241. data/lib/locales/en/jack_handey.yml +54 -0
  242. data/lib/locales/en/kamen_rider.yml +452 -0
  243. data/lib/locales/en/kpop.yml +7 -7
  244. data/lib/locales/en/league_of_legends.yml +285 -6
  245. data/lib/locales/en/lebowski.yml +1 -1
  246. data/lib/locales/en/lovecraft.yml +76 -6
  247. data/lib/locales/en/military.yml +179 -5
  248. data/lib/locales/en/minecraft.yml +663 -0
  249. data/lib/locales/en/mitch_hedberg.yml +46 -0
  250. data/lib/locales/en/mountain.yml +171 -0
  251. data/lib/locales/en/mountaineering.yml +14 -0
  252. data/lib/locales/en/movie.yml +194 -2
  253. data/lib/locales/en/music.yml +461 -29
  254. data/lib/locales/en/myst.yml +87 -31
  255. data/lib/locales/en/name.yml +5 -4
  256. data/lib/locales/en/naruto.yml +230 -0
  257. data/lib/locales/en/one_piece.yml +2 -2
  258. data/lib/locales/en/opera.yml +169 -1
  259. data/lib/locales/en/overwatch.yml +2648 -2622
  260. data/lib/locales/en/pearl_jam.yml +213 -0
  261. data/lib/locales/en/phish.yml +392 -1
  262. data/lib/locales/en/phone_number.yml +78 -3
  263. data/lib/locales/en/pokemon.yml +417 -4
  264. data/lib/locales/en/prince.yml +227 -0
  265. data/lib/locales/en/quote.yml +692 -163
  266. data/lib/locales/en/rock_band.yml +1 -0
  267. data/lib/locales/en/rush.yml +32 -0
  268. data/lib/locales/en/science.yml +481 -3
  269. data/lib/locales/en/shakespeare.yml +21 -24
  270. data/lib/locales/en/simpsons.yml +668 -0
  271. data/lib/locales/en/smashing_pumpkins.yml +382 -0
  272. data/lib/locales/en/source.yml +35 -0
  273. data/lib/locales/en/south_park.yml +360 -2
  274. data/lib/locales/en/space.yml +1 -1
  275. data/lib/locales/en/spongebob.yml +489 -0
  276. data/lib/locales/en/sport.yml +130 -0
  277. data/lib/locales/en/star_trek.yml +1 -1
  278. data/lib/locales/en/star_wars.yml +568 -220
  279. data/lib/locales/en/stranger_thing.yml +1 -1
  280. data/lib/locales/en/street_fighter.yml +1524 -0
  281. data/lib/locales/en/studio_ghibli.yml +107 -0
  282. data/lib/locales/en/suits.yml +45 -0
  283. data/lib/locales/en/super_mario.yml +58 -0
  284. data/lib/locales/en/super_smash_bros.yml +23 -6
  285. data/lib/locales/en/supernatural.yml +141 -0
  286. data/lib/locales/en/tarkov.yml +593 -0
  287. data/lib/locales/en/tea.yml +172 -0
  288. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  289. data/lib/locales/en/the_office.yml +86 -0
  290. data/lib/locales/en/the_room.yml +68 -0
  291. data/lib/locales/en/theater.yml +597 -0
  292. data/lib/locales/en/tolkien.yml +2453 -0
  293. data/lib/locales/en/touhou.yml +839 -0
  294. data/lib/locales/en/train_station.yml +280 -0
  295. data/lib/locales/en/tron.yml +227 -0
  296. data/lib/locales/en/vehicle.yml +2809 -75
  297. data/lib/locales/en/volleyball.yml +501 -0
  298. data/lib/locales/en/warhammer_fantasy.yml +582 -0
  299. data/lib/locales/en/witcher.yml +426 -7
  300. data/lib/locales/en/world_of_warcraft.yml +122 -4
  301. data/lib/locales/en/zelda.yml +962 -4
  302. data/lib/locales/en-AU.yml +728 -17
  303. data/lib/locales/en-CA.yml +373 -16
  304. data/lib/locales/en-GB.yml +116 -8
  305. data/lib/locales/en-IND.yml +1259 -16
  306. data/lib/locales/en-KE.yml +212 -0
  307. data/lib/locales/en-MS.yml +364 -16
  308. data/lib/locales/en-NEP.yml +212 -35
  309. data/lib/locales/en-NG.yml +1 -0
  310. data/lib/locales/en-NZ.yml +1153 -121
  311. data/lib/locales/en-PAK.yml +369 -9
  312. data/lib/locales/en-SG.yml +581 -15
  313. data/lib/locales/en-UG.yml +1 -0
  314. data/lib/locales/en-US.yml +6937 -71
  315. data/lib/locales/en-ZA.yml +1 -1
  316. data/lib/locales/en-au-ocker.yml +266 -21
  317. data/lib/locales/en.yml +0 -3
  318. data/lib/locales/es-AR.yml +4570 -0
  319. data/lib/locales/es-MX.yml +1 -2
  320. data/lib/locales/es.yml +58 -3
  321. data/lib/locales/fi-FI.yml +4 -2
  322. data/lib/locales/fr/address.yml +20 -0
  323. data/lib/locales/fr/adjective.yml +266 -0
  324. data/lib/locales/fr/ancient.yml +141 -0
  325. data/lib/locales/fr/animal.yml +5 -0
  326. data/lib/locales/fr/appliance.yml +4 -0
  327. data/lib/locales/fr/book.yml +7 -0
  328. data/lib/locales/fr/color.yml +4 -0
  329. data/lib/locales/fr/company.yml +17 -0
  330. data/lib/locales/fr/compass.yml +23 -0
  331. data/lib/locales/fr/demographic.yml +4 -0
  332. data/lib/locales/fr/gender.yml +6 -0
  333. data/lib/locales/fr/internet.yml +4 -0
  334. data/lib/locales/fr/lorem.yml +5 -0
  335. data/lib/locales/fr/measurement.yml +7 -0
  336. data/lib/locales/fr/name.yml +22 -0
  337. data/lib/locales/fr/phone_number.yml +7 -0
  338. data/lib/locales/fr/pokemon.yml +7 -0
  339. data/lib/locales/fr-CA.yml +2748 -43
  340. data/lib/locales/fr-CH.yml +3 -4
  341. data/lib/locales/fr.yml +2 -112
  342. data/lib/locales/hy.yml +3624 -119
  343. data/lib/locales/id.yml +839 -10
  344. data/lib/locales/it.yml +1304 -31
  345. data/lib/locales/ja/README.md +13 -0
  346. data/lib/locales/ja/address.yml +120539 -0
  347. data/lib/locales/ja/adjective.yml +148 -0
  348. data/lib/locales/ja/ancient.yml +4 -0
  349. data/lib/locales/ja/animal.yml +5 -0
  350. data/lib/locales/ja/bank.yml +4 -0
  351. data/lib/locales/ja/book.yml +7 -0
  352. data/lib/locales/ja/cat.yml +5 -0
  353. data/lib/locales/ja/coffee.yml +4 -0
  354. data/lib/locales/ja/color.yml +4 -0
  355. data/lib/locales/ja/commerce.yml +11 -0
  356. data/lib/locales/ja/company.yml +8 -0
  357. data/lib/locales/ja/dog.yml +6 -0
  358. data/lib/locales/ja/emotion.yml +51 -0
  359. data/lib/locales/ja/food.yml +4 -0
  360. data/lib/locales/ja/football.yml +115 -0
  361. data/lib/locales/ja/gender.yml +4 -0
  362. data/lib/locales/ja/lorem.yml +9 -0
  363. data/lib/locales/ja/name.yml +13 -0
  364. data/lib/locales/ja/naruto.yml +230 -0
  365. data/lib/locales/ja/overwatch.yml +5 -0
  366. data/lib/locales/ja/phone_number.yml +7 -0
  367. data/lib/locales/ja/pokemon.yml +7 -0
  368. data/lib/locales/ja/relationship.yml +10 -0
  369. data/lib/locales/ja/restaurant.yml +11 -0
  370. data/lib/locales/ja/space.yml +5 -0
  371. data/lib/locales/ja/sport.yml +130 -0
  372. data/lib/locales/ja/studio_ghibli.yml +112 -0
  373. data/lib/locales/ja/subscription.yml +8 -0
  374. data/lib/locales/ja/super_mario.yml +9 -0
  375. data/lib/locales/ja/super_smash_bros.yml +8 -0
  376. data/lib/locales/ja/touhou.yml +466 -0
  377. data/lib/locales/ja/university.yml +9 -0
  378. data/lib/locales/ja/zelda.yml +5 -0
  379. data/lib/locales/ko.yml +1450 -17
  380. data/lib/locales/lt.yml +315 -0
  381. data/lib/locales/lv.yml +1 -2
  382. data/lib/locales/mi-NZ.yml +283 -0
  383. data/lib/locales/nb-NO.yml +518 -27
  384. data/lib/locales/nl.yml +1 -1
  385. data/lib/locales/pl.yml +1 -2
  386. data/lib/locales/pt-BR.yml +8157 -659
  387. data/lib/locales/pt.yml +844 -43
  388. data/lib/locales/ru.yml +1355 -30
  389. data/lib/locales/sk.yml +4410 -41
  390. data/lib/locales/sv.yml +100 -0
  391. data/lib/locales/th.yml +76 -76
  392. data/lib/locales/tr.yml +1 -2
  393. data/lib/locales/uk.yml +1810 -44
  394. data/lib/locales/vi.yml +1 -0
  395. data/lib/locales/zh-CN/bank.yml +17 -0
  396. data/lib/locales/zh-CN.yml +1 -0
  397. data/lib/locales/zh-TW.yml +1 -0
  398. metadata +192 -127
  399. data/History.md +0 -176
  400. data/lib/faker/default/fillmurray.rb +0 -45
  401. data/lib/faker/default/lorem_pixel.rb +0 -47
  402. data/lib/locales/en/hobbit.yml +0 -19
  403. data/lib/locales/en/lord_of_the_rings.yml +0 -6
  404. 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 IDNumber < Base
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
- ssn = regexify(/[0-8]\d{2}-\d{2}-\d{4}/)
32
- # We could still have all 0s in one segment or another
33
- INVALID_SSN.any? { |regex| regex =~ ssn } ? ssn_valid : ssn
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
- def brazilian_citizen_number(legacy_formatted = NOT_GIVEN, formatted: false)
84
- warn_for_deprecated_arguments do |keywords|
85
- keywords << :formatted if legacy_formatted != NOT_GIVEN
86
- end
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
- def brazilian_id(legacy_formatted = NOT_GIVEN, formatted: false)
98
- warn_for_deprecated_arguments do |keywords|
99
- keywords << :formatted if legacy_formatted != NOT_GIVEN
100
- end
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.to_s + '-' + verification_code.to_s
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('').to_i * 2).to_s
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 = false)
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