ffaker 2.2.0 → 2.3.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 (320) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +34 -0
  3. data/README.md +4 -0
  4. data/REFERENCE.md +1153 -800
  5. data/Rakefile +23 -24
  6. data/ffaker.gemspec +12 -420
  7. data/lib/ffaker.rb +47 -7
  8. data/lib/ffaker/address.rb +11 -11
  9. data/lib/ffaker/address_au.rb +60 -60
  10. data/lib/ffaker/address_br.rb +5 -5
  11. data/lib/ffaker/address_ca.rb +7 -7
  12. data/lib/ffaker/address_ch.rb +1 -2
  13. data/lib/ffaker/address_ch_de.rb +1 -1
  14. data/lib/ffaker/address_ch_fr.rb +1 -1
  15. data/lib/ffaker/address_ch_it.rb +1 -1
  16. data/lib/ffaker/address_da.rb +5 -5
  17. data/lib/ffaker/address_de.rb +16 -12
  18. data/lib/ffaker/address_fi.rb +7 -8
  19. data/lib/ffaker/address_fr.rb +13 -13
  20. data/lib/ffaker/address_gr.rb +40 -0
  21. data/lib/ffaker/address_in.rb +12 -12
  22. data/lib/ffaker/address_kr.rb +87 -0
  23. data/lib/ffaker/address_mx.rb +409 -409
  24. data/lib/ffaker/address_nl.rb +17 -13
  25. data/lib/ffaker/address_ru.rb +6 -6
  26. data/lib/ffaker/address_se.rb +7 -8
  27. data/lib/ffaker/address_sn.rb +3 -3
  28. data/lib/ffaker/address_ua.rb +8 -8
  29. data/lib/ffaker/address_uk.rb +5 -5
  30. data/lib/ffaker/address_us.rb +9 -9
  31. data/lib/ffaker/airline.rb +16 -0
  32. data/lib/ffaker/avatar.rb +3 -3
  33. data/lib/ffaker/aws.rb +24 -0
  34. data/lib/ffaker/bacon_ipsum.rb +2 -2
  35. data/lib/ffaker/book.rb +45 -0
  36. data/lib/ffaker/boolean.rb +2 -2
  37. data/lib/ffaker/cheesy_lingo.rb +15 -12
  38. data/lib/ffaker/color.rb +54 -1
  39. data/lib/ffaker/color_ua.rb +1 -1
  40. data/lib/ffaker/company.rb +13 -11
  41. data/lib/ffaker/company_cn.rb +23 -0
  42. data/lib/ffaker/company_it.rb +4 -4
  43. data/lib/ffaker/company_se.rb +2 -2
  44. data/lib/ffaker/conference.rb +1 -1
  45. data/lib/ffaker/courses.rb +2 -3
  46. data/lib/ffaker/currency.rb +2 -2
  47. data/lib/ffaker/data/address_gr/city +79 -0
  48. data/lib/ffaker/data/address_gr/region +13 -0
  49. data/lib/ffaker/data/address_gr/street +100 -0
  50. data/lib/ffaker/data/address_kr/boroughs +29 -0
  51. data/lib/ffaker/data/address_kr/cities +51 -0
  52. data/lib/ffaker/data/airline/codes_list +209 -0
  53. data/lib/ffaker/data/airline/names_list +206 -0
  54. data/lib/ffaker/data/aws/ec2_instance_type +59 -0
  55. data/lib/ffaker/data/aws/ec2_reserved_instance_tenancy +3 -0
  56. data/lib/ffaker/data/aws/ec2_reserved_offering_type +6 -0
  57. data/lib/ffaker/data/aws/ec2_reserved_product_description +14 -0
  58. data/lib/ffaker/data/book/adj_and_adv +20 -0
  59. data/lib/ffaker/data/book/genres +369 -0
  60. data/lib/ffaker/data/book/nouns +36 -0
  61. data/lib/ffaker/data/book/prefixes +17 -0
  62. data/lib/ffaker/data/color/names_list +128 -0
  63. data/lib/ffaker/data/education/degree_prefix +274 -0
  64. data/lib/ffaker/data/education/degree_short_prefix +19 -0
  65. data/lib/ffaker/data/job_br/job_nouns +52 -0
  66. data/lib/ffaker/data/job_vn/job_nouns +191 -0
  67. data/lib/ffaker/data/lorem_ja/characters +101 -0
  68. data/lib/ffaker/data/lorem_ja/sentences +30 -0
  69. data/lib/ffaker/data/lorem_ja/sentences_end +21 -0
  70. data/lib/ffaker/data/lorem_ja/words +81 -0
  71. data/lib/ffaker/data/name/first_names_female +4275 -0
  72. data/lib/ffaker/data/name/first_names_male +1219 -0
  73. data/lib/ffaker/data/name_br/first_names_female +1068 -0
  74. data/lib/ffaker/data/name_br/first_names_male +607 -0
  75. data/lib/ffaker/data/name_br/last_names +52 -0
  76. data/lib/ffaker/data/name_gr/female_first_names +80 -0
  77. data/lib/ffaker/data/name_gr/female_last_names +45 -0
  78. data/lib/ffaker/data/name_gr/male_first_names +90 -0
  79. data/lib/ffaker/data/name_gr/male_last_names +57 -0
  80. data/lib/ffaker/data/name_kh/first_names +64 -0
  81. data/lib/ffaker/data/name_kh/last_names +71 -0
  82. data/lib/ffaker/data/name_kh/nick_names +30 -0
  83. data/lib/ffaker/data/name_then/first_names +292 -0
  84. data/lib/ffaker/data/name_then/last_names +63 -0
  85. data/lib/ffaker/data/name_then/nick_names +30 -0
  86. data/lib/ffaker/data/phone_number/phone_calling_code +205 -0
  87. data/lib/ffaker/data/sport/names +57 -24
  88. data/lib/ffaker/data/tweet/hashtag +58 -0
  89. data/lib/ffaker/data/youtube/video_ids +50 -0
  90. data/lib/ffaker/dizzle_ipsum.rb +2 -2
  91. data/lib/ffaker/education.rb +17 -16
  92. data/lib/ffaker/food.rb +5 -6
  93. data/lib/ffaker/gender.rb +4 -4
  94. data/lib/ffaker/gender_br.rb +17 -0
  95. data/lib/ffaker/gender_cn.rb +4 -4
  96. data/lib/ffaker/gender_kr.rb +4 -4
  97. data/lib/ffaker/geolocation.rb +26 -26
  98. data/lib/ffaker/healthcare_ipsum.rb +2 -2
  99. data/lib/ffaker/hipster_ipsum.rb +2 -2
  100. data/lib/ffaker/html_ipsum.rb +101 -81
  101. data/lib/ffaker/identification.rb +4 -4
  102. data/lib/ffaker/identification_br.rb +84 -0
  103. data/lib/ffaker/identification_es.rb +2 -2
  104. data/lib/ffaker/identification_es_cl.rb +7 -5
  105. data/lib/ffaker/identification_es_co.rb +9 -10
  106. data/lib/ffaker/identification_kr.rb +3 -4
  107. data/lib/ffaker/identification_mx.rb +27 -11
  108. data/lib/ffaker/internet.rb +26 -23
  109. data/lib/ffaker/internet_se.rb +21 -21
  110. data/lib/ffaker/job.rb +1 -1
  111. data/lib/ffaker/job_br.rb +12 -0
  112. data/lib/ffaker/job_cn.rb +1 -1
  113. data/lib/ffaker/job_fr.rb +3 -3
  114. data/lib/ffaker/job_ja.rb +2 -1
  115. data/lib/ffaker/job_kr.rb +1 -1
  116. data/lib/ffaker/job_vn.rb +13 -0
  117. data/lib/ffaker/locale.rb +2 -3
  118. data/lib/ffaker/lorem.rb +5 -5
  119. data/lib/ffaker/lorem_ar.rb +4 -4
  120. data/lib/ffaker/lorem_cn.rb +3 -3
  121. data/lib/ffaker/lorem_fr.rb +4 -4
  122. data/lib/ffaker/lorem_ja.rb +40 -0
  123. data/lib/ffaker/lorem_kr.rb +4 -4
  124. data/lib/ffaker/lorem_ua.rb +8 -11
  125. data/lib/ffaker/movie.rb +18 -20
  126. data/lib/ffaker/music.rb +4 -4
  127. data/lib/ffaker/name.rb +100 -11
  128. data/lib/ffaker/name_br.rb +37 -6
  129. data/lib/ffaker/name_cn.rb +2 -2
  130. data/lib/ffaker/name_cs.rb +10 -10
  131. data/lib/ffaker/name_da.rb +6 -6
  132. data/lib/ffaker/name_de.rb +5 -5
  133. data/lib/ffaker/name_fr.rb +4 -4
  134. data/lib/ffaker/name_ga.rb +4 -5
  135. data/lib/ffaker/name_gr.rb +60 -0
  136. data/lib/ffaker/name_it.rb +4 -4
  137. data/lib/ffaker/name_ja.rb +3 -3
  138. data/lib/ffaker/name_kh.rb +22 -0
  139. data/lib/ffaker/name_kr.rb +3 -3
  140. data/lib/ffaker/name_mx.rb +14 -14
  141. data/lib/ffaker/name_nb.rb +5 -5
  142. data/lib/ffaker/name_nl.rb +7 -7
  143. data/lib/ffaker/name_ph.rb +2 -2
  144. data/lib/ffaker/name_ru.rb +7 -8
  145. data/lib/ffaker/name_se.rb +5 -5
  146. data/lib/ffaker/name_sn.rb +23 -23
  147. data/lib/ffaker/name_th.rb +3 -3
  148. data/lib/ffaker/name_th_en.rb +26 -0
  149. data/lib/ffaker/name_ua.rb +8 -8
  150. data/lib/ffaker/name_vn.rb +4 -4
  151. data/lib/ffaker/nato_alphabet.rb +10 -10
  152. data/lib/ffaker/phone_number.rb +31 -21
  153. data/lib/ffaker/phone_number_au.rb +3 -3
  154. data/lib/ffaker/phone_number_br.rb +9 -8
  155. data/lib/ffaker/phone_number_ch.rb +7 -7
  156. data/lib/ffaker/phone_number_cu.rb +5 -5
  157. data/lib/ffaker/phone_number_de.rb +1 -1
  158. data/lib/ffaker/phone_number_fr.rb +4 -4
  159. data/lib/ffaker/phone_number_it.rb +2 -2
  160. data/lib/ffaker/phone_number_kr.rb +4 -4
  161. data/lib/ffaker/phone_number_mx.rb +4 -5
  162. data/lib/ffaker/phone_number_nl.rb +13 -13
  163. data/lib/ffaker/phone_number_se.rb +18 -19
  164. data/lib/ffaker/phone_number_sg.rb +8 -8
  165. data/lib/ffaker/phone_number_sn.rb +2 -2
  166. data/lib/ffaker/product.rb +18 -14
  167. data/lib/ffaker/skill.rb +3 -3
  168. data/lib/ffaker/sport.rb +1 -1
  169. data/lib/ffaker/ssn_se.rb +19 -20
  170. data/lib/ffaker/string.rb +21 -23
  171. data/lib/ffaker/time.rb +19 -7
  172. data/lib/ffaker/tweet.rb +59 -0
  173. data/lib/ffaker/unit.rb +12 -12
  174. data/lib/ffaker/unit_english.rb +34 -35
  175. data/lib/ffaker/unit_metric.rb +25 -25
  176. data/lib/ffaker/utils/array_utils.rb +12 -9
  177. data/lib/ffaker/utils/module_utils.rb +9 -6
  178. data/lib/ffaker/utils/random_utils.rb +33 -0
  179. data/lib/ffaker/vehicle.rb +21 -21
  180. data/lib/ffaker/venue.rb +1 -1
  181. data/lib/ffaker/youtube.rb +24 -0
  182. data/scripts/benchmark.rb +3 -3
  183. data/scripts/reference.rb +26 -23
  184. data/test/helper.rb +50 -0
  185. data/test/test_address.rb +40 -21
  186. data/test/test_address_au.rb +19 -9
  187. data/test/test_address_br.rb +9 -2
  188. data/test/test_address_ca.rb +7 -0
  189. data/test/test_address_ch.rb +6 -2
  190. data/test/test_address_ch_de.rb +7 -3
  191. data/test/test_address_ch_fr.rb +7 -3
  192. data/test/test_address_ch_it.rb +5 -1
  193. data/test/test_address_da.rb +18 -9
  194. data/test/test_address_de.rb +12 -5
  195. data/test/test_address_fi.rb +10 -3
  196. data/test/test_address_fr.rb +13 -0
  197. data/test/test_address_gr.rb +43 -0
  198. data/test/test_address_in.rb +20 -12
  199. data/test/test_address_kr.rb +14 -0
  200. data/test/test_address_mx.rb +12 -5
  201. data/test/test_address_nl.rb +11 -5
  202. data/test/test_address_ru.rb +11 -5
  203. data/test/test_address_se.rb +9 -3
  204. data/test/test_address_sn.rb +7 -1
  205. data/test/test_address_ua.rb +17 -10
  206. data/test/test_address_uk.rb +11 -3
  207. data/test/test_address_us.rb +15 -6
  208. data/test/test_airline.rb +17 -0
  209. data/test/test_array_utils.rb +51 -3
  210. data/test/test_avatar.rb +5 -1
  211. data/test/test_aws.rb +25 -0
  212. data/test/test_bacon_ipsum.rb +12 -6
  213. data/test/test_book.rb +41 -0
  214. data/test/test_boolean.rb +4 -0
  215. data/test/test_cheesy_lingo.rb +14 -10
  216. data/test/test_color.rb +126 -1
  217. data/test/test_color_ua.rb +5 -1
  218. data/test/test_company.rb +7 -0
  219. data/test/test_company_cn.rb +24 -0
  220. data/test/test_company_it.rb +7 -1
  221. data/test/test_company_se.rb +6 -0
  222. data/test/test_conference.rb +5 -2
  223. data/test/test_course_mathematiques.rb +5 -1
  224. data/test/test_course_philosophie.rb +5 -1
  225. data/test/test_currency.rb +12 -0
  226. data/test/test_dizzle_ipsum.rb +12 -6
  227. data/test/test_education.rb +9 -2
  228. data/test/test_faker.rb +8 -1
  229. data/test/test_food.rb +11 -4
  230. data/test/test_gender.rb +5 -1
  231. data/test/test_gender_br.rb +18 -0
  232. data/test/test_gender_cn.rb +5 -2
  233. data/test/test_gender_kr.rb +7 -3
  234. data/test/test_geolocation.rb +11 -8
  235. data/test/test_guid.rb +6 -1
  236. data/test/test_healthcare_ipsum.rb +13 -6
  237. data/test/test_hipster_ipsum.rb +13 -6
  238. data/test/test_html_ipsum.rb +28 -20
  239. data/test/test_identification.rb +9 -2
  240. data/test/test_identification_br.rb +46 -0
  241. data/test/test_identification_co.rb +7 -0
  242. data/test/test_identification_es.rb +5 -1
  243. data/test/test_identification_es_cl.rb +5 -1
  244. data/test/test_identification_es_mx.rb +7 -2
  245. data/test/test_identification_kr.rb +4 -0
  246. data/test/test_internet.rb +36 -5
  247. data/test/test_internet_se.rb +12 -4
  248. data/test/test_job.rb +4 -0
  249. data/test/test_job_br.rb +17 -0
  250. data/test/test_job_cn.rb +4 -0
  251. data/test/test_job_fr.rb +4 -0
  252. data/test/test_job_ja.rb +4 -0
  253. data/test/test_job_kr.rb +4 -0
  254. data/test/test_job_vn.rb +22 -0
  255. data/test/test_locale.rb +10 -4
  256. data/test/test_lorem.rb +18 -11
  257. data/test/test_lorem_ar.rb +16 -8
  258. data/test/test_lorem_cn.rb +9 -2
  259. data/test/test_lorem_fr.rb +16 -8
  260. data/test/test_lorem_ja.rb +81 -0
  261. data/test/test_lorem_kr.rb +17 -8
  262. data/test/test_lorem_ua.rb +15 -8
  263. data/test/test_module_utils.rb +2 -2
  264. data/test/test_movie.rb +5 -1
  265. data/test/test_music.rb +11 -4
  266. data/test/test_name.rb +114 -1
  267. data/test/test_name_br.rb +41 -2
  268. data/test/test_name_cn.rb +7 -0
  269. data/test/test_name_cs.rb +7 -0
  270. data/test/test_name_da.rb +13 -6
  271. data/test/test_name_de.rb +4 -0
  272. data/test/test_name_fr.rb +7 -0
  273. data/test/test_name_ga.rb +7 -0
  274. data/test/test_name_gr.rb +70 -0
  275. data/test/test_name_it.rb +7 -0
  276. data/test/test_name_ja.rb +7 -0
  277. data/test/test_name_kh.rb +32 -0
  278. data/test/test_name_kr.rb +7 -0
  279. data/test/test_name_mx.rb +9 -0
  280. data/test/test_name_nb.rb +8 -0
  281. data/test/test_name_nl.rb +4 -0
  282. data/test/test_name_ph.rb +7 -0
  283. data/test/test_name_ru.rb +10 -3
  284. data/test/test_name_se.rb +12 -4
  285. data/test/test_name_sn.rb +8 -0
  286. data/test/test_name_th.rb +7 -0
  287. data/test/test_name_th_en.rb +35 -0
  288. data/test/test_name_ua.rb +26 -17
  289. data/test/test_name_vn.rb +42 -0
  290. data/test/test_nato_alphabet.rb +15 -4
  291. data/test/test_phone_number.rb +24 -6
  292. data/test/test_phone_number_au.rb +17 -6
  293. data/test/test_phone_number_br.rb +22 -13
  294. data/test/test_phone_number_cu.rb +29 -18
  295. data/test/test_phone_number_da.rb +16 -7
  296. data/test/test_phone_number_de.rb +17 -9
  297. data/test/test_phone_number_kr.rb +9 -0
  298. data/test/test_phone_number_mx.rb +16 -8
  299. data/test/test_phone_number_nl.rb +9 -2
  300. data/test/test_phone_number_se.rb +12 -7
  301. data/test/test_phone_number_sg.rb +17 -9
  302. data/test/test_phone_number_sn.rb +12 -4
  303. data/test/test_products.rb +22 -0
  304. data/test/test_skill.rb +8 -2
  305. data/test/test_sports.rb +4 -0
  306. data/test/test_ssn.rb +3 -1
  307. data/test/test_ssn_mx.rb +6 -1
  308. data/test/test_ssn_se.rb +3 -0
  309. data/test/test_string.rb +28 -1
  310. data/test/test_time.rb +33 -2
  311. data/test/test_tweet.rb +59 -0
  312. data/test/test_units.rb +7 -0
  313. data/test/test_units_english.rb +9 -0
  314. data/test/test_units_metric.rb +9 -0
  315. data/test/test_vehicle.rb +24 -15
  316. data/test/test_venue.rb +5 -1
  317. data/test/test_youtube.rb +28 -0
  318. metadata +101 -5
  319. data/lib/ffaker/data/name/first_names +0 -3008
  320. data/lib/ffaker/data/name_br/first_names +0 -91
