ffaker 2.2.0 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
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(' ')