ffaker 2.10.0 → 2.23.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 (644) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +217 -15
  3. data/Gemfile +17 -0
  4. data/README.md +43 -10
  5. data/REFERENCE.md +1681 -1241
  6. data/Rakefile +20 -55
  7. data/bin/console +9 -0
  8. data/ffaker.gemspec +17 -23
  9. data/lib/ffaker/address.rb +7 -7
  10. data/lib/ffaker/address_au.rb +8 -10
  11. data/lib/ffaker/address_br.rb +16 -4
  12. data/lib/ffaker/address_ca.rb +3 -3
  13. data/lib/ffaker/address_ch.rb +1 -3
  14. data/lib/ffaker/address_ch_de.rb +1 -3
  15. data/lib/ffaker/address_ch_fr.rb +1 -3
  16. data/lib/ffaker/address_ch_it.rb +1 -3
  17. data/lib/ffaker/address_da.rb +1 -3
  18. data/lib/ffaker/address_de.rb +1 -3
  19. data/lib/ffaker/address_fi.rb +1 -3
  20. data/lib/ffaker/address_fr.rb +9 -9
  21. data/lib/ffaker/address_gr.rb +1 -3
  22. data/lib/ffaker/address_id.rb +0 -3
  23. data/lib/ffaker/address_in.rb +5 -3
  24. data/lib/ffaker/address_it.rb +33 -0
  25. data/lib/ffaker/address_ja.rb +0 -3
  26. data/lib/ffaker/address_kr.rb +0 -1
  27. data/lib/ffaker/address_mx.rb +3 -471
  28. data/lib/ffaker/address_nl.rb +2 -6
  29. data/lib/ffaker/address_pl.rb +0 -2
  30. data/lib/ffaker/address_ru.rb +1 -3
  31. data/lib/ffaker/address_se.rb +1 -3
  32. data/lib/ffaker/address_sn.rb +1 -4
  33. data/lib/ffaker/address_ua.rb +3 -5
  34. data/lib/ffaker/address_uk.rb +1 -3
  35. data/lib/ffaker/address_us.rb +23 -5
  36. data/lib/ffaker/airline.rb +1 -1
  37. data/lib/ffaker/animal.rb +14 -0
  38. data/lib/ffaker/{animals.rb → animal_br.rb} +2 -2
  39. data/lib/ffaker/animal_cn.rb +12 -0
  40. data/lib/ffaker/animal_es.rb +12 -0
  41. data/lib/ffaker/animal_pl.rb +15 -0
  42. data/lib/ffaker/animal_us.rb +12 -0
  43. data/lib/ffaker/avatar.rb +32 -6
  44. data/lib/ffaker/aws.rb +1 -1
  45. data/lib/ffaker/bacon_ipsum.rb +1 -3
  46. data/lib/ffaker/bank.rb +118 -0
  47. data/lib/ffaker/bank_us.rb +33 -0
  48. data/lib/ffaker/book.rb +16 -8
  49. data/lib/ffaker/boolean.rb +1 -1
  50. data/lib/ffaker/cheesy_lingo.rb +5 -8
  51. data/lib/ffaker/code.rb +17 -1
  52. data/lib/ffaker/color.rb +7 -7
  53. data/lib/ffaker/color_pl.rb +14 -0
  54. data/lib/ffaker/color_ua.rb +1 -1
  55. data/lib/ffaker/company.rb +6 -9
  56. data/lib/ffaker/company_cn.rb +1 -1
  57. data/lib/ffaker/company_fr.rb +35 -0
  58. data/lib/ffaker/company_it.rb +4 -2
  59. data/lib/ffaker/company_ja.rb +24 -0
  60. data/lib/ffaker/company_se.rb +1 -1
  61. data/lib/ffaker/conference.rb +1 -1
  62. data/lib/ffaker/{courses.rb → courses_fr.rb} +3 -1
  63. data/lib/ffaker/crypto.rb +14 -0
  64. data/lib/ffaker/currency.rb +1 -1
  65. data/lib/ffaker/data/address/city_suffixes +1 -1
  66. data/lib/ffaker/data/address/country +1 -1
  67. data/lib/ffaker/data/address/country_code +1 -1
  68. data/lib/ffaker/data/address/neighborhood +1 -1
  69. data/lib/ffaker/data/address/street_suffix +1 -1
  70. data/lib/ffaker/data/address_br/city +0 -1
  71. data/lib/ffaker/data/address_br/complement +3 -0
  72. data/lib/ffaker/data/address_br/neighborhood_prefixes +3 -0
  73. data/lib/ffaker/data/address_br/state +1 -1
  74. data/lib/ffaker/data/address_ca/city +99 -99
  75. data/lib/ffaker/data/address_ca/province +1 -1
  76. data/lib/ffaker/data/address_de/city +1 -1
  77. data/lib/ffaker/data/address_de/state +2 -1
  78. data/lib/ffaker/data/address_fr/city +1 -1
  79. data/lib/ffaker/data/address_fr/region +27 -0
  80. data/lib/ffaker/data/address_gr/city +1 -1
  81. data/lib/ffaker/data/address_gr/region +1 -1
  82. data/lib/ffaker/data/address_gr/street +1 -1
  83. data/lib/ffaker/data/address_in/city +24 -0
  84. data/lib/ffaker/data/address_it/city +111 -0
  85. data/lib/ffaker/data/address_it/region +20 -0
  86. data/lib/ffaker/data/address_ja/city +0 -23
  87. data/lib/ffaker/data/address_mx/ags +11 -0
  88. data/lib/ffaker/data/address_mx/bc +5 -0
  89. data/lib/ffaker/data/address_mx/bcs +5 -0
  90. data/lib/ffaker/data/address_mx/camp +11 -0
  91. data/lib/ffaker/data/address_mx/chih +67 -0
  92. data/lib/ffaker/data/address_mx/chis +118 -0
  93. data/lib/ffaker/data/address_mx/coah +38 -0
  94. data/lib/ffaker/data/address_mx/col +10 -0
  95. data/lib/ffaker/data/address_mx/df +16 -0
  96. data/lib/ffaker/data/address_mx/dgo +39 -0
  97. data/lib/ffaker/data/address_mx/gro +81 -0
  98. data/lib/ffaker/data/address_mx/gto +46 -0
  99. data/lib/ffaker/data/address_mx/hgo +84 -0
  100. data/lib/ffaker/data/address_mx/jal +125 -0
  101. data/lib/ffaker/data/address_mx/mex +125 -0
  102. data/lib/ffaker/data/address_mx/mich +113 -0
  103. data/lib/ffaker/data/address_mx/mor +33 -0
  104. data/lib/ffaker/data/address_mx/nay +20 -0
  105. data/lib/ffaker/data/address_mx/nl +51 -0
  106. data/lib/ffaker/data/address_mx/oax +570 -0
  107. data/lib/ffaker/data/address_mx/pue +217 -0
  108. data/lib/ffaker/data/address_mx/qr +10 -0
  109. data/lib/ffaker/data/address_mx/qro +18 -0
  110. data/lib/ffaker/data/address_mx/sin +18 -0
  111. data/lib/ffaker/data/address_mx/slp +58 -0
  112. data/lib/ffaker/data/address_mx/son +72 -0
  113. data/lib/ffaker/data/address_mx/state +1 -1
  114. data/lib/ffaker/data/address_mx/state_abbr +1 -1
  115. data/lib/ffaker/data/address_mx/tab +17 -0
  116. data/lib/ffaker/data/address_mx/tamps +43 -0
  117. data/lib/ffaker/data/address_mx/tlax +60 -0
  118. data/lib/ffaker/data/address_mx/ver +212 -0
  119. data/lib/ffaker/data/address_mx/yuc +106 -0
  120. data/lib/ffaker/data/address_mx/zac +58 -0
  121. data/lib/ffaker/data/address_ru/city +1 -1
  122. data/lib/ffaker/data/address_se/city +1 -1
  123. data/lib/ffaker/data/address_se/countries +1 -1
  124. data/lib/ffaker/data/address_se/street +1 -1
  125. data/lib/ffaker/data/address_sn/arrondissements +1 -1
  126. data/lib/ffaker/data/address_sn/departements +1 -1
  127. data/lib/ffaker/data/address_sn/regions +1 -1
  128. data/lib/ffaker/data/address_uk/county +1 -1
  129. data/lib/ffaker/data/address_us/state +1 -1
  130. data/lib/ffaker/data/address_us/state_abbr +1 -2
  131. data/lib/ffaker/data/address_us/state_and_territories_abbr +1 -1
  132. data/lib/ffaker/data/animal_br/common_names +423 -0
  133. data/lib/ffaker/data/animal_cn/common_names +141 -0
  134. data/lib/ffaker/data/animal_es/common_names +135 -0
  135. data/lib/ffaker/data/animal_pl/common_names +256 -0
  136. data/lib/ffaker/data/animal_us/common_names +141 -0
  137. data/lib/ffaker/data/aws/ec2_reserved_instance_tenancy +1 -1
  138. data/lib/ffaker/data/aws/ec2_reserved_offering_type +1 -1
  139. data/lib/ffaker/data/aws/ec2_reserved_product_description +1 -1
  140. data/lib/ffaker/data/bank/card_types +12 -0
  141. data/lib/ffaker/data/book/nouns +2 -2
  142. data/lib/ffaker/data/cheesy_lingo/cheesy_phrases +1 -1
  143. data/lib/ffaker/data/cheesy_lingo/cheesy_words +1 -1
  144. data/lib/ffaker/data/color/names_list +1 -1
  145. data/lib/ffaker/data/color_pl/names_list +122 -0
  146. data/lib/ffaker/data/company/bs_mid +1 -1
  147. data/lib/ffaker/data/company/bs_pos +1 -1
  148. data/lib/ffaker/data/company/bs_pre +1 -1
  149. data/lib/ffaker/data/company/catch_mid +1 -1
  150. data/lib/ffaker/data/company/catch_pos +1 -1
  151. data/lib/ffaker/data/company/catch_pre +1 -1
  152. data/lib/ffaker/data/company/position_areas +1 -1
  153. data/lib/ffaker/data/conference/conference_list +1 -1
  154. data/lib/ffaker/data/currency/currency_code +1 -1
  155. data/lib/ffaker/data/currency/currency_name +1 -1
  156. data/lib/ffaker/data/currency/currency_symbol +0 -1
  157. data/lib/ffaker/data/dizzle_ipsum/dizzle_words +1 -1
  158. data/lib/ffaker/data/education/major_noun +1 -1
  159. data/lib/ffaker/data/education/school_suffix +1 -1
  160. data/lib/ffaker/data/education_cn/city +351 -0
  161. data/lib/ffaker/data/education_cn/major +506 -0
  162. data/lib/ffaker/data/education_cn/province +31 -0
  163. data/lib/ffaker/data/education_cn/school_type +27 -0
  164. data/lib/ffaker/data/filesystem/extension +31 -31
  165. data/lib/ffaker/data/food/fruit +1 -1
  166. data/lib/ffaker/data/food/herb_spice +1 -1
  167. data/lib/ffaker/data/food/meat +1 -1
  168. data/lib/ffaker/data/food/vegetable +1 -1
  169. data/lib/ffaker/data/food_pl/diary +14 -0
  170. data/lib/ffaker/data/food_pl/fermented +13 -0
  171. data/lib/ffaker/data/food_pl/fruits +34 -0
  172. data/lib/ffaker/data/food_pl/herbs +20 -0
  173. data/lib/ffaker/data/food_pl/meats +9 -0
  174. data/lib/ffaker/data/food_pl/preserves +10 -0
  175. data/lib/ffaker/data/food_pl/spices +26 -0
  176. data/lib/ffaker/data/food_pl/vegetables +45 -0
  177. data/lib/ffaker/data/freedom_ipsum/freedom_words +161 -0
  178. data/lib/ffaker/data/game/adj_and_adv +18 -0
  179. data/lib/ffaker/data/game/category +84 -0
  180. data/lib/ffaker/data/game/mechanic +182 -0
  181. data/lib/ffaker/data/game/nouns +37 -0
  182. data/lib/ffaker/data/game/prefixes +17 -0
  183. data/lib/ffaker/data/healthcare_ru/doctor_specialization +127 -0
  184. data/lib/ffaker/data/hipster_ipsum/hipster_words +1 -1
  185. data/lib/ffaker/data/identification_mx/estados_curp +1 -1
  186. data/lib/ffaker/data/jo_jo/first_names +356 -0
  187. data/lib/ffaker/data/jo_jo/full_names +225 -0
  188. data/lib/ffaker/data/jo_jo/last_names +153 -0
  189. data/lib/ffaker/data/jo_jo/stands +149 -0
  190. data/lib/ffaker/data/job/job_adj +1 -1
  191. data/lib/ffaker/data/job/job_noun +1 -1
  192. data/lib/ffaker/data/job/job_prefix +1 -1
  193. data/lib/ffaker/data/job_fr/job_prefixes +1 -1
  194. data/lib/ffaker/data/job_it/job_adj +37 -0
  195. data/lib/ffaker/data/job_it/job_noun +25 -0
  196. data/lib/ffaker/data/job_it/job_prefix +22 -0
  197. data/lib/ffaker/data/locale/language +1 -1
  198. data/lib/ffaker/data/locale/language_code +1 -1
  199. data/lib/ffaker/data/lorem/characters +1 -1
  200. data/lib/ffaker/data/lorem/words +1 -68
  201. data/lib/ffaker/data/lorem_ar/words +1 -1
  202. data/lib/ffaker/data/lorem_br/characters +36 -0
  203. data/lib/ffaker/data/lorem_br/words +183 -0
  204. data/lib/ffaker/data/lorem_cn/words +1 -1
  205. data/lib/ffaker/data/lorem_fr/words +1 -1
  206. data/lib/ffaker/data/lorem_it/words +321 -0
  207. data/lib/ffaker/data/movie/adj_and_adv +1 -1
  208. data/lib/ffaker/data/movie/nouns +3 -3
  209. data/lib/ffaker/data/movie/prefixes +1 -1
  210. data/lib/ffaker/data/name/first_names_female +0 -230
  211. data/lib/ffaker/data/name/first_names_male +0 -37
  212. data/lib/ffaker/data/name/last_names +1 -2
  213. data/lib/ffaker/data/name/pronouns +6 -0
  214. data/lib/ffaker/data/name_ar/first_names_female +1 -1
  215. data/lib/ffaker/data/name_ar/first_names_male +1 -1
  216. data/lib/ffaker/data/name_ar/last_names +1 -1
  217. data/lib/ffaker/data/name_cn/first_names +1 -1
  218. data/lib/ffaker/data/name_cn/last_names +1 -1
  219. data/lib/ffaker/data/name_cs/female_first_names +40 -0
  220. data/lib/ffaker/data/name_cs/female_last_names +50 -0
  221. data/lib/ffaker/data/name_cs/male_first_names +88 -0
  222. data/lib/ffaker/data/name_cs/male_last_names +49 -0
  223. data/lib/ffaker/data/name_cs/prefixes +4 -4
  224. data/lib/ffaker/data/name_de/first_names +1 -1
  225. data/lib/ffaker/data/name_de/last_names +1 -1
  226. data/lib/ffaker/data/name_fr/first_names +1 -1
  227. data/lib/ffaker/data/name_fr/last_names +1 -1
  228. data/lib/ffaker/data/name_ga/first_names_female +1 -1
  229. data/lib/ffaker/data/name_ga/first_names_male +287 -287
  230. data/lib/ffaker/data/name_gr/female_first_names +1 -1
  231. data/lib/ffaker/data/name_gr/female_last_names +1 -1
  232. data/lib/ffaker/data/name_gr/male_first_names +1 -1
  233. data/lib/ffaker/data/name_gr/male_last_names +1 -1
  234. data/lib/ffaker/data/name_in/first_names_female +100 -0
  235. data/lib/ffaker/data/name_in/first_names_male +100 -0
  236. data/lib/ffaker/data/name_in/last_names +100 -0
  237. data/lib/ffaker/data/name_it/first_names +1 -1
  238. data/lib/ffaker/data/name_it/last_names +1 -1
  239. data/lib/ffaker/data/name_ja/first_names +1 -1
  240. data/lib/ffaker/data/name_ja/last_names +1 -1
  241. data/lib/ffaker/data/name_kh/first_names +1 -1
  242. data/lib/ffaker/data/name_kh/nick_names +1 -1
  243. data/lib/ffaker/data/name_kr/first_names +1 -1
  244. data/lib/ffaker/data/name_kr/last_names +1 -1
  245. data/lib/ffaker/data/name_mx/female_first_names +1 -1
  246. data/lib/ffaker/data/name_mx/last_names +1 -1
  247. data/lib/ffaker/data/name_mx/male_first_names +1 -1
  248. data/lib/ffaker/data/name_ph/autochthonous_surnames +1 -1
  249. data/lib/ffaker/data/name_ph/spanish_surnames +1 -1
  250. data/lib/ffaker/data/name_ru/first_names_female +91 -0
  251. data/lib/ffaker/data/name_ru/first_names_male +172 -0
  252. data/lib/ffaker/data/name_ru/last_names_female +100 -0
  253. data/lib/ffaker/data/name_ru/last_names_male +100 -0
  254. data/lib/ffaker/data/name_ru/middle_names_female +65 -0
  255. data/lib/ffaker/data/name_ru/middle_names_male +73 -0
  256. data/lib/ffaker/data/name_se/first_names_female +1 -1
  257. data/lib/ffaker/data/name_se/first_names_male +1 -1
  258. data/lib/ffaker/data/name_se/last_names +1 -1
  259. data/lib/ffaker/data/name_sn/first_names_female +1 -1
  260. data/lib/ffaker/data/name_sn/first_names_male +1 -1
  261. data/lib/ffaker/data/name_sn/last_names +1 -1
  262. data/lib/ffaker/data/name_th/first_names +1 -1
  263. data/lib/ffaker/data/name_th/last_names +1 -1
  264. data/lib/ffaker/data/name_th/nick_names +1 -1
  265. data/lib/ffaker/data/name_tw/first_names +122 -0
  266. data/lib/ffaker/data/name_tw/last_names +100 -0
  267. data/lib/ffaker/data/nato_alphabet/alphabet_codes +26 -0
  268. data/lib/ffaker/data/nato_alphabet/numeric_codes +10 -0
  269. data/lib/ffaker/data/phone_number_ja/four_disit_area_codes +41 -0
  270. data/lib/ffaker/data/phone_number_ja/one_disit_area_codes +3 -0
  271. data/lib/ffaker/data/phone_number_ja/three_disit_area_codes +296 -0
  272. data/lib/ffaker/data/phone_number_ja/two_disit_area_codes +48 -0
  273. data/lib/ffaker/data/phone_number_nl/area_codes +142 -0
  274. data/lib/ffaker/data/phone_number_ru/home_phone_prefixes +107 -0
  275. data/lib/ffaker/data/phone_number_ru/mobile_phone_prefixes +61 -0
  276. data/lib/ffaker/data/phone_number_se/phone_prefix +1 -1
  277. data/lib/ffaker/data/phone_number_ua/home_phone_prefixes +29 -0
  278. data/lib/ffaker/data/phone_number_ua/mobile_phone_prefixes +11 -0
  279. data/lib/ffaker/data/product/adj +1 -1
  280. data/lib/ffaker/data/product/b1 +1 -1
  281. data/lib/ffaker/data/product/noun +4 -1
  282. data/lib/ffaker/data/skill/specialty_end +1 -1
  283. data/lib/ffaker/data/skill/specialty_start +1 -1
  284. data/lib/ffaker/data/skill/tech_skills +1 -1
  285. data/lib/ffaker/data/sport_pl/summer +53 -0
  286. data/lib/ffaker/data/sport_pl/winter +14 -0
  287. data/lib/ffaker/data/sport_ru/summer +68 -0
  288. data/lib/ffaker/data/sport_ru/winter +20 -0
  289. data/lib/ffaker/data/sport_us/names +67 -0
  290. data/lib/ffaker/data/vehicle/color_prefixes +25 -0
  291. data/lib/ffaker/data/vehicle/displacements_list +1 -1
  292. data/lib/ffaker/data/vehicle/fuel_types_list +1 -1
  293. data/lib/ffaker/data/vehicle/makes_list +1 -1
  294. data/lib/ffaker/data/vehicle/transmissions_list +1 -1
  295. data/lib/ffaker/data/vehicle/upholstery_list +1 -1
  296. data/lib/ffaker/data/venue/venue_list +1 -1
  297. data/lib/ffaker/date.rb +40 -0
  298. data/lib/ffaker/dizzle_ipsum.rb +1 -3
  299. data/lib/ffaker/education.rb +9 -10
  300. data/lib/ffaker/education_cn.rb +37 -0
  301. data/lib/ffaker/filesystem.rb +18 -8
  302. data/lib/ffaker/food.rb +2 -0
  303. data/lib/ffaker/food_pl.rb +65 -0
  304. data/lib/ffaker/freedom_ipsum.rb +20 -0
  305. data/lib/ffaker/game.rb +33 -0
  306. data/lib/ffaker/gender.rb +1 -1
  307. data/lib/ffaker/gender_br.rb +1 -1
  308. data/lib/ffaker/gender_cn.rb +1 -1
  309. data/lib/ffaker/gender_id.rb +0 -1
  310. data/lib/ffaker/gender_it.rb +17 -0
  311. data/lib/ffaker/gender_ja.rb +18 -0
  312. data/lib/ffaker/gender_jp.rb +11 -0
  313. data/lib/ffaker/gender_kr.rb +1 -1
  314. data/lib/ffaker/gender_pl.rb +19 -0
  315. data/lib/ffaker/gender_ru.rb +22 -0
  316. data/lib/ffaker/geolocation.rb +34 -24
  317. data/lib/ffaker/guid.rb +1 -1
  318. data/lib/ffaker/healthcare_ipsum.rb +1 -3
  319. data/lib/ffaker/healthcare_ru.rb +12 -0
  320. data/lib/ffaker/hipster_ipsum.rb +1 -3
  321. data/lib/ffaker/html_ipsum.rb +10 -4
  322. data/lib/ffaker/identification.rb +5 -2
  323. data/lib/ffaker/identification_br.rb +4 -13
  324. data/lib/ffaker/identification_ec.rb +39 -0
  325. data/lib/ffaker/identification_es.rb +1 -1
  326. data/lib/ffaker/identification_es_cl.rb +7 -6
  327. data/lib/ffaker/identification_es_co.rb +3 -4
  328. data/lib/ffaker/identification_in.rb +15 -0
  329. data/lib/ffaker/identification_it.rb +30 -0
  330. data/lib/ffaker/identification_kr.rb +13 -6
  331. data/lib/ffaker/identification_mx.rb +14 -20
  332. data/lib/ffaker/identification_pl.rb +77 -0
  333. data/lib/ffaker/identification_tw.rb +24 -0
  334. data/lib/ffaker/image.rb +37 -14
  335. data/lib/ffaker/internet.rb +18 -25
  336. data/lib/ffaker/internet_se.rb +8 -10
  337. data/lib/ffaker/jo_jo.rb +24 -0
  338. data/lib/ffaker/job.rb +1 -1
  339. data/lib/ffaker/job_br.rb +1 -1
  340. data/lib/ffaker/job_cn.rb +1 -1
  341. data/lib/ffaker/job_fr.rb +1 -1
  342. data/lib/ffaker/job_it.rb +12 -0
  343. data/lib/ffaker/job_ja.rb +0 -1
  344. data/lib/ffaker/job_kr.rb +1 -1
  345. data/lib/ffaker/job_vn.rb +0 -1
  346. data/lib/ffaker/locale.rb +8 -12
  347. data/lib/ffaker/lorem.rb +6 -7
  348. data/lib/ffaker/lorem_ar.rb +1 -1
  349. data/lib/ffaker/lorem_br.rb +45 -0
  350. data/lib/ffaker/lorem_cn.rb +1 -2
  351. data/lib/ffaker/lorem_fr.rb +1 -1
  352. data/lib/ffaker/lorem_ie.rb +0 -1
  353. data/lib/ffaker/lorem_it.rb +39 -0
  354. data/lib/ffaker/lorem_ja.rb +2 -2
  355. data/lib/ffaker/lorem_kr.rb +1 -1
  356. data/lib/ffaker/lorem_pl.rb +0 -2
  357. data/lib/ffaker/lorem_ru.rb +1 -2
  358. data/lib/ffaker/lorem_ua.rb +3 -5
  359. data/lib/ffaker/movie.rb +8 -5
  360. data/lib/ffaker/music.rb +1 -1
  361. data/lib/ffaker/name.rb +5 -1
  362. data/lib/ffaker/name_ar.rb +0 -1
  363. data/lib/ffaker/name_br.rb +1 -1
  364. data/lib/ffaker/name_cn.rb +1 -1
  365. data/lib/ffaker/name_cs.rb +7 -9
  366. data/lib/ffaker/name_da.rb +2 -4
  367. data/lib/ffaker/name_de.rb +1 -3
  368. data/lib/ffaker/name_es.rb +0 -2
  369. data/lib/ffaker/name_fr.rb +5 -5
  370. data/lib/ffaker/name_ga.rb +1 -1
  371. data/lib/ffaker/name_gr.rb +2 -3
  372. data/lib/ffaker/name_id.rb +0 -1
  373. data/lib/ffaker/name_in.rb +39 -0
  374. data/lib/ffaker/name_it.rb +2 -3
  375. data/lib/ffaker/name_ja.rb +1 -1
  376. data/lib/ffaker/name_kh.rb +2 -0
  377. data/lib/ffaker/name_kr.rb +1 -1
  378. data/lib/ffaker/name_mx.rb +4 -6
  379. data/lib/ffaker/name_nb.rb +1 -3
  380. data/lib/ffaker/name_nl.rb +1 -3
  381. data/lib/ffaker/name_ph.rb +1 -3
  382. data/lib/ffaker/name_pl.rb +2 -3
  383. data/lib/ffaker/name_ru.rb +32 -71
  384. data/lib/ffaker/name_se.rb +1 -3
  385. data/lib/ffaker/name_sn.rb +3 -6
  386. data/lib/ffaker/name_th.rb +1 -1
  387. data/lib/ffaker/name_th_en.rb +2 -2
  388. data/lib/ffaker/name_tw.rb +20 -0
  389. data/lib/ffaker/name_ua.rb +1 -3
  390. data/lib/ffaker/name_vn.rb +1 -1
  391. data/lib/ffaker/nato_alphabet.rb +2 -4
  392. data/lib/ffaker/number.rb +30 -0
  393. data/lib/ffaker/phone_number.rb +1 -1
  394. data/lib/ffaker/phone_number_au.rb +11 -12
  395. data/lib/ffaker/phone_number_br.rb +16 -14
  396. data/lib/ffaker/phone_number_ch.rb +1 -1
  397. data/lib/ffaker/phone_number_cu.rb +18 -27
  398. data/lib/ffaker/phone_number_da.rb +1 -3
  399. data/lib/ffaker/phone_number_de.rb +4 -5
  400. data/lib/ffaker/phone_number_fr.rb +3 -12
  401. data/lib/ffaker/phone_number_id.rb +2 -6
  402. data/lib/ffaker/phone_number_it.rb +9 -7
  403. data/lib/ffaker/phone_number_ja.rb +88 -0
  404. data/lib/ffaker/phone_number_kr.rb +1 -1
  405. data/lib/ffaker/phone_number_mx.rb +1 -2
  406. data/lib/ffaker/phone_number_nl.rb +9 -12
  407. data/lib/ffaker/phone_number_pl.rb +68 -0
  408. data/lib/ffaker/phone_number_ru.rb +120 -0
  409. data/lib/ffaker/phone_number_se.rb +1 -1
  410. data/lib/ffaker/phone_number_sg.rb +1 -1
  411. data/lib/ffaker/phone_number_sn.rb +12 -19
  412. data/lib/ffaker/phone_number_tw.rb +49 -0
  413. data/lib/ffaker/phone_number_ua.rb +42 -0
  414. data/lib/ffaker/product.rb +10 -12
  415. data/lib/ffaker/sem_ver.rb +19 -0
  416. data/lib/ffaker/skill.rb +2 -2
  417. data/lib/ffaker/sport.rb +4 -0
  418. data/lib/ffaker/sport_pl.rb +25 -0
  419. data/lib/ffaker/sport_ru.rb +25 -0
  420. data/lib/ffaker/sport_us.rb +12 -0
  421. data/lib/ffaker/ssn.rb +5 -5
  422. data/lib/ffaker/ssn_mx.rb +1 -2
  423. data/lib/ffaker/ssn_se.rb +16 -44
  424. data/lib/ffaker/string.rb +18 -17
  425. data/lib/ffaker/time.rb +12 -11
  426. data/lib/ffaker/tweet.rb +4 -4
  427. data/lib/ffaker/unit.rb +10 -11
  428. data/lib/ffaker/unit_english.rb +19 -22
  429. data/lib/ffaker/unit_metric.rb +16 -19
  430. data/lib/ffaker/utils/array_utils.rb +8 -5
  431. data/lib/ffaker/utils/module_utils.rb +27 -6
  432. data/lib/ffaker/utils/random_utils.rb +4 -0
  433. data/lib/ffaker/utils/unique_utils.rb +32 -21
  434. data/lib/ffaker/vehicle.rb +67 -9
  435. data/lib/ffaker/venue.rb +1 -1
  436. data/lib/ffaker/version.rb +5 -0
  437. data/lib/ffaker/youtube.rb +1 -1
  438. data/lib/ffaker.rb +74 -164
  439. data/scripts/benchmark.rb +12 -11
  440. data/scripts/profiling.rb +3 -1
  441. data/scripts/reference.rb +26 -24
  442. data/test/helper.rb +41 -6
  443. data/test/test_address.rb +2 -2
  444. data/test/test_address_au.rb +7 -8
  445. data/test/test_address_br.rb +17 -4
  446. data/test/test_address_ca.rb +2 -2
  447. data/test/test_address_ch.rb +2 -2
  448. data/test/test_address_ch_de.rb +2 -2
  449. data/test/test_address_ch_fr.rb +2 -2
  450. data/test/test_address_ch_it.rb +2 -2
  451. data/test/test_address_da.rb +5 -5
  452. data/test/test_address_de.rb +2 -2
  453. data/test/test_address_fi.rb +4 -5
  454. data/test/test_address_fr.rb +3 -4
  455. data/test/test_address_gr.rb +2 -2
  456. data/test/test_address_id.rb +2 -3
  457. data/test/test_address_in.rb +2 -2
  458. data/test/test_address_it.rb +12 -0
  459. data/test/test_address_ja.rb +2 -3
  460. data/test/test_address_kr.rb +1 -2
  461. data/test/test_address_mx.rb +2 -3
  462. data/test/test_address_nl.rb +3 -3
  463. data/test/test_address_pl.rb +1 -2
  464. data/test/test_address_ru.rb +2 -2
  465. data/test/test_address_se.rb +4 -4
  466. data/test/test_address_sn.rb +2 -5
  467. data/test/test_address_ua.rb +2 -2
  468. data/test/test_address_uk.rb +2 -2
  469. data/test/test_address_us.rb +11 -2
  470. data/test/test_airline.rb +2 -2
  471. data/test/test_animal.rb +2 -2
  472. data/test/test_animal_br.rb +17 -0
  473. data/test/test_animal_cn.rb +17 -0
  474. data/test/test_animal_es.rb +17 -0
  475. data/test/test_animal_pl.rb +17 -0
  476. data/test/test_animal_us.rb +17 -0
  477. data/test/test_array_utils.rb +3 -3
  478. data/test/test_avatar.rb +35 -10
  479. data/test/test_aws.rb +3 -3
  480. data/test/test_bacon_ipsum.rb +2 -2
  481. data/test/test_bank.rb +53 -0
  482. data/test/test_bank_us.rb +35 -0
  483. data/test/test_book.rb +35 -6
  484. data/test/test_boolean.rb +3 -3
  485. data/test/test_cheesy_lingo.rb +4 -2
  486. data/test/test_code.rb +23 -3
  487. data/test/test_color.rb +2 -2
  488. data/test/test_color_pl.rb +13 -0
  489. data/test/test_color_ua.rb +2 -2
  490. data/test/test_company.rb +4 -4
  491. data/test/test_company_cn.rb +2 -2
  492. data/test/test_company_fr.rb +33 -0
  493. data/test/test_company_it.rb +2 -2
  494. data/test/test_company_ja.rb +28 -0
  495. data/test/test_company_se.rb +2 -2
  496. data/test/test_conference.rb +2 -2
  497. data/test/test_course_mathematiques.rb +3 -1
  498. data/test/test_course_philosophie.rb +3 -1
  499. data/test/test_crypto.rb +15 -0
  500. data/test/test_currency.rb +2 -2
  501. data/test/test_date.rb +47 -0
  502. data/test/test_dizzle_ipsum.rb +2 -2
  503. data/test/test_education.rb +2 -2
  504. data/test/test_education_cn.rb +29 -0
  505. data/test/{test_faker.rb → test_ffaker.rb} +7 -3
  506. data/test/test_filesystem.rb +39 -5
  507. data/test/test_food.rb +3 -3
  508. data/test/test_food_pl.rb +61 -0
  509. data/test/test_freedom_ipsum.rb +21 -0
  510. data/test/test_game.rb +28 -0
  511. data/test/test_gender.rb +3 -3
  512. data/test/test_gender_br.rb +2 -2
  513. data/test/test_gender_cn.rb +2 -2
  514. data/test/test_gender_id.rb +1 -2
  515. data/test/test_gender_it.rb +27 -0
  516. data/test/test_gender_ja.rb +27 -0
  517. data/test/test_gender_jp.rb +27 -0
  518. data/test/test_gender_kr.rb +2 -2
  519. data/test/test_gender_pl.rb +27 -0
  520. data/test/test_gender_ru.rb +23 -0
  521. data/test/test_geolocation.rb +4 -4
  522. data/test/test_guid.rb +2 -2
  523. data/test/test_healthcare_ipsum.rb +3 -1
  524. data/test/test_healthcare_ru.rb +19 -0
  525. data/test/test_hipster_ipsum.rb +2 -2
  526. data/test/test_html_ipsum.rb +20 -14
  527. data/test/test_identification.rb +14 -4
  528. data/test/test_identification_br.rb +2 -2
  529. data/test/test_identification_co.rb +5 -3
  530. data/test/test_identification_ec.rb +33 -0
  531. data/test/test_identification_es.rb +2 -2
  532. data/test/test_identification_es_cl.rb +3 -3
  533. data/test/test_identification_es_mx.rb +5 -4
  534. data/test/test_identification_in.rb +20 -0
  535. data/test/test_identification_it.rb +45 -0
  536. data/test/test_identification_kr.rb +5 -5
  537. data/test/test_identification_pl.rb +28 -0
  538. data/test/test_identification_tw.rb +17 -0
  539. data/test/test_image.rb +56 -10
  540. data/test/test_internet.rb +18 -16
  541. data/test/test_internet_se.rb +12 -9
  542. data/test/test_jo_jo.rb +29 -0
  543. data/test/test_job.rb +2 -2
  544. data/test/test_job_br.rb +2 -2
  545. data/test/test_job_cn.rb +3 -3
  546. data/test/test_job_fr.rb +2 -2
  547. data/test/test_job_it.rb +17 -0
  548. data/test/test_job_ja.rb +3 -3
  549. data/test/test_job_kr.rb +3 -3
  550. data/test/test_job_vn.rb +2 -3
  551. data/test/test_locale.rb +2 -2
  552. data/test/test_lorem.rb +6 -2
  553. data/test/test_lorem_ar.rb +3 -4
  554. data/test/test_lorem_br.rb +62 -0
  555. data/test/test_lorem_cn.rb +11 -11
  556. data/test/test_lorem_fr.rb +14 -12
  557. data/test/test_lorem_ie.rb +1 -2
  558. data/test/test_lorem_it.rb +51 -0
  559. data/test/test_lorem_ja.rb +5 -5
  560. data/test/test_lorem_kr.rb +2 -2
  561. data/test/test_lorem_pl.rb +2 -3
  562. data/test/test_lorem_ru.rb +3 -4
  563. data/test/test_lorem_ua.rb +4 -4
  564. data/test/test_module_utils.rb +35 -2
  565. data/test/test_movie.rb +2 -2
  566. data/test/test_music.rb +6 -6
  567. data/test/test_name.rb +7 -3
  568. data/test/test_name_ar.rb +1 -2
  569. data/test/test_name_br.rb +2 -2
  570. data/test/test_name_cn.rb +2 -2
  571. data/test/test_name_cs.rb +3 -4
  572. data/test/test_name_da.rb +5 -5
  573. data/test/test_name_de.rb +2 -2
  574. data/test/test_name_es.rb +1 -2
  575. data/test/test_name_fr.rb +2 -3
  576. data/test/test_name_ga.rb +2 -2
  577. data/test/test_name_gr.rb +2 -2
  578. data/test/test_name_id.rb +1 -2
  579. data/test/test_name_it.rb +2 -3
  580. data/test/test_name_ja.rb +2 -2
  581. data/test/test_name_kh.rb +10 -8
  582. data/test/test_name_kr.rb +2 -2
  583. data/test/test_name_mx.rb +2 -3
  584. data/test/test_name_nb.rb +2 -2
  585. data/test/test_name_nl.rb +2 -2
  586. data/test/test_name_ph.rb +2 -2
  587. data/test/test_name_pl.rb +1 -2
  588. data/test/test_name_ru.rb +38 -48
  589. data/test/test_name_se.rb +2 -2
  590. data/test/test_name_sn.rb +2 -3
  591. data/test/test_name_th.rb +2 -2
  592. data/test/test_name_th_en.rb +2 -2
  593. data/test/test_name_tw.rb +28 -0
  594. data/test/test_name_ua.rb +3 -3
  595. data/test/test_name_vn.rb +2 -2
  596. data/test/test_nato_alphabet.rb +2 -2
  597. data/test/test_number.rb +57 -0
  598. data/test/test_phone_number.rb +3 -3
  599. data/test/test_phone_number_au.rb +5 -6
  600. data/test/test_phone_number_br.rb +12 -5
  601. data/test/test_phone_number_cu.rb +5 -12
  602. data/test/test_phone_number_da.rb +2 -3
  603. data/test/test_phone_number_de.rb +2 -3
  604. data/test/test_phone_number_fr.rb +1 -2
  605. data/test/test_phone_number_id.rb +1 -2
  606. data/test/test_phone_number_it.rb +12 -0
  607. data/test/test_phone_number_ja.rb +63 -0
  608. data/test/test_phone_number_kr.rb +2 -2
  609. data/test/test_phone_number_mx.rb +2 -3
  610. data/test/test_phone_number_nl.rb +3 -4
  611. data/test/test_phone_number_pl.rb +56 -0
  612. data/test/test_phone_number_ru.rb +76 -0
  613. data/test/test_phone_number_se.rb +4 -4
  614. data/test/test_phone_number_sg.rb +10 -10
  615. data/test/test_phone_number_sn.rb +4 -5
  616. data/test/test_phone_number_tw.rb +42 -0
  617. data/test/test_phone_number_ua.rb +38 -0
  618. data/test/test_products.rb +2 -2
  619. data/test/test_sem_ver.rb +18 -0
  620. data/test/test_skill.rb +2 -2
  621. data/test/test_sport_pl.rb +30 -0
  622. data/test/test_sport_ru.rb +30 -0
  623. data/test/test_sport_us.rb +17 -0
  624. data/test/test_sports.rb +2 -2
  625. data/test/test_ssn.rb +2 -2
  626. data/test/test_ssn_mx.rb +2 -3
  627. data/test/test_ssn_se.rb +10 -12
  628. data/test/test_string.rb +8 -8
  629. data/test/test_time.rb +14 -8
  630. data/test/test_tweet.rb +11 -11
  631. data/test/test_unique_utils.rb +31 -7
  632. data/test/test_units.rb +9 -9
  633. data/test/test_units_english.rb +17 -18
  634. data/test/test_units_metric.rb +17 -18
  635. data/test/test_vehicle.rb +32 -5
  636. data/test/test_venue.rb +2 -2
  637. data/test/test_youtube.rb +2 -2
  638. metadata +211 -198
  639. data/lib/ffaker/data/address_jp/city +0 -127
  640. data/lib/ffaker/data/address_jp/designated_city +0 -20
  641. data/lib/ffaker/data/address_jp/street +0 -37
  642. data/lib/ffaker/data/address_jp/tokyo_ward +0 -23
  643. data/lib/ffaker/data/address_jp/village +0 -183
  644. data/lib/ffaker/data/address_jp/ward +0 -188
