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.
Files changed (380) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +810 -19
  3. data/History.md +5 -5
  4. data/README.md +232 -105
  5. data/lib/faker/blockchain/aeternity.rb +5 -5
  6. data/lib/faker/blockchain/bitcoin.rb +2 -2
  7. data/lib/faker/blockchain/ethereum.rb +1 -1
  8. data/lib/faker/blockchain/tezos.rb +31 -3
  9. data/lib/faker/books/dune.rb +17 -12
  10. data/lib/faker/books/lovecraft.rb +14 -41
  11. data/lib/faker/books/the_kingkiller_chronicle.rb +61 -0
  12. data/lib/faker/creature/bird.rb +203 -0
  13. data/lib/faker/default/address.rb +40 -30
  14. data/lib/faker/default/adjective.rb +35 -0
  15. data/lib/faker/default/alphanumeric.rb +2 -8
  16. data/lib/faker/default/app.rb +1 -10
  17. data/lib/faker/default/avatar.rb +1 -12
  18. data/lib/faker/default/bank.rb +104 -19
  19. data/lib/faker/default/barcode.rb +165 -0
  20. data/lib/faker/default/beer.rb +3 -3
  21. data/lib/faker/default/blood.rb +48 -0
  22. data/lib/faker/default/boolean.rb +1 -4
  23. data/lib/faker/default/business.rb +1 -1
  24. data/lib/faker/default/camera.rb +46 -0
  25. data/lib/faker/default/cannabis.rb +10 -0
  26. data/lib/faker/default/chile_rut.rb +54 -16
  27. data/lib/faker/default/chuck_norris.rb +1 -0
  28. data/lib/faker/default/code.rb +106 -38
  29. data/lib/faker/default/color.rb +77 -6
  30. data/lib/faker/default/commerce.rb +105 -28
  31. data/lib/faker/default/company.rb +116 -28
  32. data/lib/faker/default/compass.rb +135 -0
  33. data/lib/faker/default/computer.rb +63 -0
  34. data/lib/faker/default/construction.rb +54 -0
  35. data/lib/faker/default/cosmere.rb +90 -0
  36. data/lib/faker/default/crypto.rb +17 -4
  37. data/lib/faker/default/crypto_coin.rb +48 -15
  38. data/lib/faker/default/date.rb +21 -50
  39. data/lib/faker/default/demographic.rb +1 -5
  40. data/lib/faker/default/driving_licence.rb +66 -10
  41. data/lib/faker/default/drone.rb +332 -0
  42. data/lib/faker/default/educator.rb +13 -0
  43. data/lib/faker/default/emotion.rb +33 -0
  44. data/lib/faker/default/file.rb +53 -21
  45. data/lib/faker/default/finance.rb +75 -7
  46. data/lib/faker/default/food.rb +28 -2
  47. data/lib/faker/default/gender.rb +1 -1
  48. data/lib/faker/default/hipster.rb +106 -48
  49. data/lib/faker/default/hobby.rb +22 -0
  50. data/lib/faker/default/id_number.rb +230 -13
  51. data/lib/faker/default/internet.rb +390 -108
  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 +61 -23
  55. data/lib/faker/default/lorem.rb +171 -72
  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 +21 -6
  65. data/lib/faker/default/number.rb +38 -68
  66. data/lib/faker/default/omniauth.rb +111 -53
  67. data/lib/faker/default/phone_number.rb +89 -10
  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 +90 -0
  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/time.rb +4 -34
  80. data/lib/faker/default/twitter.rb +42 -23
  81. data/lib/faker/default/types.rb +88 -29
  82. data/lib/faker/default/university.rb +45 -0
  83. data/lib/faker/default/vehicle.rb +212 -54
  84. data/lib/faker/default/verb.rb +45 -0
  85. data/lib/faker/default/vulnerability_identifier.rb +23 -0
  86. data/lib/faker/default/world_cup.rb +6 -15
  87. data/lib/faker/fantasy/tolkien.rb +67 -0
  88. data/lib/faker/games/clash_of_clans.rb +48 -0
  89. data/lib/faker/games/control.rb +113 -0
  90. data/lib/faker/games/dnd.rb +178 -0
  91. data/lib/faker/games/dota.rb +14 -5
  92. data/lib/faker/games/elder_scrolls.rb +26 -0
  93. data/lib/faker/games/heroes.rb +13 -0
  94. data/lib/faker/games/heroes_of_the_storm.rb +16 -5
  95. data/lib/faker/games/minecraft.rb +113 -0
  96. data/lib/faker/games/myst.rb +1 -1
  97. data/lib/faker/games/street_fighter.rb +61 -0
  98. data/lib/faker/games/super_mario.rb +48 -0
  99. data/lib/faker/games/tarkov.rb +205 -0
  100. data/lib/faker/games/touhou.rb +75 -0
  101. data/lib/faker/games/warhammer_fantasy.rb +74 -0
  102. data/lib/faker/games/witcher.rb +39 -0
  103. data/lib/faker/games/world_of_warcraft.rb +26 -1
  104. data/lib/faker/japanese_media/conan.rb +48 -0
  105. data/lib/faker/japanese_media/cowboy_bebop.rb +61 -0
  106. data/lib/faker/japanese_media/doraemon.rb +48 -0
  107. data/lib/faker/japanese_media/dragon_ball.rb +26 -0
  108. data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +48 -0
  109. data/lib/faker/japanese_media/kamen_rider.rb +102 -0
  110. data/lib/faker/japanese_media/naruto.rb +61 -0
  111. data/lib/faker/japanese_media/one_piece.rb +1 -1
  112. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  113. data/lib/faker/locations/australia.rb +47 -0
  114. data/lib/faker/movies/avatar.rb +49 -0
  115. data/lib/faker/movies/departed.rb +49 -0
  116. data/lib/faker/movies/hackers.rb +48 -0
  117. data/lib/faker/movies/hobbit.rb +4 -4
  118. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  119. data/lib/faker/movies/lord_of_the_rings.rb +3 -3
  120. data/lib/faker/movies/movie.rb +13 -0
  121. data/lib/faker/movies/room.rb +63 -0
  122. data/lib/faker/movies/star_wars.rb +75 -7
  123. data/lib/faker/movies/tron.rb +161 -0
  124. data/lib/faker/music/hiphop.rb +48 -0
  125. data/lib/faker/music/music.rb +12 -0
  126. data/lib/faker/music/opera.rb +237 -1
  127. data/lib/faker/music/pearl_jam.rb +50 -0
  128. data/lib/faker/music/phish.rb +27 -1
  129. data/lib/faker/music/prince.rb +64 -0
  130. data/lib/faker/music/rock_band.rb +12 -0
  131. data/lib/faker/music/rush.rb +37 -0
  132. data/lib/faker/music/show.rb +49 -0
  133. data/lib/faker/quotes/quote.rb +93 -1
  134. data/lib/faker/quotes/rajnikanth.rb +1 -0
  135. data/lib/faker/quotes/shakespeare.rb +70 -0
  136. data/lib/faker/religion/bible.rb +50 -0
  137. data/lib/faker/sports/chess.rb +90 -0
  138. data/lib/faker/sports/mountaineering.rb +22 -0
  139. data/lib/faker/sports/sport.rb +116 -0
  140. data/lib/faker/sports/volleyball.rb +74 -0
  141. data/lib/faker/travel/airport.rb +43 -0
  142. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +13 -0
  143. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  144. data/lib/faker/tv_shows/brooklyn_nine_nine.rb +38 -0
  145. data/lib/faker/tv_shows/buffy.rb +17 -4
  146. data/lib/faker/tv_shows/dr_who.rb +1 -1
  147. data/lib/faker/tv_shows/final_space.rb +51 -0
  148. data/lib/faker/tv_shows/futurama.rb +65 -0
  149. data/lib/faker/tv_shows/michael_scott.rb +0 -3
  150. data/lib/faker/tv_shows/simpsons.rb +14 -0
  151. data/lib/faker/tv_shows/spongebob.rb +50 -0
  152. data/lib/faker/tv_shows/suits.rb +37 -0
  153. data/lib/faker/tv_shows/supernatural.rb +48 -0
  154. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +17 -4
  155. data/lib/faker/tv_shows/the_office.rb +37 -0
  156. data/lib/faker/version.rb +2 -2
  157. data/lib/faker.rb +40 -84
  158. data/lib/helpers/base58.rb +1 -1
  159. data/lib/helpers/char.rb +22 -27
  160. data/lib/helpers/unique_generator.rb +13 -13
  161. data/lib/locales/ar.yml +6 -1
  162. data/lib/locales/bg.yml +1 -1
  163. data/lib/locales/da-DK.yml +1 -1
  164. data/lib/locales/de-AT.yml +7 -6
  165. data/lib/locales/de-CH.yml +1697 -2
  166. data/lib/locales/de.yml +12 -6
  167. data/lib/locales/en/address.yml +4 -3
  168. data/lib/locales/en/adjective.yml +179 -0
  169. data/lib/locales/en/airport.yml +381 -0
  170. data/lib/locales/en/animal.yml +1 -1
  171. data/lib/locales/en/aqua_teen_hunger_force.yml +33 -1
  172. data/lib/locales/en/australia.yml +107 -0
  173. data/lib/locales/en/avatar.yml +31 -0
  174. data/lib/locales/en/bank.yml +1 -1
  175. data/lib/locales/en/barcode.yml +24 -0
  176. data/lib/locales/en/bible.yml +90 -0
  177. data/lib/locales/en/big_bang_theory.yml +38 -0
  178. data/lib/locales/en/bird.yml +1281 -0
  179. data/lib/locales/en/blood.yml +13 -0
  180. data/lib/locales/en/book.yml +487 -3
  181. data/lib/locales/en/brooklyn_nine_nine.yml +35 -0
  182. data/lib/locales/en/buffy.yml +1 -1
  183. data/lib/locales/en/camera.yml +611 -0
  184. data/lib/locales/en/cat.yml +1 -1
  185. data/lib/locales/en/chess.yml +103 -0
  186. data/lib/locales/en/clash_of_clan.yml +101 -0
  187. data/lib/locales/en/coffee.yml +1 -1
  188. data/lib/locales/en/commerce.yml +17 -0
  189. data/lib/locales/en/community.yml +17 -17
  190. data/lib/locales/en/company.yml +3 -2
  191. data/lib/locales/en/computer.yml +55 -0
  192. data/lib/locales/en/conan.yml +171 -0
  193. data/lib/locales/en/control.yml +247 -0
  194. data/lib/locales/en/cowboy_bebop.yml +163 -0
  195. data/lib/locales/en/demographic.yml +218 -5
  196. data/lib/locales/en/departed.yml +50 -0
  197. data/lib/locales/en/device.yml +112 -4
  198. data/lib/locales/en/dnd.yml +636 -0
  199. data/lib/locales/en/doraemon.yml +286 -0
  200. data/lib/locales/en/dota.yml +651 -63
  201. data/lib/locales/en/dragon_ball.yml +243 -1
  202. data/lib/locales/en/driving_license.yml +181 -0
  203. data/lib/locales/en/drone.yml +95 -0
  204. data/lib/locales/en/dune.yml +270 -131
  205. data/lib/locales/en/educator.yml +6 -0
  206. data/lib/locales/en/elder_scrolls.yml +583 -9
  207. data/lib/locales/en/emotion.yml +480 -0
  208. data/lib/locales/en/fallout.yml +311 -133
  209. data/lib/locales/en/file.yml +9 -1
  210. data/lib/locales/en/final_space.yml +37 -0
  211. data/lib/locales/en/finance.yml +77 -1
  212. data/lib/locales/en/fma_brotherhood.yml +78 -0
  213. data/lib/locales/en/food.yml +1066 -10
  214. data/lib/locales/en/football.yml +3 -3
  215. data/lib/locales/en/fresh_prince_of_bel_air.yml +1 -1
  216. data/lib/locales/en/futurama.yml +344 -0
  217. data/lib/locales/en/game.yml +11 -0
  218. data/lib/locales/en/hackers.yml +53 -0
  219. data/lib/locales/en/half_life.yml +84 -3
  220. data/lib/locales/en/heroes.yml +408 -3
  221. data/lib/locales/en/heroes_of_the_storm.yml +131 -4
  222. data/lib/locales/en/hobby.yml +171 -0
  223. data/lib/locales/en/horse.yml +2 -2
  224. data/lib/locales/en/house.yml +1 -1
  225. data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
  226. data/lib/locales/en/internet.yml +140 -3
  227. data/lib/locales/en/jack_handey.yml +54 -0
  228. data/lib/locales/en/kamen_rider.yml +452 -0
  229. data/lib/locales/en/kpop.yml +7 -7
  230. data/lib/locales/en/league_of_legends.yml +285 -6
  231. data/lib/locales/en/lebowski.yml +1 -1
  232. data/lib/locales/en/lovecraft.yml +76 -6
  233. data/lib/locales/en/military.yml +179 -5
  234. data/lib/locales/en/minecraft.yml +663 -0
  235. data/lib/locales/en/mitch_hedberg.yml +46 -0
  236. data/lib/locales/en/mountain.yml +171 -0
  237. data/lib/locales/en/mountaineering.yml +14 -0
  238. data/lib/locales/en/movie.yml +194 -2
  239. data/lib/locales/en/music.yml +461 -29
  240. data/lib/locales/en/myst.yml +87 -31
  241. data/lib/locales/en/name.yml +5 -4
  242. data/lib/locales/en/naruto.yml +230 -0
  243. data/lib/locales/en/one_piece.yml +2 -2
  244. data/lib/locales/en/opera.yml +169 -1
  245. data/lib/locales/en/overwatch.yml +2648 -2622
  246. data/lib/locales/en/pearl_jam.yml +213 -0
  247. data/lib/locales/en/phish.yml +392 -1
  248. data/lib/locales/en/pokemon.yml +417 -4
  249. data/lib/locales/en/prince.yml +227 -0
  250. data/lib/locales/en/quote.yml +692 -163
  251. data/lib/locales/en/rock_band.yml +1 -0
  252. data/lib/locales/en/room.yml +68 -0
  253. data/lib/locales/en/rush.yml +32 -0
  254. data/lib/locales/en/science.yml +481 -3
  255. data/lib/locales/en/shakespeare.yml +21 -24
  256. data/lib/locales/en/show.yml +597 -0
  257. data/lib/locales/en/simpsons.yml +668 -0
  258. data/lib/locales/en/source.yml +35 -0
  259. data/lib/locales/en/space.yml +1 -1
  260. data/lib/locales/en/spongebob.yml +489 -0
  261. data/lib/locales/en/sport.yml +130 -0
  262. data/lib/locales/en/star_trek.yml +1 -1
  263. data/lib/locales/en/star_wars.yml +568 -220
  264. data/lib/locales/en/stranger_thing.yml +1 -1
  265. data/lib/locales/en/street_fighter.yml +1524 -0
  266. data/lib/locales/en/studio_ghibli.yml +107 -0
  267. data/lib/locales/en/suits.yml +45 -0
  268. data/lib/locales/en/super_mario.yml +58 -0
  269. data/lib/locales/en/super_smash_bros.yml +23 -6
  270. data/lib/locales/en/supernatural.yml +141 -0
  271. data/lib/locales/en/tarkov.yml +593 -0
  272. data/lib/locales/en/tea.yml +172 -0
  273. data/lib/locales/en/the_kingkiller_chronicle.yml +56 -0
  274. data/lib/locales/en/the_office.yml +86 -0
  275. data/lib/locales/en/tolkien.yml +2453 -0
  276. data/lib/locales/en/touhou.yml +839 -0
  277. data/lib/locales/en/tron.yml +227 -0
  278. data/lib/locales/en/vehicle.yml +2809 -75
  279. data/lib/locales/en/volleyball.yml +501 -0
  280. data/lib/locales/en/warhammer_fantasy.yml +582 -0
  281. data/lib/locales/en/witcher.yml +426 -7
  282. data/lib/locales/en/world_of_warcraft.yml +122 -4
  283. data/lib/locales/en/zelda.yml +962 -4
  284. data/lib/locales/en-AU.yml +50 -10
  285. data/lib/locales/en-CA.yml +4 -1
  286. data/lib/locales/en-GB.yml +3 -2
  287. data/lib/locales/en-IND.yml +2 -1
  288. data/lib/locales/en-MS.yml +3 -1
  289. data/lib/locales/en-NEP.yml +4 -1
  290. data/lib/locales/en-NG.yml +1 -0
  291. data/lib/locales/en-NZ.yml +4 -1
  292. data/lib/locales/en-PAK.yml +3 -1
  293. data/lib/locales/en-SG.yml +3 -1
  294. data/lib/locales/en-UG.yml +1 -0
  295. data/lib/locales/en-US.yml +38 -12
  296. data/lib/locales/en-ZA.yml +1 -1
  297. data/lib/locales/en-au-ocker.yml +4 -1
  298. data/lib/locales/en.yml +0 -3
  299. data/lib/locales/es-AR.yml +4601 -0
  300. data/lib/locales/es-MX.yml +1 -1
  301. data/lib/locales/es.yml +58 -2
  302. data/lib/locales/fi-FI.yml +4 -2
  303. data/lib/locales/fr/address.yml +20 -0
  304. data/lib/locales/fr/adjective.yml +266 -0
  305. data/lib/locales/fr/ancient.yml +141 -0
  306. data/lib/locales/fr/animal.yml +5 -0
  307. data/lib/locales/fr/appliance.yml +4 -0
  308. data/lib/locales/fr/book.yml +7 -0
  309. data/lib/locales/fr/color.yml +4 -0
  310. data/lib/locales/fr/company.yml +17 -0
  311. data/lib/locales/fr/compass.yml +23 -0
  312. data/lib/locales/fr/demographic.yml +4 -0
  313. data/lib/locales/fr/gender.yml +6 -0
  314. data/lib/locales/fr/internet.yml +5 -0
  315. data/lib/locales/fr/lorem.yml +5 -0
  316. data/lib/locales/fr/measurement.yml +7 -0
  317. data/lib/locales/fr/name.yml +21 -0
  318. data/lib/locales/fr/phone_number.yml +7 -0
  319. data/lib/locales/fr/pokemon.yml +7 -0
  320. data/lib/locales/fr-CA.yml +22 -6
  321. data/lib/locales/fr-CH.yml +3 -3
  322. data/lib/locales/fr.yml +1 -113
  323. data/lib/locales/hy.yml +2 -1
  324. data/lib/locales/id.yml +3 -1
  325. data/lib/locales/it.yml +3 -1
  326. data/lib/locales/ja/README.md +13 -0
  327. data/lib/locales/ja/address.yml +120539 -0
  328. data/lib/locales/ja/adjective.yml +148 -0
  329. data/lib/locales/ja/ancient.yml +4 -0
  330. data/lib/locales/ja/animal.yml +5 -0
  331. data/lib/locales/ja/bank.yml +4 -0
  332. data/lib/locales/ja/book.yml +7 -0
  333. data/lib/locales/ja/cat.yml +5 -0
  334. data/lib/locales/ja/coffee.yml +4 -0
  335. data/lib/locales/ja/color.yml +4 -0
  336. data/lib/locales/ja/commerce.yml +11 -0
  337. data/lib/locales/ja/company.yml +8 -0
  338. data/lib/locales/ja/dog.yml +6 -0
  339. data/lib/locales/ja/emotion.yml +51 -0
  340. data/lib/locales/ja/food.yml +4 -0
  341. data/lib/locales/ja/gender.yml +4 -0
  342. data/lib/locales/ja/lorem.yml +9 -0
  343. data/lib/locales/ja/name.yml +13 -0
  344. data/lib/locales/ja/naruto.yml +230 -0
  345. data/lib/locales/ja/overwatch.yml +5 -0
  346. data/lib/locales/ja/phone_number.yml +7 -0
  347. data/lib/locales/ja/pokemon.yml +7 -0
  348. data/lib/locales/ja/relationship.yml +10 -0
  349. data/lib/locales/ja/restaurant.yml +11 -0
  350. data/lib/locales/ja/space.yml +5 -0
  351. data/lib/locales/ja/studio_ghibli.yml +112 -0
  352. data/lib/locales/ja/subscription.yml +8 -0
  353. data/lib/locales/ja/super_mario.yml +9 -0
  354. data/lib/locales/ja/super_smash_bros.yml +8 -0
  355. data/lib/locales/ja/university.yml +9 -0
  356. data/lib/locales/ja/zelda.yml +5 -0
  357. data/lib/locales/ko.yml +95 -2
  358. data/lib/locales/lt.yml +34 -0
  359. data/lib/locales/lv.yml +1 -1
  360. data/lib/locales/mi-NZ.yml +283 -0
  361. data/lib/locales/nb-NO.yml +5 -2
  362. data/lib/locales/nl.yml +1 -0
  363. data/lib/locales/pl.yml +2 -2
  364. data/lib/locales/pt-BR.yml +10 -2
  365. data/lib/locales/pt.yml +4 -2
  366. data/lib/locales/ru.yml +43 -1
  367. data/lib/locales/sk.yml +5 -2
  368. data/lib/locales/sv.yml +1 -0
  369. data/lib/locales/th.yml +76 -76
  370. data/lib/locales/tr.yml +1 -0
  371. data/lib/locales/uk.yml +3 -0
  372. data/lib/locales/vi.yml +1 -0
  373. data/lib/locales/zh-CN.yml +1 -0
  374. data/lib/locales/zh-TW.yml +1 -0
  375. metadata +219 -29
  376. data/lib/faker/default/fillmurray.rb +0 -45
  377. data/lib/faker/default/lorem_pixel.rb +0 -47
  378. data/lib/locales/en/hobbit.yml +0 -19
  379. data/lib/locales/en/lord_of_the_rings.yml +0 -6
  380. data/lib/locales/ja.yml +0 -101
