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
@@ -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