data/lib/ffaker/unit.rb CHANGED
@@ -1,6 +1,4 @@
1
- # encoding: utf-8
2
-
3
- require 'ostruct'
1
+ # frozen_string_literal: true
4
2
 
5
3
  module FFaker
6
4
  module Unit
@@ -10,9 +8,10 @@ module FFaker
10
8
  TIME_UNITS = [
11
9
  { name: 'Years', abbreviation: 'yr' },
12
10
  { name: 'Days', abbreviation: 'd' },
13
- { name: 'Hours', abbreviation: 'Minutes' },
11
+ { name: 'Hours', abbreviation: 'h' },
12
+ { name: 'Minutes', abbreviation: 'm' },
14
13
  { name: 'Seconds', abbreviation: 's' },
15
- { name: 'Milliseconds', abbreviation: 'msec' }
14
+ { name: 'Milliseconds', abbreviation: 'ms' }
16
15
  ].freeze
17
16
  TEMPERATURE_UNITS = [
18
17
  { name: 'Kelvin', abbreviation: 'K' },
@@ -21,29 +20,29 @@ module FFaker
21
20
  ].freeze
22
21
 
23
22
  def time_name
24
- time.name
23
+ time[:name]
25
24
  end
26
25
 
27
26
  def time_abbr
28
- time.abbreviation
27
+ time[:abbreviation]
29
28
  end