@@ -151,6 +151,19 @@ module Faker
151
151
  fetch('company.profession')
152
152
  end
153
153
 
154
+ ##
155
+ # Produces a company department.
156
+ #
157
+ # @return [String]
158
+ #
159
+ # @example
160
+ # Faker::Company.department #=> "Information Technology"
161
+ #
162
+ # @faker.version next
163
+ def department
164
+ fetch('company.department')
165
+ end
166
+
154
167
  ##
155
168
  # Produces a company spanish organisation number.
156
169
  #
@@ -162,12 +175,17 @@ module Faker
162
175
  # @faker.version 1.8.5
163
176
  #
164
177
  # Get a random Spanish organization number. See more here https://es.wikipedia.org/wiki/N%C3%BAmero_de_identificaci%C3%B3n_fiscal
165
- def spanish_organisation_number
178
+ def spanish_organisation_number(organization_type: nil)
166
179
  # Valid leading character: A, B, C, D, E, F, G, H, J, N, P, Q, R, S, U, V, W
167
- # 7 digit numbers
180
+ # format: 1 digit letter (organization type) + 7 digit numbers + 1 digit control (letter or number based on
181
+ # organization type)
168
182
  letters = %w[A B C D E F G H J N P Q R S U V W]
169
- base = [sample(letters), format('%07d', rand(10**7))].join
170
- base
183
+
184
+ organization_type = sample(letters) unless letters.include?(organization_type)
185
+ code = format('%07d', rand(10**7))
186
+ control = spanish_cif_control_digit(organization_type, code)
187
+
188
+ [organization_type, code, control].join
171
189
  end
