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
@@ -10,11 +10,11 @@ module FFaker
10
10
  extend self
11
11
 
12
12
  def word
13
- HEALTHCARE_WORDS.sample
13
+ fetch_sample(HEALTHCARE_WORDS)
14
14
  end
15
15
 
16
16
  def words(num = 3)
17
- HEALTHCARE_WORDS.sample(num)
17
+ fetch_sample(HEALTHCARE_WORDS, count: num)
18
18
  end
19
19
  end
20
20
  end
@@ -11,11 +11,11 @@ module FFaker
11
11
  extend self
12
12
 
13
13
  def word
14
- HIPSTER_WORDS.sample
14
+ fetch_sample(HIPSTER_WORDS)
15
15
  end
16
16
 
17
17
  def words(num = 3)
18
- HIPSTER_WORDS.sample(num)
18
+ fetch_sample(HIPSTER_WORDS, count: num)
19
19
  end
20
20
  end
21
21
  end
@@ -12,149 +12,169 @@ module FFaker
12
12
  end
13
13
 
14
14
  def p(count = 3, options = {})
15
- options = {fancy: false, include_breaks: false}.merge(options)
15
+ options = { fancy: false, include_breaks: false }.merge(options)
16
16
  if options[:fancy]
17
17
  s = fancy_string(count, options[:include_breaks])
18
18
  else
19
- mode = options[:include_breaks] ? "paragraphs" : "paragraph"
19
+ mode = options[:include_breaks] ? 'paragraphs' : 'paragraph'
20
20
  s = send(mode.to_sym, count)
21
21
  end
22
- "<p>#{s}</p>"
22
+ content_tag_for(:p, s)
23
23
  end
24
24
 
25
25
  def dl(definitions = 2)
26
- s = "<dl>"
27
- definitions.times do
28
- s << "<dt>#{words(1).capitalize!}</dt><dd>#{paragraph 2}</dd>"
26
+ content_tag_for :dl do |dl|
27
+ definitions.times do
28
+ dl << content_tag_for(:dt, words(1).capitalize!)
29
+ dl << content_tag_for(:dd, paragraph(2))
30
+ end
29
31
  end
30
- s << "</dl>"
31
32
  end
32
33
 
33
34
  def ul_short(items = 3)
34
- s = "<ul>"
35
- items.times do
36
- s << "<li>#{sentence 2}</li>"
35
+ content_tag_for :ul do |ul|
36
+ items.times do
37
+ ul << content_tag_for(:li, sentence(2))
38
+ end
37
39
  end
38
- s << "</ul>"
39
40
  end
40
41
 
41
42
  def ul_long(items = 3)
42
- s = "<ul>"
43
- items.times do
44
- s << "<li>#{paragraph 2}</li>"
43
+ content_tag_for :ul do |ul|
44
+ items.times do
45
+ ul << content_tag_for(:li, paragraph(2))
46
+ end
45
47
  end
46
- s << "</ul>"
47
48
  end
48
49
 
49
50
  def ol_short(items = 3)
50
- s = "<ol>"
51
- items.times do
52
- s << "<li>#{sentence 2}</li>"
51
+ content_tag_for :ol do |ol|
52
+ items.times do
53
+ ol << content_tag_for(:li, sentence(2))
54
+ end
53
55
  end
54
- s << "</ol>"
55
56
  end
56
57
 
57
58
  def ol_long(items = 3)
58
- s = "<ol>"
59
- items.times do
60
- s << "<li>#{paragraph 2}</li>"
59
+ content_tag_for :ol do |ol|
60
+ items.times do
61
+ ol << content_tag_for(:li, paragraph(2))
62
+ end
61
63
  end
62
- s << "</ol>"
63
64
  end
64
65
 
65
66
  def ul_links(items = 3)
66
- s = "<ul>"
67
- items.times do
68
- s << "<li>#{a 1}</li>"
67
+ content_tag_for :ul do |ul|
68
+ items.times do
69
+ ul << content_tag_for(:li, a(1))
70
+ end
69
71
  end
70
- s << "</ul>"
71
72
  end
72
73
 
73
74
  def table(rows = 3)