30
29
 
31
30
  def temperature_name
32
- temperature.name
31
+ temperature[:name]
33
32
  end
34
33
 
35
34
  def temperature_abbr
36
- temperature.abbreviation
35
+ temperature[:abbreviation]
37
36
  end
38
37
 
39
38
  private
40
39
 
41
40
  def time
42
- OpenStruct.new(fetch_sample(TIME_UNITS))
41
+ fetch_sample(TIME_UNITS)
43
42
  end
44
43
 
45
44
  def temperature
46
- OpenStruct.new(fetch_sample(TEMPERATURE_UNITS))
45
+ fetch_sample(TEMPERATURE_UNITS)
47
46
  end
48
47
  end
49
48
  end
@@ -1,7 +1,4 @@
1
- # encoding: utf-8
2
-
3
- require 'ffaker/unit'
4
- require 'ostruct'
1
+ # frozen_string_literal: true
5
2
 
6
3
  module FFaker
7
4
  module UnitEnglish
@@ -15,7 +12,7 @@ module FFaker
15
12
  { name: 'foot', abbreviation: 'ft' },
16
13
  { name: 'yard', abbreviation: 'yd' },
17
14
  { name: 'furlong', abbreviation: 'fur' },
18
- { name: 'mile', abbreviation: 'm' }
15
+ { name: 'mile', abbreviation: 'mi' }
19
16
  ].freeze