172
190
 
173
191
  ##
@@ -291,7 +309,7 @@ module Faker
291
309
  result = Array.new(3) { rand(1..9) } + Array.new(7) { rand(10) }
292
310
  break if (weight_sum(result, weights) % 11) == result[9]
293
311
  end
294
- result.join('')
312
+ result.join
295
313
  end
296
314
 
297
315
  ##
@@ -304,11 +322,7 @@ module Faker
304
322
  #
305
323
  # @faker.version 1.9.1
306
324
  # Get a random Polish register of national economy number. More info https://pl.wikipedia.org/wiki/REGON
307
- def polish_register_of_national_economy(legacy_length = NOT_GIVEN, length: 9)
308
- warn_for_deprecated_arguments do |keywords|
309
- keywords << :length if legacy_length != NOT_GIVEN
310
- end
311
-
325
+ def polish_register_of_national_economy(length: 9)
312
326
  raise ArgumentError, 'Length should be 9 or 14' unless [9, 14].include? length
313
327
 
314
328
  random_digits = []
@@ -316,7 +330,7 @@ module Faker
316
330
  random_digits = Array.new(length) { rand(10) }
317
331
  break if collect_regon_sum(random_digits) == random_digits.last
318
332
  end
319
- random_digits.join('')
333
+ random_digits.join
320
334
  end