74
- s = "<table>
75
- <thead>
76
- <tr>
77
- <th>#{word.capitalize}</th>
78
- <th>#{word.capitalize}</th>
79
- <th>#{word.capitalize}</th>
80
- <th>#{word.capitalize}</th>
81
- </tr>
82
- </thead>
83
- <tbody>"
84
- rows.times do
85
- s << "<tr>
86
- <td>#{words(1).capitalize}</td>
87
- <td>#{words(1).capitalize}</td>
88
- <td>#{words(1).capitalize}</td>
89
- <td>#{a}</td>
90
- </tr>"
75
+ content_tag_for(:table) do |table|
76
+ table << content_tag_for(:thead) do |thead|
77
+ thead << content_tag_for(:tr) do |tr|
78
+ tr << content_tag_for(:th, word.capitalize)
79
+ tr << content_tag_for(:th, word.capitalize)
80
+ tr << content_tag_for(:th, word.capitalize)
81
+ tr << content_tag_for(:th, word.capitalize)
82
+ end
83
+ end
84
+ table << content_tag_for(:tbody) do |tbody|
85
+ rows.times do
86
+ tbody << content_tag_for(:tr) do |tr|
87
+ tr << content_tag_for(:td, words(1).capitalize)
88
+ tr << content_tag_for(:td, words(1).capitalize)
89
+ tr << content_tag_for(:td, words(1).capitalize)
90
+ tr << content_tag_for(:td, a)
91
+ end
92
+ end
93
+ end
91
94
  end
92
- s << "</tbody>
93
- </table>"
94
95
  end
95
96
 
96
97
  def body
97
- s = "<h1>#{words(2).capitalize}</h1>"
98
+ body = content_tag_for(:h1, words(2).capitalize)
98
99
  rand(4).times do
99
- s << "<p>#{fancy_string}</p>"
100
+ body << content_tag_for(:p, fancy_string)
100
101
  end
101
- s << table(rand(4))
102
- s << "<h2>#{words(2).capitalize}</h2>
103
- <ol>"
104
- rand(4).times do
105
- s << "<li>#{paragraph 1}</li>"
102
+ body << table(rand(4))
103
+ body << content_tag_for(:h2, words(2).capitalize)
104
+ body << content_tag_for(:ol) do |ol|
105
+ rand(4).times do
106
+ ol << content_tag_for(:li, paragraph(1))
107
+ end
106
108
  end
107
- s << "</ol>
108
- <blockquote><p>#{paragraphs 3}</p></blockquote>
109
- <h3>#{words(2).capitalize!}</h3>
110
- <ul>"
111
- rand(4).times do
112
- s << "<li>#{paragraph 1}</li>"
109
+ body << content_tag_for(:blockquote) do |bq|
110
+ bq << content_tag_for(:p, paragraphs(3))
111
+ end
112
+ body << content_tag_for(:h3, words(2).capitalize!)
113
+ body << content_tag_for(:ul) do |ul|
114
+ rand(4).times do
115
+ ul << content_tag_for(:li, paragraph(1))
116
+ end
117
+ end
118
+ body << content_tag_for(:pre) do |pre|
119
+ pre << content_tag_for(:code) do |code|
120
+ code << "
121
+ ##{word} h1 a {
122
+ display: block;
123
+ width: 300px;
124
+ height: 80px;
125
+ }
126
+ "
127
+ end
113
128
  end
114
- s << "</ul>
115
- <pre><code>
116
- ##{word} h1 a {
117
- display: block;
118
- width: 300px;
119
- height: 80px;
120
- }
121
- </code></pre>"
129
+ body
122
130
  end
123
131
 
124
132
  def fancy_string(count = 3, include_breaks = false)
125
- sep = include_breaks ? "<br>" : " "
133
+ sep = include_breaks ? '<br>' : ' '
126
134
  a = k([
127
- "<strong>#{words(2).capitalize!}</strong>.",
128
- "<em>#{paragraph}</em>",
129
- "<code>#{words 2}</code>",
130
- "#{a 2}"
131
- ] + FFaker::Lorem::paragraphs(count))
132
- a.sample(count).join(sep)
135
+ content_tag_for(:strong, words(2).capitalize!),
136
+ content_tag_for(:em, paragraph),
137
+ content_tag_for(:code, words(2)),
138
+ (a 2).to_s
139
+ ] + FFaker::Lorem.paragraphs(count))
140
+ fetch_sample(a, count: count).join(sep)
141
+ end
142
+
143
+ private
144
+
145
+ def content_tag_for(element, content = nil)
146
+ element_content = if content
147
+ content
148
+ else
149
+ block_html = ''
150
+ yield(block_html)
151
+ block_html
152
+ end
153
+ "<#{element}>#{element_content}</#{element}>"
133
154
  end
134
155
 
135
- private
136
156
  def word
137
- FFaker::Lorem::word
157
+ FFaker::Lorem.word
138
158
  end