20
17
  MASS_UNITS = [
21
18
  { name: 'grains', abbreviation: 'gr' },
@@ -36,75 +33,75 @@ module FFaker
36
33
  { name: 'cubic yard', abbreviation: 'CY' }
37
34
  ].freeze
38
35
  AREA_UNITS = [
39
- { name: 'square inch', abbreviation: 'sq. in' },
36
+ { name: 'square inch', abbreviation: 'sq in' },
40
37
  { name: 'square foot', abbreviation: 'sq ft' },
41
38
  { name: 'square yard', abbreviation: 'sq yd' },
42
39
  { name: 'acre', abbreviation: 'ac' },
43
40
  { name: 'section', abbreviation: 's' },
44
41
  { name: 'square mile', abbreviation: 'sq mi' },
45
- { name: 'township', abbreviation: 'Twp' }
42
+ { name: 'township', abbreviation: 'twp' }
46
43
  ].freeze
47
44
 
48
45
  def mass_name
49
- mass.name
46
+ mass[:name]
50
47
  end
51
48
 
52
49
  def mass_abbr
53
- mass.abbreviation
50
+ mass[:abbreviation]
54
51
  end
55
52
 
56
53
  def length_name
57
- length.name
54
+ length[:name]
58
55
  end
59
56
 
60
57
  def length_abbr