321
335
 
322
336
  ##
@@ -329,7 +343,7 @@ module Faker
329
343
  #
330
344
  # @faker.version 1.9.2
331
345
  def south_african_pty_ltd_registration_number
332
- regexify(/\d{4}\/\d{4,10}\/07/)
346
+ regexify(%r{\d{4}/\d{4,10}/07})
333
347
  end
334
348
 
335
349
  ##
@@ -342,7 +356,7 @@ module Faker
342
356
  #
343
357
  # @faker.version 1.9.2
344
358
  def south_african_close_corporation_registration_number
345
- regexify(/(CK\d{2}|\d{4})\/\d{4,10}\/23/)
359
+ regexify(%r{(CK\d{2}|\d{4})/\d{4,10}/23})
346
360
  end
347
361
 
348
362
  ##
@@ -355,7 +369,7 @@ module Faker
355
369
  #
356
370
  # @faker.version 1.9.2
357
371
  def south_african_listed_company_registration_number
358
- regexify(/\d{4}\/\d{4,10}\/06/)
372
+ regexify(%r{\d{4}/\d{4,10}/06})
359
373
  end
360
374
 
361
375
  ##
@@ -368,7 +382,7 @@ module Faker
368
382
  #
369
383
  # @faker.version 1.9.2
370
384
  def south_african_trust_registration_number