139
159
 
140
160
  def words(word_count = 3)
141
- FFaker::Lorem::words(word_count).join(' ')
161
+ FFaker::Lorem.words(word_count).join(' ')
142
162
  end
143
163
 
144
164
  def sentence(word_count = 3)
145
- FFaker::Lorem::sentence(word_count)
165
+ FFaker::Lorem.sentence(word_count)
146
166
  end
147
167
 
148
168
  def sentences(sentence_count = 3)
149
- FFaker::Lorem::sentences(sentence_count).join(' ')
169
+ FFaker::Lorem.sentences(sentence_count).join(' ')
150
170
  end
151
171
 
152
172
  def paragraph(sentence_count = 3)
153
- FFaker::Lorem::paragraph(sentence_count)
173
+ FFaker::Lorem.paragraph(sentence_count)
154
174
  end
155
175
 
156
176
  def paragraphs(paragraph_count = 3)
157
- FFaker::Lorem::paragraphs(paragraph_count).join('<br>')
177
+ FFaker::Lorem.paragraphs(paragraph_count).join('<br>')
158
178
  end
159
179
  end
160
180
  end
@@ -5,8 +5,8 @@ module FFaker
5
5
  extend ModuleUtils
6
6
  extend self
7
7
 
8
- ETHNICITIES = ['African American', 'Asian/Pacific Islander', 'Caucasian', 'Hispanic', 'Native American', 'Multiracial', 'Other', 'Prefer not to respond']
9
- GENDERS = %w(Male Female)
8
+ ETHNICITIES = ['African American', 'Asian/Pacific Islander', 'Caucasian', 'Hispanic', 'Native American', 'Multiracial', 'Other', 'Prefer not to respond'].freeze
9
+ GENDERS = %w(Male Female).freeze
10
10
 
11
11
  def drivers_license
12
12
  FFaker.bothify('?###-###-##-###-#').upcase
@@ -17,11 +17,11 @@ module FFaker
17
17
  end
18
18
 
19
19
  def ethnicity
20
- ETHNICITIES.sample
20
+ fetch_sample(ETHNICITIES)
21
21
  end
22
22
 
23
23
  def gender
24
- GENDERS.sample
24
+ fetch_sample(GENDERS)
25
25
  end
26
26
  end
27
27
  end
@@ -0,0 +1,84 @@
1
+ # encoding: utf-8
2
+
3
+ module FFaker
4
+ module IdentificationBR
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ GENDERS = %w(Feminino Masculino).freeze
9
+ CPF_VERIFICATION_MULTIPLIERS = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2].freeze
10
+ CNPJ_VERIFICATION_MULTIPLIERS = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2].freeze
11
+
12
+ def cpf
13
+ cpf = FFaker.numerify('#########')
14
+ validators = cpf_verification_digits(cpf)
15
+ cpf + validators.join
16
+ end
17
+
18
+ def pretty_cpf
19
+ cpf_numbers = cpf
20
+ format('%s.%s.%s-%s',
21
+ cpf_numbers[0..2],
22
+ cpf_numbers[3..5],
23
+ cpf_numbers[6..8],
24
+ cpf_numbers[9..10])
25
+ end
26
+
27
+ def cnpj
28
+ cnpj = FFaker.numerify('############')
29
+ validators = cnpj_verification_digits(cnpj)
30
+ cnpj + validators.join
31
+ end
32
+
33
+ def pretty_cnpj
34
+ cnpj_numbers = cnpj.to_s.rjust(14, '0')
35
+ format('%s.%s.%s/%s-%s',
36
+ cnpj_numbers[0..1],
37
+ cnpj_numbers[2..4],
38
+ cnpj_numbers[5..7],
39
+ cnpj_numbers[8..11],
40
+ cnpj_numbers[12..14])
41
+ end
42
+
43
+ def rg
44
+ FFaker.numerify('#########')
45
+ end
46
+
47
+ def pretty_rg
48
+ FFaker.numerify('###.###.###')
49
+ end
50
+
51
+ def gender
52
+ fetch_sample(GENDERS)
53
+ end
54
+
55
+ def cpf_verification_digits(cpf)
56
+ document_verification_digits(CPF_VERIFICATION_MULTIPLIERS, cpf)
57
+ end
58
+
59
+ def cnpj_verification_digits(cnpj)
60
+ document_verification_digits(CNPJ_VERIFICATION_MULTIPLIERS, cnpj)
61
+ end
62
+
63
+ private
64
+
65
+ def document_verification_digits(verification_multipliers, document = nil)
66
+ return false if document.nil?
67
+
68
+ document_digits = document.to_s.scan(/[0-9]/).map(&:to_i)
69
+ validation_digits = []
70
+
71
+ if document_digits.size + 1 == verification_multipliers.size && document_digits.uniq.size > 1
72
+ 0.upto(1) do |i|
73
+ sum = verification_multipliers.drop(1 - i).each_with_index.inject(0) do |val, (value, j)|
74
+ val + document_digits[j] * value
75
+ end
76
+ validation_digits[i] = (sum %= 11) < 2 ? 0 : 11 - sum
77
+ document_digits.push(validation_digits[i])
78
+ end
79
+ return validation_digits
80
+ end
81
+ []
82
+ end
83
+ end
84
+ end
@@ -5,10 +5,10 @@ module FFaker
5
5
  extend ModuleUtils