61
- length.abbreviation
58
+ length[:abbreviation]
62
59
  end
63
60
 
64
61
  def liquid_name
65
- liquid.name
62
+ liquid[:name]
66
63
  end
67
64
 
68
65
  def liquid_abbr
69
- liquid.abbreviation
66
+ liquid[:abbreviation]
70
67
  end
71
68
 
72
69
  def volume_name
73
- volume.name
70
+ volume[:name]
74
71
  end
75
72
 
76
73
  def volume_abbr
77
- volume.abbreviation
74
+ volume[:abbreviation]
78
75
  end
79
76
 
80
77
  def area_name
81
- area.name
78
+ area[:name]
82
79
  end
83
80
 
84
81
  def area_abbr
85
- area.abbreviation
82
+ area[:abbreviation]
86
83
  end
87
84
 
88
85
  private
89
86
 
90
87
  def length
91
- OpenStruct.new(fetch_sample(LENGTH_UNITS))
88
+ fetch_sample(LENGTH_UNITS)
92
89
  end
93
90
 
94
91
  def mass
95
- OpenStruct.new(fetch_sample(MASS_UNITS))
92
+ fetch_sample(MASS_UNITS)
96
93
  end
97
94
 
98
95
  def liquid
99
- OpenStruct.new(fetch_sample(LIQUID_UNITS))
96
+ fetch_sample(LIQUID_UNITS)
100
97
  end