371
- regexify(/IT\d{2,4}\/\d{2,10}/)
385
+ regexify(%r{IT\d{2,4}/\d{2,10}})
372
386
  end
373
387
 
374
388
  ##
@@ -380,11 +394,7 @@ module Faker
380
394
  # Faker::Company.brazilian_company_number #=> "37205322000500"
381
395
  #
382
396
  # @faker.version 1.9.2
383
- def brazilian_company_number(legacy_formatted = NOT_GIVEN, formatted: false)
384
- warn_for_deprecated_arguments do |keywords|
385
- keywords << :formatted if legacy_formatted != NOT_GIVEN
386
- end
387
-
397
+ def brazilian_company_number(formatted: false)
388
398
  digits = Array.new(8) { Faker::Number.digit.to_i } + [0, 0, 0, Faker::Number.non_zero_digit.to_i]
389
399
 
390
400
  factors = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 6].cycle
@@ -399,6 +409,22 @@ module Faker
399
409
  formatted ? format('%s.%s.%s/%s-%s', *number.scan(/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/).flatten) : number
400
410
  end
401
411
 
412
+ ##
413
+ # Get a random Russian tax number.
414
+ # @param region [String] Any region string
415
+ # @param type [Symbol] Legeal or not, defaults to :legal
416
+ #
417
+ # @return [String]
418
+ # @example
419
+ # Faker::Company.russian_tax_number #=> "0415584064"
420
+ # Faker::Company.russian_tax_number(region: 'AZ') #=> "AZ50124562"
421
+ # Faker::Company.russian_tax_number(region: 'AZ', type: false) #=> "AZ8802315465"
422
+ #
423
+ # @faker.version 1.9.4
424
+ def russian_tax_number(region: nil, type: :legal)
425
+ inn_number(region, type)
426
+ end
427
+
402
428
  ##