6
6
  extend self
7
7
 
8
- GENDERS = %w(Hombre Mujer)
8
+ GENDERS = %w(Hombre Mujer).freeze
9
9
 
10
10
  def gender
11
- GENDERS.sample
11
+ fetch_sample(GENDERS)
12
12
  end
13
13
  end
14
14
  end
@@ -5,6 +5,7 @@ require 'ffaker/identification_es'
5
5
  module FFaker
6
6
  module IdentificationESCL
7
7
  extend IdentificationES
8
+ extend ModuleUtils
8
9
  extend self
9
10
 
10
11
  # RUT is the Chilean ID, followed by format: XX.XXX.XXX - Y
@@ -13,14 +14,15 @@ module FFaker
13
14
  # The last Y is a modulo 11 validation code. In the case the result is 10, it will be replaced by a 'K' character
14
15
  def rut
15
16
  # Rut is gonna be between 1.000.000 and 24.999.999
16
- n = Kernel.rand(24000000) + 1000000
17
+ n = rand(24_000_000) + 1_000_000
17
18
  "#{n}-#{dv(n)}"
18
19
  end
19
20
 
20
21
  private
21
- def dv(rut)
22
- total = rut.to_s.rjust(8,'0').split(//).zip(%w(3 2 7 6 5 4 3 2)).collect{|a,b| a.to_i*b.to_i}.inject(:+)
23
- (11 - total % 11).to_s.gsub(/10/,'k').gsub(/11/,'0')
24
- end
22
+
23
+ def dv(rut)
24
+ total = rut.to_s.rjust(8, '0').split(//).zip(%w(3 2 7 6 5 4 3 2)).collect { |a, b| a.to_i * b.to_i }.inject(:+)
25
+ (11 - total % 11).to_s.gsub(/10/, 'k').gsub(/11/, '0')
26
+ end
25
27
  end
26
28
  end
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'ffaker/identification_es'
4
- require "date"
4
+ require 'date'
5
5
 
6
6
  module FFaker
7
7
  module IdentificationESCO
@@ -10,32 +10,31 @@ module FFaker
10
10
  extend ModuleUtils
11
11
  extend self
12
12
 
13
- BLOOD_TYPE = %w(A B O AB)
14
- LICENSE_CATEGORY = %w(A B C)
13
+ BLOOD_TYPE = %w(A B O AB).freeze
14
+ LICENSE_CATEGORY = %w(A B C).freeze
15
15
 
16
16
  def drivers_license
17
17
  how_many_numbers = 6 + rand(8)
18
- FFaker.numerify("#" * how_many_numbers)
18
+ FFaker.numerify('#' * how_many_numbers)
19
19
  end
20
20
 
21
- alias_method :id, :drivers_license
21
+ alias id drivers_license
22
22
 
23
23
  def driver_license_category
24
- category = LICENSE_CATEGORY.sample
24
+ category = fetch_sample(LICENSE_CATEGORY)
25
25
  # the categories are A1 A2 B1 B2 B3 C1 C2 C3
26
26
  num = category == 'A' ? 1 + rand(2) : 1 + rand(3)
27
27
  "#{category}#{num}"
28
28
  end
29
29
 
30
- def blood_type #RH
31
- sign = %w(+ -).sample
32
- "#{BLOOD_TYPE.sample}#{sign}"
30
+ def blood_type # RH
31
+ sign = fetch_sample(%w(+ -))
32
+ "#{fetch_sample(BLOOD_TYPE)}#{sign}"
33
33
  end
34
34
 
35
35
  def expedition_date
36
36
  today = Date.today
37
37
  today - rand(today.year)
38
38
  end
39
-
40
39
  end
41
40
  end