101
98
 
102
99
  def volume
103
- OpenStruct.new(fetch_sample(VOLUME_UNITS))
100
+ fetch_sample(VOLUME_UNITS)
104
101
  end
105
102
 
106
103
  def area
107
- OpenStruct.new(fetch_sample(AREA_UNITS))
104
+ fetch_sample(AREA_UNITS)
108
105
  end
109
106
  end
110
107
  end
@@ -1,7 +1,4 @@
1
- # encoding: utf-8
2
-
3
- require 'ffaker/unit'
4
- require 'ostruct'
1
+ # frozen_string_literal: true
5
2
 
6
3
  module FFaker
7
4
  module UnitMetric
@@ -37,65 +34,65 @@ module FFaker
37
34
  ].freeze
38
35
 
39
36
  def mass_name
40
- mass.name
37
+ mass[:name]
41
38
  end
42
39
 
43
40
  def mass_abbr
44
- mass.abbreviation
41
+ mass[:abbreviation]
45
42
  end
46
43
 
47
44
  def length_name
48
- length.name
45
+ length[:name]
49
46
  end
50
47
 
51
48
  def length_abbr
52
- length.abbreviation
49
+ length[:abbreviation]
53
50
  end
54
51
 
55
52
  def liquid_name
56
- liquid.name
53
+ liquid[:name]
57
54
  end