403
429
  # Produces a company sic code.
404
430
  #
@@ -438,7 +464,7 @@ module Faker
438
464
  def luhn_algorithm(number)
439
465
  multiplications = []
440
466
 
441
- number.to_s.reverse.split(//).each_with_index do |digit, i|
467
+ number.to_s.reverse.chars.each_with_index do |digit, i|
442
468
  multiplications << if i.even?
443
469
  digit.to_i * 2
444
470
  else
@@ -454,13 +480,11 @@ module Faker
454
480
  end
455
481
  end
456
482
 
457
- control_digit = if (sum % 10).zero?
458
- 0
459
- else
460
- (sum / 10 + 1) * 10 - sum
461
- end
462
-
463
- control_digit
483
+ if (sum % 10).zero?
484
+ 0
485
+ else
486
+ (sum / 10 + 1) * 10 - sum
487
+ end
464
488
  end
465
489
 
466
490
  def abn_checksum(abn)
@@ -491,6 +515,70 @@ module Faker
491
515
  end
492
516
  sum
493
517
  end
518
+
519
+ #
520
+ # For more on Russian tax number algorithm here:
521
+ # https://ru.wikipedia.org/wiki/Идентификационный_номер_налогоплательщика#Вычисление_контрольных_цифр
522
+ #
523
+ # Range of regions:
524
+ # https://ru.wikipedia.org/wiki/Коды_субъектов_Российской_Федерации
525
+ # region [String] Any region string
526
+ # @param type [Symbol] Legeal or not, defaults to :legal
527
+ #
528
+ # @return [String]
529
+ # @example
530
+ # Faker::Comnpany.russian_tax_number
531
+ # Faker::Comnpany.russian_tax_number(region: 'AZ')
532
+ # Faker::Comnpany.russian_tax_number(region: 'AZ', type: false)
533
+ def inn_number(region, type)
534
+ n10 = [2, 4, 10, 3, 5, 9, 4, 6, 8]
535
+ n11 = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
536
+ n12 = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
537
+
538
+ region = format('%.2d', rand(0o1..92)) if region.nil?
539
+ checksum = if type == :legal
540
+ number = region.to_s + rand(1_000_000..9_999_999).to_s
541
+ inn_checksum(n10, number)
542
+ else
543
+ number = region.to_s + rand(10_000_000..99_999_999).to_s
544
+ inn_checksum(n11, number) + inn_checksum(n12, number + inn_checksum(n11, number))
545
+ end
546
+
547
+ number + checksum
548
+ end
549
+
550
+ def inn_checksum(factor, number)
551
+ (
552
+ factor.map.with_index.reduce(0) do |v, i|
553
+ v + i[0] * number[i[1]].to_i
554
+ end % 11 % 10
555
+ ).to_s
556
+ end
557
+
558
+ def spanish_cif_control_digit(organization_type, code)
559
+ letters = %w[J A B C D E F G H I]
560
+
561
+ control = code.chars.each_with_index.inject(0) do |sum, (value, index)|
562
+ if (index + 1).even?
563
+ sum + value.to_i
564
+ else
565
+ sum + spanish_b_algorithm(value.to_i)
566
+ end
567
+ end
568
+
569
+ control = control.to_s[-1].to_i
570
+ control = control.zero? ? control : 10 - control
571
+
572
+ %w[A B C D E F G H J U V].include?(organization_type) ? control : letters[control]
573
+ end
574
+
575
+ def spanish_b_algorithm(value)
576
+ result = value.to_i * 2
577
+
578
+ return result if result < 10
579
+
580
+ result.to_s[0].to_i + result.to_s[1].to_i
581
+ end
494
582
  end
495
583
  end
496
584
  end
@@ -3,62 +3,197 @@
3
3
  module Faker
4
4
  class Compass < Base
5
5
  class << self
6
+ ##
7
+ # Produces a random cardinal.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::Compass.cardinal #=> "north"
13
+ #
14
+ # @faker.version 1.8.0
6
15
  def cardinal
7
16
  fetch('compass.cardinal.word')
8
17
  end
9
18
 
19
+ ##
20
+ # Produces a random ordinal.
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::Compass.ordinal #=> "northwest"
26
+ #
27
+ # @faker.version 1.8.0
10
28
  def ordinal
11
29
  fetch('compass.ordinal.word')
12
30
  end
13
31
 
32
+ ##
33
+ # Produces a random half wind.
34
+ #
35
+ # @return [String]
36
+ #
37
+ # @example
38
+ # Faker::Compass.half_wind #=> "north-northwest"
39
+ #
40
+ # @faker.version 1.8.0
14
41
  def half_wind
15
42
  fetch('compass.half-wind.word')
16
43
  end
17
44
 
45
+ ##
46
+ # Produces a random quarter wind.
47
+ #
48
+ # @return [String]
49
+ #
50
+ # @example
51
+ # Faker::Compass.quarter_wind #=> "north by west"
52
+ #
53
+ # @faker.version 1.8.0
18
54
  def quarter_wind
19
55
  fetch('compass.quarter-wind.word')
20
56
  end
21
57
 
58
+ ##
59
+ # Produces a random direction.
60
+ #
61
+ # @return [String]
62
+ #
63
+ # @example
64
+ # Faker::Compass.direction #=> "southeast"
65
+ #
66
+ # @faker.version 1.8.0
22
67
  def direction
23
68
  parse('compass.direction')
24
69
  end
25
70
 
71
+ ##
72
+ # Produces a random abbreviation.
73
+ #
74
+ # @return [String]
75
+ #
76
+ # @example
77
+ # Faker::Compass.abbreviation #=> "NEbN"
78
+ #
79
+ # @faker.version 1.8.0
26
80
  def abbreviation
27
81
  parse('compass.abbreviation')
28
82
  end
29
83
 
84
+ ##
85
+ # Produces a random azimuth.
86
+ #
87
+ # @return [String]
88
+ #
89
+ # @example
90
+ # Faker::Compass.azimuth #=> "168.75"
91
+ #
92
+ # @faker.version 1.8.0
30
93
  def azimuth
31
94
  parse('compass.azimuth')
32
95
  end
33
96
 
97
+ ##
98
+ # Produces a random cardinal abbreviation.
99
+ #
100
+ # @return [String]
101
+ #
102
+ # @example
103
+ # Faker::Compass.cardinal_abbreviation #=> "N"
104
+ #
105
+ # @faker.version 1.8.0
34
106
  def cardinal_abbreviation
35
107
  fetch('compass.cardinal.abbreviation')
36
108
  end
37
109
 
110
+ ##
111
+ # Produces a random ordinal abbreviation.
112
+ #
113
+ # @return [String]
114
+ #
115
+ # @example
116
+ # Faker::Compass.ordinal_abbreviation #=> "SW"
117
+ #
118
+ # @faker.version 1.8.0
38
119
  def ordinal_abbreviation
39
120
  fetch('compass.ordinal.abbreviation')
40
121
  end
41
122
 
123
+ ##
124
+ # Produces a random half wind abbreviation.
125
+ #
126
+ # @return [String]
127
+ #
128
+ # @example
129
+ # Faker::Compass.half_wind_abbreviation #=> "NNE"
130
+ #
131
+ # @faker.version 1.8.0
42
132
  def half_wind_abbreviation
43
133
  fetch('compass.half-wind.abbreviation')
44
134
  end
45
135
 
136
+ ##
137
+ # Produces a random quarter wind abbreviation.
138
+ #
139
+ # @return [String]
140
+ #
141
+ # @example
142
+ # Faker::Compass.quarter_wind_abbreviation #=> "SWbS"
143
+ #
144
+ # @faker.version 1.8.0
46
145
  def quarter_wind_abbreviation
47
146
  fetch('compass.quarter-wind.abbreviation')
48
147
  end
49
148
 
149
+ ##
150
+ # Produces a random cardinal azimuth.
151
+ #
152
+ # @return [String]
153
+ #
154
+ # @example
155
+ # Faker::Compass.cardinal_azimuth #=> "90"
156
+ #
157
+ # @faker.version 1.8.0
50
158
  def cardinal_azimuth
51
159
  fetch('compass.cardinal.azimuth')
52
160
  end
53
161
 
162
+ ##
163
+ # Produces a random ordinal azimuth.
164
+ #
165
+ # @return [String]
166
+ #
167
+ # @example
168
+ # Faker::Compass.ordinal_azimuth #=> "135"
169
+ #
170
+ # @faker.version 1.8.0
54
171
  def ordinal_azimuth
55
172
  fetch('compass.ordinal.azimuth')
56
173
  end
57
174
 
175
+ ##
176
+ # Produces a random half wind azimuth.
177
+ #
178
+ # @return [String]
179
+ #
180
+ # @example
181
+ # Faker::Compass.half_wind_azimuth #=> "292.5"
182
+ #
183
+ # @faker.version 1.8.0
58
184
  def half_wind_azimuth
59
185
  fetch('compass.half-wind.azimuth')
60
186
  end
61
187
 
188
+ ##
189
+ # Produces a random quarter wind azimuth
190
+ #
191
+ # @return [String]
192
+ #
193
+ # @example
194
+ # Faker::Compass.quarter_wind_azimuth #=> "56.25"
195
+ #
196
+ # @faker.version 1.8.0
62
197
  def quarter_wind_azimuth
63
198
  fetch('compass.quarter-wind.azimuth')
64
199
  end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Computer < Base
5
+ class << self
6
+ ##
7
+ # Produces the name of a computer platform.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::Computer.platform #=> "Linux"
13
+ #
14
+ # @faker.version 2.12.0
15
+ def platform
16
+ fetch('computer.platform')
17
+ end
18
+
19
+ ##
20
+ # Produces the name of a computer type.
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::Computer.type #=> "server"
26
+ #
27
+ # @faker.version 2.12.0
28
+ def type
29
+ fetch('computer.type')
30
+ end
31
+
32
+ ##
33
+ # Produces the name of a computer os.
34
+ #
35
+ # @param platform [String] optionally specify the platform `linux`, `macos`, or `windows`.
36
+ # @return [String]
37
+ #
38
+ # @example
39
+ # Faker::Computer.os #=> "RHEL 6.10"
40
+ #
41
+ # @faker.version 2.12.0
42
+ def os(platform: self.platform)
43
+ platform = self.platform unless fetch_all('computer.platform').include?(platform)
44
+ fetch("computer.os.#{platform.downcase}")
45
+ end
46
+
47
+ ##
48
+ # Produces a string with computer platform and os
49
+ #
50
+ # @return [String]
51
+ #
52
+ # @example
53
+ # Faker::Computer.stack #=> "Linux, RHEL 6.10"
54
+ #
55
+ # @faker.version 2.12.0
56
+ def stack
57
+ platform = self.platform
58
+ os = fetch("computer.os.#{platform.downcase}")
59
+ "#{platform}, #{os}"
60
+ end
61
+ end
62
+ end
63
+ end
@@ -2,26 +2,80 @@
2
2
 
3
3
  module Faker
4
4
  class Construction < Base
5
+ ##
6
+ # Produces a random material.
7
+ #
8
+ # @return [String]
9
+ #
10
+ # @example
11
+ # Faker::Construction.material #=> "Wood"
12
+ #
13
+ # @faker.version 1.9.2
5
14
  def self.material
6
15
  fetch('construction.materials')
7
16
  end
8
17
 
18
+ ##
19
+ # Produces a random heavy equipment.
20
+ #
21
+ # @return [String]
22
+ #
23
+ # @example
24
+ # Faker::Construction.heavy_equipment #=> "Excavator"
25
+ #
26
+ # @faker.version 1.9.2
9
27
  def self.heavy_equipment
10
28
  fetch('construction.heavy_equipment')
11
29
  end
12
30
 
31
+ ##
32
+ # Produces a random trade.
33
+ #
34
+ # @return [String]
35
+ #
36
+ # @example
37
+ # Faker::Construction.trade #=> "Carpenter"
38
+ #
39
+ # @faker.version 1.9.2
13
40
  def self.trade
14
41
  fetch('construction.trades')
15
42
  end
16
43
 
44
+ ##
45
+ # Produces a random subcontract category.
46
+ #
47
+ # @return [String]
48
+ #
49
+ # @example
50
+ # Faker::Construction.subcontract_category #=> "Curb & Gutter"
51
+ #
52
+ # @faker.version 1.9.2
17
53
  def self.subcontract_category
18
54
  fetch('construction.subcontract_categories')
19
55
  end
20
56
 
57
+ ##
58
+ # Produces a random standard cost code.
59
+ #
60
+ # @return [String]
61
+ #
62
+ # @example
63
+ # Faker::Construction.standard_cost_code #=> "1-000 - Purpose"
64
+ #
65
+ # @faker.version 1.9.2
21
66
  def self.standard_cost_code
22
67
  fetch('construction.standard_cost_codes')
23
68
  end
24
69
 
70
+ ##
71
+ # Produces a random role.
72
+ #
73
+ # @return [String]
74
+ #
75
+ # @example
76
+ # Faker::Construction.role #=> "Engineer"
77
+ #
78
+ # @faker.version 1.9.2
25
79
  def self.role
26
80
  fetch('construction.roles')
27
81
  end
@@ -4,42 +4,132 @@ module Faker
4
4
  class Cosmere < Base
5
5
  flexible :cosmere
6
6
  class << self
7
+ ##
8
+ # Produces a random aon.
9
+ #
10
+ # @return [String]
11
+ #
12
+ # @example
13
+ # Faker::Cosmere.aon #=> "Rao"
14
+ #
15
+ # @faker.version 1.9.2
7
16
  def aon
8
17
  sample(aons)
9
18
  end
10
19
 
20
+ ##
21
+ # Produces a random shard world.
22
+ #
23
+ # @return [String]
24
+ #
25
+ # @example
26
+ # Faker::Cosmere.shard_world #=> "Yolen"
27
+ #
28
+ # @faker.version 1.9.2
11
29
  def shard_world
12
30
  sample(shard_worlds)
13
31
  end
14
32
 
33
+ ##
34
+ # Produces a random shard.
35
+ #
36
+ # @return [String]
37
+ #
38
+ # @example
39
+ # Faker::Cosmere.shard #=> "Ambition"
40
+ #
41
+ # @faker.version 1.9.2
15
42
  def shard
16
43
  sample(shards)
17
44
  end
18
45
 
46
+ ##
47
+ # Produces a random surge.
48
+ #
49
+ # @return [String]
50
+ #
51
+ # @example
52
+ # Faker::Cosmere.surge #=> "Progression"
53
+ #
54
+ # @faker.version 1.9.2
19
55
  def surge
20
56
  sample(surges)
21
57
  end
22
58
 
59
+ ##
60
+ # Produces a random knight radiant.
61
+ #
62
+ # @return [String]
63
+ #
64
+ # @example
65
+ # Faker::Cosmere.knight_radiant #=> "Truthwatcher"
66
+ #
67
+ # @faker.version 1.9.2
23
68
  def knight_radiant
24
69
  sample(knights_radiant)
25
70
  end
26
71
 
72
+ ##
73
+ # Produces a random metal.
74
+ #
75
+ # @return [String]
76
+ #
77
+ # @example
78
+ # Faker::Cosmere.metal #=> "Brass"
79
+ #
80
+ # @faker.version 1.9.2
27
81
  def metal
28
82
  sample(metals)
29
83
  end
30
84
 
85
+ ##
86
+ # Produces a random allomancer.
87
+ #
88
+ # @return [String]
89
+ #
90
+ # @example
91
+ # Faker::Cosmere.allomancer #=> "Coinshot"
92
+ #
93
+ # @faker.version 1.9.2
31
94
  def allomancer
32
95
  sample(allomancers)
33
96
  end
34
97
 
98
+ ##
99
+ # Produces a random feruchemist.
100
+ #
101
+ # @return [String]
102
+ #
103
+ # @example
104
+ # Faker::Cosmere.feruchemist #=> "Archivist"
105
+ #
106
+ # @faker.version 1.9.2
35
107
  def feruchemist
36
108
  sample(feruchemists)
37
109
  end
38
110
 
111
+ ##
112
+ # Produces a random herald.
113
+ #
114
+ # @return [String]
115
+ #
116
+ # @example
117
+ # Faker::Cosmere.herald #=> "Ishar"
118
+ #
119
+ # @faker.version 1.9.2
39
120
  def herald
40
121
  sample(heralds)
41
122
  end
42
123
 
124
+ ##
125
+ # Produces a random spren.
126
+ #
127
+ # @return [String]
128
+ #
129
+ # @example
130
+ # Faker::Cosmere.spren #=> "Flamespren"
131
+ #
132
+ # @faker.version 1.9.2
43
133
  def spren
44
134
  sample(sprens)
45
135
  end