@@ -8,13 +8,12 @@ module FFaker
8
8
  # Resident Registration Number
9
9
  # http://ko.wikipedia.org/wiki/%EC%A3%BC%EB%AF%BC%EB%93%B1%EB%A1%9D%EB%B2%88%ED%98%B8
10
10
  def rrn
11
- birth = [*Date.new(1970, 1, 1)..Date.new(1999, 12, 31)].sample.strftime("%y%d%m")
12
- sex = [1, 2].sample
13
- loc = FFaker.numerify("#{[*"00".."95"].sample}###")
11
+ birth = fetch_sample([*Date.new(1970, 1, 1)..Date.new(1999, 12, 31)]).strftime('%y%d%m')
12
+ sex = fetch_sample([1, 2])
13
+ loc = FFaker.numerify("#{fetch_sample([*'00'..'95'])}###")
14
14
  a, b, c, d, e, f, g, h, i, j, k, l = "#{birth}#{sex}#{loc}".split(//).map(&:to_i)
15
15
  checksum = (11 - (2 * a + 3 * b + 4 * c + 5 * d + 6 * e + 7 * f + 8 * g + 9 * h + 2 * i + 3 * j + 4 * k + 5 * l) % 11) % 10
16
16
  "#{birth}-#{sex}#{loc}#{checksum}"
17
17
  end
18
18
  end
19
19
  end
20
-
@@ -8,8 +8,8 @@ module FFaker
8
8
  extend ModuleUtils
9
9
  extend self
10
10
 
11
- CONSONANTS = ["B","C","D","F","G","H","J","K","L","M","N","P","Q","R","S","T","V","W","X","Y","Z"]
12
- VOWELS = ["A","E","I","O","U"]
11
+ CONSONANTS = %w(B C D F G H J K L M N P Q R S T V W X Y Z).freeze
12
+ VOWELS = %w(A E I O U).freeze
13
13
  HOMOCLAVE = CONSONANTS + VOWELS + [*'0'..'9']
14
14
 
15
15
  # http://es.wikipedia.org/wiki/Registro_Federal_de_Contribuyentes_(M%C3%A9xico)
@@ -17,32 +17,48 @@ module FFaker
17
17
  def rfc_persona_fisica
18
18
  consonants_n = CONSONANTS + ["Ñ"]
19
19
  all_letters = consonants_n + VOWELS
20
- date = ::Time.at(rand * ::Time.now.to_f).strftime("%y%m%d")
21
- "#{consonants_n.sample}#{VOWELS.sample}#{all_letters.sample(2).join}#{date}#{HOMOCLAVE.sample(3).join}"
20
+ date = ::Time.at(rand * ::Time.now.to_f).strftime('%y%m%d')
21
+ [
22
+ fetch_sample(consonants_n),
23
+ fetch_sample(VOWELS),
24
+ fetch_sample(all_letters, count: 2).join,
25
+ date,
26
+ fetch_sample(HOMOCLAVE, count: 3).join
27
+ ].join
22
28
  end
23
29
 
24
30
  # http://es.wikipedia.org/wiki/Registro_Federal_de_Contribuyentes_(M%C3%A9xico)
25
31
  # Registro Federal de Contribuyentes (R.F.C.) para persona moral
26
32
  def rfc_persona_moral
27
- consonants_n_amp = CONSONANTS + ["Ñ", "&"]
33
+ consonants_n_amp = CONSONANTS + ["Ñ", '&']
28
34
  all_letters = consonants_n_amp + VOWELS
29
- date = ::Time.at(rand * ::Time.now.to_f).strftime("%y%m%d")
30
- "#{all_letters.sample(3).join}#{date}#{HOMOCLAVE.sample(3).join}"
35
+ date = ::Time.at(rand * ::Time.now.to_f).strftime('%y%m%d')
36
+ "#{fetch_sample(all_letters, count: 3).join}#{date}#{fetch_sample(HOMOCLAVE, count: 3).join}"
31
37
  end
32
38
 
33
39
  # http://es.wikipedia.org/wiki/Registro_Federal_de_Contribuyentes_(M%C3%A9xico)
34
40
  # Registro Federal de Contribuyentes (R.F.C.)
35
41
  def rfc
36
- [rfc_persona_moral, rfc_persona_fisica].sample
42
+ fetch_sample([rfc_persona_moral, rfc_persona_fisica])
37
43
  end
38
44
 
39
45
  # http://es.wikipedia.org/wiki/Clave_%C3%9Anica_de_Registro_de_Poblaci%C3%B3n
40
46
  # Clave Única de Registro de Población
41
47
  def curp
42
48
  all_letters = CONSONANTS + VOWELS
43
- hm = ["H","M"]
44
- date = ::Time.at(rand * ::Time.now.to_f).strftime("%y%m%d")
45
- "#{CONSONANTS.sample}#{VOWELS.sample}#{all_letters.sample(2).join}#{date}#{hm.sample}#{ESTADOS_CURP.sample}#{CONSONANTS.sample(3).join}#{HOMOCLAVE.sample}#{rand(10)}"
49
+ hm = %w(H M)
50
+ date = ::Time.at(rand * ::Time.now.to_f).strftime('%y%m%d')
51
+ [
52
+ fetch_sample(CONSONANTS),
53
+ fetch_sample(VOWELS),
54
+ fetch_sample(all_letters, count: 2).join,
55
+ date,
56
+ fetch_sample(hm),
57
+ fetch_sample(ESTADOS_CURP),
58
+ fetch_sample(CONSONANTS, count: 3).join,
59
+ fetch_sample(HOMOCLAVE),
60
+ rand(10)
61
+ ].join
46
62
  end
47
63
  end
48
64
  end
@@ -5,43 +5,42 @@ module FFaker
5
5
  extend ModuleUtils
6
6
  extend self
7
7
 
8
- BYTE = [*"0".."255"]
9
- HOSTS = %w(gmail.com yahoo.com hotmail.com)
10
- DISPOSABLE_HOSTS = %w(mailinator.com suremail.info spamherelots.com binkmail.com safetymail.info)
11
- DOMAIN_SUFFIXES = %w(co.uk com us ca biz info name)
12
- SAFE_DOMAIN_SUFFIXES = %w[org com net]
13
- SLUG_DELIMITERS = %w[- _ .]
8
+ BYTE = [*'0'..'255'].freeze
9
+ HOSTS = %w(gmail.com yahoo.com hotmail.com).freeze
10
+ DISPOSABLE_HOSTS = %w(mailinator.com suremail.info spamherelots.com binkmail.com safetymail.info).freeze
11
+ DOMAIN_SUFFIXES = %w(co.uk com us ca biz info name).freeze
12
+ SAFE_DOMAIN_SUFFIXES = %w(org com net).freeze
13
+ SLUG_DELIMITERS = %w(- _ .).freeze
14
+ MAC_LIMIT = 281_474_976_710_655
14
15
 
15
16
  def email(name = nil)
16
- [user_name(name), domain_name].join("@")
17
+ [user_name(name), domain_name].join('@')
17
18
  end
18
19
 
19
20
  # returns an email address of an online disposable email service (like tempinbox.com).
20
21
  # you can really send an email to these addresses an access it by going to the service web pages.
21
22
  def disposable_email(name = nil)
22
- [user_name(name), DISPOSABLE_HOSTS.sample].join("@")
23
+ [user_name(name), fetch_sample(DISPOSABLE_HOSTS)].join('@')
23
24
  end
24
25
 
25
26
  def free_email(name = nil)
26
- "#{user_name(name)}@#{HOSTS.sample}"
27
+ "#{user_name(name)}@#{fetch_sample(HOSTS)}"
27
28
  end
28
29
 
29
30
  def safe_email(name = nil)
30
- "#{user_name(name)}@example.#{SAFE_DOMAIN_SUFFIXES.sample}"
31
+ "#{user_name(name)}@example.#{fetch_sample(SAFE_DOMAIN_SUFFIXES)}"
31
32
  end
32
33
 
33
34
  def user_name(name = nil)
34
35
  if name
35
- parts = name.scan(/\w+/).shuffle.join(%w(. _).sample)
36
+ parts = shuffle(name.scan(/\w+/)).join(fetch_sample(%w(. _)))
36
37
  parts.downcase
37
38
  else
38
39
  case rand(2)
39
40
  when 0
40
41
  sanitize(Name.first_name)
41
42
  when 1
42
- [Name.first_name, Name.last_name].
43
- map { |n| sanitize(n) }.
44
- join(%w(. _).sample)
43
+ [Name.first_name, Name.last_name].map { |n| sanitize(n) }.join(fetch_sample(%w(. _)))
45
44
  end
46
45
  end
47
46
  end
@@ -51,14 +50,14 @@ module FFaker
51
50
  end
52
51
 
53
52
  def domain_word
54
- dw = Company.name.split(" ").first
55
- dw.gsub!(/\W/, "")
53
+ dw = Company.name.split(' ').first
54
+ dw.gsub!(/\W/, '')
56
55
  dw.downcase!
57
56
  dw
58
57
  end
59
58
 
60
59
  def domain_suffix
61
- DOMAIN_SUFFIXES.sample
60
+ fetch_sample(DOMAIN_SUFFIXES)
62
61
  end
63
62
 
64
63
  def uri(protocol)
@@ -66,29 +65,33 @@ module FFaker
66
65
  end
67
66
 
68
67
  def http_url
69
- uri("http")
68
+ uri('http')
70
69
  end
71
70
 
72
71
  def ip_v4_address
73
- (1..4).map { BYTE.sample }.join(".")
72
+ (1..4).map { fetch_sample(BYTE) }.join('.')
74
73
  end
75
74
 
76
75
  def slug(words = nil, glue = nil)
77
- words ||= Lorem.words(2).join(" ")
78
- glue ||= SLUG_DELIMITERS.sample
76
+ words ||= Lorem.words(2).join(' ')
77
+ glue ||= fetch_sample(SLUG_DELIMITERS)
79
78
  words.downcase.gsub(/[^a-z0-9]+/, glue)
80
79
  end
81
80
 
82
81
  def password(min_length = 8, max_length = 16)
83
82
  length =
84
- min_length > max_length ? min_length : [*min_length..max_length].sample
83
+ min_length > max_length ? min_length : fetch_sample([*min_length..max_length])
85
84
  String.from_regexp(/[a-z]{#{length}}/)
86
85
  end
87
86
 
87
+ def mac(delimiter = ':')
88
+ rand(MAC_LIMIT).to_s(16).rjust(12, '0').scan(/.{2}/).join(delimiter)
89
+ end
90
+
88
91
  private
89
92
 
90
93
  def sanitize(string)
91
- string.gsub(/\W/, "").downcase
94
+ string.gsub(/\W/, '').downcase
92
95
  end
93
96
  end
94
97
  end
@@ -9,11 +9,11 @@ module FFaker
9
9
  extend ModuleUtils
10
10
  extend self
11
11
 
12
- BYTE = [*'0'..'255']
13
- HOSTS = %w(gmail.com yahoo.com hotmail.com spray.se passagen.se)
14
- DOMAIN_SUFFIXES = %w(se nu com)
15
- DISPOSABLE_HOSTS = %w(mailinator.com suremail.info spamherelots.com binkmail.com safetymail.info)
16
- SLUG_DELIMITERS = %w[- _ .]
12
+ BYTE = [*'0'..'255'].freeze
13
+ HOSTS = %w(gmail.com yahoo.com hotmail.com spray.se passagen.se).freeze
14
+ DOMAIN_SUFFIXES = %w(se nu com).freeze
15
+ DISPOSABLE_HOSTS = %w(mailinator.com suremail.info spamherelots.com binkmail.com safetymail.info).freeze
16
+ SLUG_DELIMITERS = %w(- _ .).freeze
17
17
 
18
18
  def email(name = nil)
19
19
  "#{user_name(name)}@#{domain_name}"
@@ -23,16 +23,16 @@ module FFaker
23
23
  # (like tempinbox.com). you can really send an email to these
24
24
  # addresses an access it by going to the service web pages.
25
25
  def disposable_email(name = nil)
26
- "#{user_name(name)}@#{DISPOSABLE_HOSTS.sample}"
26
+ "#{user_name(name)}@#{fetch_sample(DISPOSABLE_HOSTS)}"
27
27
  end
28
28
 
29
29
  def free_email(name = nil)
30
- "#{user_name(name)}@#{HOSTS.sample}"
30
+ "#{user_name(name)}@#{fetch_sample(HOSTS)}"
31
31
  end
32
32
 
33
33
  # Used to fake login names were dot is not allowed
34
34
  def login_user_name
35
- user_name.tr('.','')
35
+ user_name.tr('.', '')
36
36
  end
37
37
 
38
38
  # Mostly used for email creation
@@ -51,24 +51,24 @@ module FFaker
51
51
  end
52
52
 
53
53
  def user_name_variant_long
54
- array_parts = [ NameSE.first_name, NameSE.last_name ]
55
- array_parts.map!{ |word| word.gsub(/\W/, '') }
54
+ array_parts = [NameSE.first_name, NameSE.last_name]
55
+ array_parts.map! { |word| word.gsub(/\W/, '') }
56
56
  join_to_user_name(array_parts)
57
57
  end
58
58
 
59
59
  def user_name_variant_short
60
- array_parts = [ NameSE.first_name ]
61
- array_parts.map!{ |word| word.gsub(/\W/, '') }
60
+ array_parts = [NameSE.first_name]
61
+ array_parts.map! { |word| word.gsub(/\W/, '') }
62
62
  join_to_user_name(array_parts)
63
63
  end
64
64
 
65
65
  def user_name_from_name(name)
66
- array_parts = name.scan(/\w+/).shuffle
66
+ array_parts = shuffle(name.scan(/\w+/))
67
67
  join_to_user_name(array_parts)
68
68
  end
69
69
 
70
70
  def join_to_user_name(array_parts)
71
- join_char = %w(. _).sample
71
+ join_char = fetch_sample(%w(. _))
72
72
  array_parts.map(&:downcase).join(join_char)
73
73
  end
74
74
 
@@ -77,10 +77,10 @@ module FFaker
77
77
  end
78
78
 
79
79
  def domain_word
80
- company_name_single_word.tap { |dw|
80
+ company_name_single_word.tap do |dw|
81
81
  dw.gsub!(/\W/, '')
82
82
  dw.downcase!
83
- }
83
+ end
84
84
  end
85
85
 
86
86
  def company_name_single_word
@@ -88,7 +88,7 @@ module FFaker
88
88
  end
89
89
 
90
90
  def domain_suffix
91
- DOMAIN_SUFFIXES.sample
91
+ fetch_sample(DOMAIN_SUFFIXES)
92
92
  end
93
93
 
94
94
  def uri(protocol)
@@ -96,17 +96,17 @@ module FFaker
96
96
  end
97
97
 
98
98
  def http_url
99
- uri("http")
99
+ uri('http')
100
100
  end
101
101
 
102
102
  def ip_v4_address
103
- (1..4).map { BYTE.sample }.join(".")
103
+ (1..4).map { fetch_sample(BYTE) }.join('.')
104
104
  end
105
105
 
106
106
  def slug(words = nil, glue = nil)
107
- glue ||= SLUG_DELIMITERS.sample
107
+ glue ||= fetch_sample(SLUG_DELIMITERS)
108
108
 
109
- (words || FFaker::Lorem::words(2).join(' ')).gsub(' ', glue).downcase
109
+ (words || FFaker::Lorem.words(2).join(' ')).gsub(' ', glue).downcase
110
110
  end
111
111
  end
112
112
  end
@@ -6,7 +6,7 @@ module FFaker
6
6
  extend self
7
7
 
8
8
  def title
9
- "#{JOB_PREFIX.sample} #{JOB_ADJ.sample} #{JOB_NOUN.sample}"
9
+ "#{fetch_sample(JOB_PREFIX)} #{fetch_sample(JOB_ADJ)} #{fetch_sample(JOB_NOUN)}"
10
10
  end
11
11
  end
12
12
  end
@@ -0,0 +1,12 @@
1
+ # encoding: utf-8
2
+
3
+ module FFaker
4
+ module JobBR
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ def title
9
+ fetch_sample(JOB_NOUNS)
10
+ end
11
+ end
12
+ end
@@ -6,7 +6,7 @@ module FFaker
6
6
  extend self
7
7
 
8
8
  def title
9
- JOB_NOUNS.sample
9
+ fetch_sample(JOB_NOUNS)
10
10
  end
11
11
  end
12
12
  end
@@ -5,13 +5,13 @@ module FFaker
5
5
  extend ModuleUtils
6
6
  extend self
7
7
 
8
- JOB_ADJECTIVES = %w(general adjoint associé)
8
+ JOB_ADJECTIVES = %w(general adjoint associé).freeze
9
9
 
10
10
  def title
11
11
  if rand(2).zero?
12
- "#{JOB_PREFIXES.sample} #{JOB_ADJECTIVES.sample} #{JOB_NOUNS.sample}"
12
+ "#{fetch_sample(JOB_PREFIXES)} #{fetch_sample(JOB_ADJECTIVES)} #{fetch_sample(JOB_NOUNS)}"
13
13
  else
14
- "#{JOB_PREFIXES.sample} #{JOB_NOUNS.sample}"
14
+ "#{fetch_sample(JOB_PREFIXES)} #{fetch_sample(JOB_NOUNS)}"
15
15
  end
16
16
  end
17
17
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
2
3
 
3
4
  module FFaker
@@ -6,7 +7,7 @@ module FFaker
6
7
  extend self
7
8
 
8
9
  def title
9
- JOB_NOUNS.sample
10
+ fetch_sample(JOB_NOUNS)
10
11
  end
11
12
  end
12
13
  end
@@ -6,7 +6,7 @@ module FFaker
6
6
  extend self
7
7
 
8
8
  def title
9
- JOB_NOUNS.sample
9
+ fetch_sample(JOB_NOUNS)
10
10
  end
11
11
  end
12
12
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ module FFaker
5
+ module JobVN
6
+ extend ModuleUtils
7
+ extend self
8
+
9
+ def title
10
+ fetch_sample(JOB_NOUNS)
11
+ end
12
+ end
13
+ end
@@ -10,7 +10,7 @@ module FFaker
10
10
  if given_language && code_index
11
11
  LANGUAGE_CODE[code_index]
12
12
  else
13
- LANGUAGE_CODE.sample
13
+ fetch_sample(LANGUAGE_CODE)
14
14
  end
15
15
  end
16
16
 
@@ -19,9 +19,8 @@ module FFaker
19
19
  if given_code && language_index
20
20
  LANGUAGE[language_index]
21
21
  else
22
- LANGUAGE.sample
22
+ fetch_sample(LANGUAGE)
23
23
  end
24
24
  end
25
-
26
25
  end
27
26
  end
@@ -7,15 +7,15 @@ module FFaker
7
7
  extend self
8
8
 
9
9
  def characters(character_count = 255)
10
- Array.new(character_count < 0 ? 0 : character_count).map { CHARACTERS.sample }.join
10
+ Array.new(character_count < 0 ? 0 : character_count).map { fetch_sample(CHARACTERS) }.join
11
11
  end
12
12
 
13
13
  def word
14
- WORDS.sample
14
+ fetch_sample(WORDS)
15
15
  end
16
16
 
17
17
  def words(num = 3)
18
- WORDS.sample(num)
18
+ fetch_sample(WORDS, count: num)
19
19
  end
20
20
 
21
21
  def sentence(word_count = 4)
@@ -27,13 +27,13 @@ module FFaker
27
27
  end
28
28
  end
29
29
 
30
- alias_method :phrase, :sentence
30
+ alias phrase sentence
31
31
 
32
32
  def sentences(sentence_count = 3)
33
33
  (1..sentence_count).map { sentence }
34
34
  end
35
35
 
36
- alias_method :phrases, :sentences
36
+ alias phrases sentences
37
37
 
38
38
  def paragraph(sentence_count = 3)
39
39
  sentences(sentence_count + rand(3)).join(' ')