58
55
 
59
56
  def liquid_abbr
60
- liquid.abbreviation
57
+ liquid[:abbreviation]
61
58
  end
62
59
 
63
60
  def volume_name
64
- volume.name
61
+ volume[:name]
65
62
  end
66
63
 
67
64
  def volume_abbr
68
- volume.abbreviation
65
+ volume[:abbreviation]
69
66
  end
70
67
 
71
68
  def area_name
72
- area.name
69
+ area[:name]
73
70
  end
74
71
 
75
72
  def area_abbr
76
- area.abbreviation
73
+ area[:abbreviation]
77
74
  end
78
75
 
79
76
  private
80
77
 
81
78
  def length
82
- OpenStruct.new(fetch_sample(LENGTH_UNITS))
79
+ fetch_sample(LENGTH_UNITS)
83
80
  end
84
81
 
85
82
  def mass
86
- OpenStruct.new(fetch_sample(MASS_UNITS))
83
+ fetch_sample(MASS_UNITS)
87
84
  end
88
85
 
89
86
  def liquid
90
- OpenStruct.new(fetch_sample(LIQUID_UNITS))
87
+ fetch_sample(LIQUID_UNITS)
91
88
  end
92
89
 
93
90
  def volume
94
- OpenStruct.new(fetch_sample(VOLUME_UNITS))
91
+ fetch_sample(VOLUME_UNITS)
95
92
  end
96
93
 
97
94
  def area
98
- OpenStruct.new(fetch_sample(AREA_UNITS))
95
+ fetch_sample(AREA_UNITS)
99
96
  end
100
97
  end
101
98
  end
@@ -1,4 +1,7 @@
1
- require 'ffaker/utils/random_utils'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'random_utils'
4
+
2
5
  module FFaker
3
6
  module ArrayUtils
4
7
  extend RandomUtils
@@ -9,9 +12,9 @@ module FFaker
9
12
  freeze_all(array)
10
13
  end
11
14
 
12
- def self.random_pick(array, n)
15
+ def self.random_pick(array, num)
13
16
  warn '[ArrayUtils.random_pick] is deprecated. Please use the ModuleUtils#fetch_sample method'
14
- fetch_sample(array, count: n)
17
+ fetch_sample(array, count: num)
15
18
  end
16
19
 
17
20
  def self.rand(array)
@@ -29,9 +32,9 @@ module FFaker
29
32
  array.sort_by { FFaker::Random.rand }
30
33
  end
31
34
 
32
- def random_pick(n)
35
+ def random_pick(num)
33
36
  warn '[ArrayUtils#random_pick] is deprecated. Please use the ModuleUtils#fetch_sample method'
34
- ArrayUtils.random_pick(self, n)
37
+ ArrayUtils.random_pick(self, num)
35
38
  end
36
39
 
37
40
  def rand
@@ -1,6 +1,8 @@
1
- require 'ffaker/utils/array_utils'
2
- require 'ffaker/utils/random_utils'
3
- require 'ffaker/utils/unique_utils'
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'array_utils'
4
+ require_relative 'random_utils'
5
+ require_relative 'unique_utils'
4
6
 
5
7
  module FFaker
6
8
  module ModuleUtils
@@ -11,7 +13,7 @@ module FFaker
11
13
  end
12
14
 
13
15
  def const_missing(const_name)
14
- if const_name =~ /[a-z]/ # Not a constant, probably a class/module name.
16
+ if const_name.match?(/[a-z]/) # Not a constant, probably a class/module name.
15
17
  super const_name
16
18
  else
17
19
  mod_name = ancestors.first.to_s.split('::').last
@@ -23,7 +25,7 @@ module FFaker
23
25
  end
24
26
 
25
27
  def underscore(string)
26
- string.gsub(/::/, '/')
28
+ string.gsub('::', '/')
27
29
  .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
28
30
  .gsub(/([a-z\d])([A-Z])/, '\1_\2')
29
31
  .tr('-', '_')
@@ -31,7 +33,26 @@ module FFaker
31
33
  end
32
34
 
33
35
  def unique(max_retries = 10_000)
34
- @unique_generator ||= FFaker::UniqueUtils.new(self, max_retries)
36
+ FFaker::UniqueUtils.add_instance(self, max_retries)
37
+ end
38
+
39
+ # http://en.wikipedia.org/wiki/Luhn_algorithm
40
+ def luhn_check(number)
41
+ multiplications = []
42
+
43
+ number.chars.each_with_index do |digit, i|
44
+ multiplications << i.even? ? digit.to_i * 2 : digit.to_i
45
+ end
46
+
47
+ sum = 0
48
+ multiplications.each do |num|
49
+ num.to_s.each_byte do |character|
50
+ sum += character.chr.to_i
51
+ end
52
+ end
53
+
54
+ control_digit = (sum % 10).zero? ? 0 : (((sum / 10) + 1) * 10) - sum
55
+ control_digit.to_s
35
56
  end
36
57
  end
37
58
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module FFaker
2
4
  # Methods for returning repeatably-random data using the internal
3
5
  # Random Number Generator. You should not need to use this directly, it is
@@ -18,6 +20,8 @@ module FFaker
18
20
  def fetch_sample(list, options = {})
19
21
  if (count = options.delete(:count))
20
22
  list.sample(count, random: FFaker::Random)
23
+ elsif list.is_a?(Range)
24
+ FFaker::Random.rand(list)
21
25
  else
22
26
  list.sample(random: FFaker::Random)
23
27
  end
@@ -4,42 +4,53 @@ require 'set'
4
4
 
5
5
  module FFaker
6
6
  class UniqueUtils
7
- def initialize(generator, max_retries)
8
- @generator = generator
9
- @max_retries = max_retries
10
- @previous_results = Hash.new { |hash, key| hash[key] = Set.new }
11
- end
7
+ RetryLimitExceeded = Class.new(StandardError)
12
8
 
13
- def method_missing(name, *arguments)
14
- @generator.respond_to?(name) ? add_results_to_hash(name, *arguments) : super
15
- end
9
+ class << self
10
+ def add_instance(generator, max_retries)
11
+ instances[generator] ||= FFaker::UniqueUtils.new(generator, max_retries)
12
+ end
16
13
 
17
- def respond_to_missing?(method_name, include_private = false)
18
- super
19
- end
14
+ def instances
15
+ Thread.current[:ffaker_unique_utils] ||= {}
16
+ end
20
17
 
21
- RetryLimitExceeded = Class.new(StandardError)
18
+ def clear
19
+ instances.each_value(&:clear)
20
+ instances.clear
21
+ end
22
+ end
22
23
 
23
- def clear
24
- @previous_results.clear
24
+ def initialize(generator, max_retries)
25
+ @generator = generator
26
+ @max_retries = max_retries
25
27
  end
26
28
 
27
- def self.clear
28
- ObjectSpace.each_object(self, &:clear)
29
+ def clear
30
+ previous_results.clear
29
31
  end
30
32
 
31
33
  private
32
34
 
33
- def add_results_to_hash(name, *arguments)
35
+ def method_missing(name, *args, **kwargs)
34
36
  @max_retries.times do
35
- result = @generator.send(name, *arguments)
37
+ result = @generator.public_send(name, *args, **kwargs)
36
38
 
37
- next if @previous_results[[name, arguments]].include?(result)
39
+ next if previous_results[[name, args, kwargs]].include?(result)
38
40
 
39
- @previous_results[[name, arguments]] << result
41
+ previous_results[[name, args, kwargs]] << result
40
42
  return result
41
43
  end
42
- raise RetryLimitExceeded
44
+
45
+ raise RetryLimitExceeded, "Retry limit exceeded for #{name}"
46
+ end
47
+
48
+ def respond_to_missing?(name, *args)
49
+ @generator.respond_to?(name, *args) || super
50
+ end
51
+
52
+ def previous_results
53
+ @previous_results ||= Hash.new { |hash, key| hash[key] = Set.new }
43
54
  end
44
55
  end
45
56
  end
@@ -1,16 +1,74 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module FFaker
4
4
  module Vehicle
5
+ module VIN
6
+ extend ModuleUtils
7
+ extend self
8
+
9
+ # https://en.wikibooks.org/wiki/Vehicle_Identification_Numbers_(VIN_codes)/World_Manufacturer_Identifier_(WMI)
10
+ VALID_WMI_REGIONS = [*'A'..'C', *'J'..'N', 'P', *'R'..'Z', *'1'..'9'].freeze
11
+
12
+ VALID_YEAR_CHARS = %w[
13
+ 5 6 7 8 9 A B C D E F G H J K L M N P R S T V W X Y 1 2 3 4 5 6 7 8 9
14
+ ].freeze # 2005-2039
15
+
16
+ # https://en.wikibooks.org/wiki/Vehicle_Identification_Numbers_(VIN_codes)/Check_digit
17
+ TRANSLITERATION_VALUES = {
18
+ 'A' => 1, 'B' => 2, 'C' => 3, 'D' => 4, 'E' => 5, 'F' => 6, 'G' => 7, 'H' => 8,
19
+ 'J' => 1, 'K' => 2, 'L' => 3, 'M' => 4, 'N' => 5, 'P' => 7, 'R' => 9,
20
+ 'S' => 2, 'T' => 3, 'U' => 4, 'V' => 5, 'W' => 6, 'X' => 7, 'Y' => 8, 'Z' => 9
21
+ }.freeze
22
+ POSITION_WEIGHTS = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2].freeze
23
+
24
+ VALID_ALPHA = TRANSLITERATION_VALUES.keys
25
+ VALID_ALPHANUMERIC = [*VALID_ALPHA, *'1'..'9'].freeze
26
+
27
+ # Generate a VIN that is compliant with specifications of US Title 49 Section 565.15
28
+ # https://www.govinfo.gov/content/pkg/CFR-2019-title49-vol6/xml/CFR-2019-title49-vol6-part565.xml#seqnum565.15
29
+ #
30
+ # Position Meaning
31
+ # 1-3 Manufacturer ID aka WMI (alpha and digits)
32
+ # 4-8 Vehicle Description ("For passenger cars ..[position 7].. shall be alphabetic")
33
+ # 9 Check Digit (0-9 or "X")
34
+ # 10 Year (see VIN_VALID_YEARS)
35
+ # 11 Plant of manufacture (alpha and digits)
36
+ # 12-17 Serial number (digits only)
37
+ #
38
+ # I, O and Q are NOT allowed. VIN_VALID_ALPHA has valid alpha characters.
39
+ def vin
40
+ generated_vin = [
41
+ # Manufacturer ID / WMI
42
+ fetch_sample(VALID_WMI_REGIONS),
43
+ fetch_sample(VALID_ALPHANUMERIC, count: 2),
44
+ # Vehicle Description
45
+ fetch_sample(VALID_ALPHANUMERIC, count: 3),
46
+ fetch_sample(VALID_ALPHA),
47
+ fetch_sample(VALID_ALPHANUMERIC),
48
+ '0', # check digit placeholder
49
+ fetch_sample(VALID_YEAR_CHARS), # Year of Manufacture
50
+ fetch_sample(VALID_ALPHANUMERIC), # Plant ID
51
+ FFaker.numerify('######') # Serial Number
52
+ ].join
53
+
54
+ # Calculate the Check Digit
55
+ weighted_sum = generated_vin.chars.each_with_index.sum do |char, idx|
56
+ (TRANSLITERATION_VALUES[char] || char).to_i * POSITION_WEIGHTS[idx]
57
+ end
58
+
59
+ check_digit = weighted_sum % 11
60
+ check_digit = 'X' if check_digit == 10
61
+ generated_vin[8] = check_digit.to_s
62
+
63
+ generated_vin
64
+ end
65
+ end
66
+
5
67
  extend ModuleUtils
6
68
  extend self
7
69
 
8
70
  DRIVETRAINS = %w[4WD 4X4 AWD FWD RWD].freeze
9
- YEARS = [*'1900'..(Date.today.year + 1).to_s].freeze
10
- COLOR_PREFIXES = k(%w[
11
- beautiful bright calm dangerous dark dull fast magnetic magnificent majestic melodic metallic
12
- mundane mute mysterious new pleasant pretty resonant royal slate soft tranquil vibrant weak
13
- ])
71
+ YEARS = Array('1900'..(::Time.now.year + 1).to_s).freeze
14
72
  TRANSMISSIONS_ABBR = %w[AT MT AM CVT].freeze
15
73
  CYLINDERS = %w[2 5 6 8].freeze
16
74
 
@@ -26,9 +84,9 @@ module FFaker
26
84
  fetch_sample(MAKES_LIST)
27
85
  end
28
86
 
29
- def manufacturer_color(n = 2)
87
+ def manufacturer_color(count = 2)
30
88
  # Take two prefixes because it's more fun than one
31
- (fetch_sample(COLOR_PREFIXES, count: n) + [base_color]).join(' ')
89
+ (fetch_sample(COLOR_PREFIXES, count: count) + [base_color]).join(' ')
32
90
  end
33
91
  alias mfg_color manufacturer_color
34
92
 
@@ -41,7 +99,7 @@ module FFaker
41
99
  end
42
100
 
43
101
  def vin
44
- FFaker.bothify('1#???#####?######').upcase
102
+ VIN.vin
45
103
  end
46
104
 
47
105
  def year
data/lib/ffaker/venue.rb CHANGED
@@ -1,4 +1,4 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module FFaker
4
4
  module Venue
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FFaker
4
+ VERSION = '2.23.0'
5
+ end
@@ -1,4 +1,4 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  module FFaker
4
4
  module Youtube