ffaker 2.15.0 → 2.19.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 (311) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +31 -0
  3. data/README.md +6 -4
  4. data/REFERENCE.md +1485 -1257
  5. data/Rakefile +3 -3
  6. data/ffaker.gemspec +8 -5
  7. data/lib/ffaker.rb +19 -4
  8. data/lib/ffaker/address_au.rb +1 -1
  9. data/lib/ffaker/address_br.rb +1 -1
  10. data/lib/ffaker/address_ca.rb +1 -1
  11. data/lib/ffaker/address_ch.rb +0 -2
  12. data/lib/ffaker/address_ch_de.rb +0 -2
  13. data/lib/ffaker/address_ch_fr.rb +0 -2
  14. data/lib/ffaker/address_ch_it.rb +0 -2
  15. data/lib/ffaker/address_da.rb +0 -2
  16. data/lib/ffaker/address_de.rb +0 -2
  17. data/lib/ffaker/address_fi.rb +0 -2
  18. data/lib/ffaker/address_fr.rb +0 -2
  19. data/lib/ffaker/address_gr.rb +0 -2
  20. data/lib/ffaker/address_id.rb +0 -2
  21. data/lib/ffaker/address_in.rb +0 -2
  22. data/lib/ffaker/address_it.rb +37 -0
  23. data/lib/ffaker/address_ja.rb +0 -2
  24. data/lib/ffaker/address_mx.rb +2 -8
  25. data/lib/ffaker/address_nl.rb +1 -3
  26. data/lib/ffaker/address_ru.rb +0 -2
  27. data/lib/ffaker/address_se.rb +0 -2
  28. data/lib/ffaker/address_sn.rb +0 -2
  29. data/lib/ffaker/address_ua.rb +0 -2
  30. data/lib/ffaker/address_uk.rb +0 -2
  31. data/lib/ffaker/address_us.rb +0 -2
  32. data/lib/ffaker/animal.rb +1 -1
  33. data/lib/ffaker/bacon_ipsum.rb +0 -2
  34. data/lib/ffaker/code.rb +6 -6
  35. data/lib/ffaker/company_fr.rb +35 -0
  36. data/lib/ffaker/company_ja.rb +1 -1
  37. data/lib/ffaker/{courses.rb → courses_fr.rb} +2 -0
  38. data/lib/ffaker/data/address_br/city +0 -1
  39. data/lib/ffaker/data/address_br/state +1 -1
  40. data/lib/ffaker/data/address_it/city +111 -0
  41. data/lib/ffaker/data/address_it/region +20 -0
  42. data/lib/ffaker/data/filesystem/extension +31 -31
  43. data/lib/ffaker/data/food_pl/diary +14 -0
  44. data/lib/ffaker/data/food_pl/fermented +13 -0
  45. data/lib/ffaker/data/food_pl/fruits +34 -0
  46. data/lib/ffaker/data/food_pl/herbs +20 -0
  47. data/lib/ffaker/data/food_pl/meats +9 -0
  48. data/lib/ffaker/data/food_pl/preserves +10 -0
  49. data/lib/ffaker/data/food_pl/spices +26 -0
  50. data/lib/ffaker/data/food_pl/vegetables +45 -0
  51. data/lib/ffaker/data/freedom_ipsum/freedom_words +161 -0
  52. data/lib/ffaker/data/game/adj_and_adv +18 -0
  53. data/lib/ffaker/data/game/category +84 -0
  54. data/lib/ffaker/data/game/mechanic +182 -0
  55. data/lib/ffaker/data/game/nouns +37 -0
  56. data/lib/ffaker/data/game/prefixes +17 -0
  57. data/lib/ffaker/data/job_it/job_adj +37 -0
  58. data/lib/ffaker/data/job_it/job_noun +25 -0
  59. data/lib/ffaker/data/job_it/job_prefix +22 -0
  60. data/lib/ffaker/data/lorem/words +0 -67
  61. data/lib/ffaker/data/lorem_br/characters +36 -0
  62. data/lib/ffaker/data/lorem_br/words +183 -0
  63. data/lib/ffaker/data/lorem_it/words +321 -0
  64. data/lib/ffaker/data/name/pronouns +1 -1
  65. data/lib/ffaker/data/name_ga/first_names_male +286 -286
  66. data/lib/ffaker/data/phone_number_ja/four_disit_area_codes +41 -0
  67. data/lib/ffaker/data/phone_number_ja/one_disit_area_codes +3 -0
  68. data/lib/ffaker/data/phone_number_ja/three_disit_area_codes +296 -0
  69. data/lib/ffaker/data/phone_number_ja/two_disit_area_codes +48 -0
  70. data/lib/ffaker/data/sport_ru/summer +68 -0
  71. data/lib/ffaker/data/sport_ru/winter +20 -0
  72. data/lib/ffaker/dizzle_ipsum.rb +0 -2
  73. data/lib/ffaker/education.rb +4 -8
  74. data/lib/ffaker/education_cn.rb +3 -6
  75. data/lib/ffaker/filesystem.rb +7 -7
  76. data/lib/ffaker/food_pl.rb +65 -0
  77. data/lib/ffaker/freedom_ipsum.rb +20 -0
  78. data/lib/ffaker/game.rb +33 -0
  79. data/lib/ffaker/gender_it.rb +17 -0
  80. data/lib/ffaker/gender_ru.rb +22 -0
  81. data/lib/ffaker/healthcare_ipsum.rb +0 -2
  82. data/lib/ffaker/hipster_ipsum.rb +0 -2
  83. data/lib/ffaker/identification_es_cl.rb +0 -2
  84. data/lib/ffaker/identification_es_co.rb +0 -1
  85. data/lib/ffaker/identification_in.rb +15 -0
  86. data/lib/ffaker/identification_it.rb +30 -0
  87. data/lib/ffaker/identification_kr.rb +1 -1
  88. data/lib/ffaker/identification_mx.rb +1 -3
  89. data/lib/ffaker/identification_tw.rb +1 -1
  90. data/lib/ffaker/image.rb +8 -11
  91. data/lib/ffaker/internet.rb +1 -1
  92. data/lib/ffaker/internet_se.rb +1 -3
  93. data/lib/ffaker/job_it.rb +12 -0
  94. data/lib/ffaker/lorem_br.rb +45 -0
  95. data/lib/ffaker/lorem_cn.rb +0 -1
  96. data/lib/ffaker/lorem_it.rb +39 -0
  97. data/lib/ffaker/name_cs.rb +0 -2
  98. data/lib/ffaker/name_da.rb +0 -2
  99. data/lib/ffaker/name_de.rb +0 -2
  100. data/lib/ffaker/name_mx.rb +2 -4
  101. data/lib/ffaker/name_nb.rb +0 -2
  102. data/lib/ffaker/name_nl.rb +0 -2
  103. data/lib/ffaker/name_ph.rb +0 -2
  104. data/lib/ffaker/name_ru.rb +0 -2
  105. data/lib/ffaker/name_se.rb +0 -2
  106. data/lib/ffaker/name_th_en.rb +1 -1
  107. data/lib/ffaker/name_ua.rb +0 -2
  108. data/lib/ffaker/phone_number_br.rb +2 -2
  109. data/lib/ffaker/phone_number_da.rb +0 -1
  110. data/lib/ffaker/phone_number_ja.rb +88 -0
  111. data/lib/ffaker/product.rb +1 -1
  112. data/lib/ffaker/sport_ru.rb +25 -0
  113. data/lib/ffaker/ssn.rb +1 -3
  114. data/lib/ffaker/ssn_se.rb +0 -19
  115. data/lib/ffaker/string.rb +5 -5
  116. data/lib/ffaker/unit.rb +9 -10
  117. data/lib/ffaker/unit_english.rb +18 -21
  118. data/lib/ffaker/unit_metric.rb +15 -18
  119. data/lib/ffaker/utils/array_utils.rb +1 -1
  120. data/lib/ffaker/utils/module_utils.rb +23 -3
  121. data/lib/ffaker/vehicle.rb +1 -1
  122. data/lib/version.rb +1 -1
  123. data/scripts/profiling.rb +1 -1
  124. data/scripts/reference.rb +2 -3
  125. data/test/helper.rb +4 -4
  126. data/test/test_address.rb +1 -1
  127. data/test/test_address_au.rb +3 -3
  128. data/test/test_address_br.rb +2 -2
  129. data/test/test_address_ca.rb +1 -1
  130. data/test/test_address_ch.rb +1 -1
  131. data/test/test_address_ch_de.rb +1 -1
  132. data/test/test_address_ch_fr.rb +1 -1
  133. data/test/test_address_ch_it.rb +1 -1
  134. data/test/test_address_da.rb +1 -1
  135. data/test/test_address_de.rb +1 -1
  136. data/test/test_address_fi.rb +3 -3
  137. data/test/test_address_fr.rb +1 -1
  138. data/test/test_address_gr.rb +1 -1
  139. data/test/test_address_id.rb +2 -2
  140. data/test/test_address_in.rb +1 -1
  141. data/test/test_address_it.rb +12 -0
  142. data/test/test_address_ja.rb +2 -2
  143. data/test/test_address_kr.rb +1 -1
  144. data/test/test_address_mx.rb +1 -1
  145. data/test/test_address_nl.rb +2 -2
  146. data/test/test_address_pl.rb +1 -1
  147. data/test/test_address_ru.rb +1 -1
  148. data/test/test_address_se.rb +3 -3
  149. data/test/test_address_sn.rb +1 -1
  150. data/test/test_address_ua.rb +1 -1
  151. data/test/test_address_uk.rb +1 -1
  152. data/test/test_address_us.rb +1 -1
  153. data/test/test_airline.rb +1 -1
  154. data/test/test_animal.rb +1 -1
  155. data/test/test_animal_cn.rb +1 -1
  156. data/test/test_animal_es.rb +1 -1
  157. data/test/test_animal_pl.rb +1 -1
  158. data/test/test_animal_us.rb +1 -1
  159. data/test/test_array_utils.rb +2 -1
  160. data/test/test_avatar.rb +1 -1
  161. data/test/test_aws.rb +2 -2
  162. data/test/test_bacon_ipsum.rb +1 -1
  163. data/test/test_bank.rb +3 -4
  164. data/test/test_book.rb +5 -5
  165. data/test/test_boolean.rb +1 -1
  166. data/test/test_cheesy_lingo.rb +1 -1
  167. data/test/test_code.rb +1 -1
  168. data/test/test_color.rb +1 -1
  169. data/test/test_color_pl.rb +1 -1
  170. data/test/test_color_ua.rb +1 -1
  171. data/test/test_company.rb +1 -1
  172. data/test/test_company_cn.rb +1 -1
  173. data/test/test_company_fr.rb +33 -0
  174. data/test/test_company_it.rb +1 -1
  175. data/test/test_company_ja.rb +1 -1
  176. data/test/test_company_se.rb +1 -1
  177. data/test/test_conference.rb +1 -1
  178. data/test/test_course_mathematiques.rb +1 -1
  179. data/test/test_course_philosophie.rb +1 -1
  180. data/test/test_currency.rb +1 -1
  181. data/test/test_dizzle_ipsum.rb +1 -1
  182. data/test/test_education.rb +1 -1
  183. data/test/test_education_cn.rb +1 -1
  184. data/test/{test_faker.rb → test_ffaker.rb} +6 -2
  185. data/test/test_filesystem.rb +12 -4
  186. data/test/test_food.rb +1 -1
  187. data/test/test_food_pl.rb +61 -0
  188. data/test/test_freedom_ipsum.rb +21 -0
  189. data/test/test_game.rb +28 -0
  190. data/test/test_gender.rb +2 -2
  191. data/test/test_gender_br.rb +1 -1
  192. data/test/test_gender_cn.rb +1 -1
  193. data/test/test_gender_id.rb +1 -1
  194. data/test/test_gender_it.rb +27 -0
  195. data/test/test_gender_ja.rb +1 -1
  196. data/test/test_gender_jp.rb +1 -1
  197. data/test/test_gender_kr.rb +1 -1
  198. data/test/test_gender_pl.rb +1 -1
  199. data/test/test_gender_ru.rb +23 -0
  200. data/test/test_geolocation.rb +1 -1
  201. data/test/test_guid.rb +1 -1
  202. data/test/test_healthcare_ipsum.rb +1 -1
  203. data/test/test_healthcare_ru.rb +2 -2
  204. data/test/test_hipster_ipsum.rb +1 -1
  205. data/test/test_html_ipsum.rb +2 -2
  206. data/test/test_identification.rb +1 -1
  207. data/test/test_identification_br.rb +1 -1
  208. data/test/test_identification_co.rb +2 -2
  209. data/test/test_identification_es.rb +1 -1
  210. data/test/test_identification_es_cl.rb +2 -2
  211. data/test/test_identification_es_mx.rb +1 -1
  212. data/test/test_identification_in.rb +20 -0
  213. data/test/test_identification_it.rb +34 -0
  214. data/test/test_identification_kr.rb +1 -1
  215. data/test/test_identification_tw.rb +1 -1
  216. data/test/test_image.rb +5 -5
  217. data/test/test_internet.rb +1 -1
  218. data/test/test_internet_se.rb +2 -2
  219. data/test/test_job.rb +1 -1
  220. data/test/test_job_br.rb +1 -1
  221. data/test/test_job_cn.rb +1 -1
  222. data/test/test_job_fr.rb +1 -1
  223. data/test/test_job_it.rb +17 -0
  224. data/test/test_job_ja.rb +1 -1
  225. data/test/test_job_kr.rb +1 -1
  226. data/test/test_job_vn.rb +1 -1
  227. data/test/test_locale.rb +1 -1
  228. data/test/test_lorem.rb +5 -1
  229. data/test/test_lorem_ar.rb +1 -1
  230. data/test/test_lorem_br.rb +62 -0
  231. data/test/test_lorem_cn.rb +1 -1
  232. data/test/test_lorem_fr.rb +10 -8
  233. data/test/test_lorem_ie.rb +1 -1
  234. data/test/test_lorem_it.rb +51 -0
  235. data/test/test_lorem_ja.rb +1 -1
  236. data/test/test_lorem_kr.rb +1 -1
  237. data/test/test_lorem_pl.rb +2 -2
  238. data/test/test_lorem_ru.rb +2 -2
  239. data/test/test_lorem_ua.rb +2 -2
  240. data/test/test_module_utils.rb +1 -1
  241. data/test/test_movie.rb +1 -1
  242. data/test/test_music.rb +5 -5
  243. data/test/test_name.rb +1 -1
  244. data/test/test_name_ar.rb +1 -1
  245. data/test/test_name_br.rb +1 -1
  246. data/test/test_name_cn.rb +1 -1
  247. data/test/test_name_cs.rb +1 -1
  248. data/test/test_name_da.rb +1 -1
  249. data/test/test_name_de.rb +1 -1
  250. data/test/test_name_es.rb +1 -1
  251. data/test/test_name_fr.rb +1 -1
  252. data/test/test_name_ga.rb +1 -1
  253. data/test/test_name_gr.rb +1 -1
  254. data/test/test_name_id.rb +1 -1
  255. data/test/test_name_it.rb +1 -1
  256. data/test/test_name_ja.rb +1 -1
  257. data/test/test_name_kh.rb +1 -1
  258. data/test/test_name_kr.rb +1 -1
  259. data/test/test_name_mx.rb +1 -1
  260. data/test/test_name_nb.rb +1 -1
  261. data/test/test_name_nl.rb +1 -1
  262. data/test/test_name_ph.rb +1 -1
  263. data/test/test_name_pl.rb +1 -1
  264. data/test/test_name_ru.rb +1 -1
  265. data/test/test_name_se.rb +1 -1
  266. data/test/test_name_sn.rb +1 -1
  267. data/test/test_name_th.rb +1 -1
  268. data/test/test_name_th_en.rb +1 -1
  269. data/test/test_name_tw.rb +1 -1
  270. data/test/test_name_ua.rb +1 -1
  271. data/test/test_name_vn.rb +1 -1
  272. data/test/test_nato_alphabet.rb +1 -1
  273. data/test/test_phone_number.rb +1 -1
  274. data/test/test_phone_number_au.rb +1 -1
  275. data/test/test_phone_number_br.rb +1 -1
  276. data/test/test_phone_number_cu.rb +1 -1
  277. data/test/test_phone_number_da.rb +1 -1
  278. data/test/test_phone_number_de.rb +1 -1
  279. data/test/test_phone_number_fr.rb +1 -1
  280. data/test/test_phone_number_id.rb +1 -1
  281. data/test/test_phone_number_ja.rb +63 -0
  282. data/test/test_phone_number_kr.rb +1 -1
  283. data/test/test_phone_number_mx.rb +1 -1
  284. data/test/test_phone_number_nl.rb +1 -1
  285. data/test/test_phone_number_pl.rb +1 -1
  286. data/test/test_phone_number_se.rb +1 -1
  287. data/test/test_phone_number_sg.rb +1 -1
  288. data/test/test_phone_number_sn.rb +1 -1
  289. data/test/test_phone_number_tw.rb +1 -1
  290. data/test/test_phone_number_ua.rb +1 -1
  291. data/test/test_products.rb +1 -1
  292. data/test/test_sem_ver.rb +1 -1
  293. data/test/test_skill.rb +1 -1
  294. data/test/test_sport_pl.rb +1 -1
  295. data/test/test_sport_ru.rb +30 -0
  296. data/test/test_sport_us.rb +1 -1
  297. data/test/test_sports.rb +1 -1
  298. data/test/test_ssn.rb +1 -1
  299. data/test/test_ssn_mx.rb +1 -1
  300. data/test/test_ssn_se.rb +2 -2
  301. data/test/test_string.rb +4 -4
  302. data/test/test_time.rb +3 -4
  303. data/test/test_tweet.rb +5 -5
  304. data/test/test_unique_utils.rb +1 -1
  305. data/test/test_units.rb +2 -1
  306. data/test/test_units_english.rb +1 -1
  307. data/test/test_units_metric.rb +1 -1
  308. data/test/test_vehicle.rb +3 -3
  309. data/test/test_venue.rb +1 -1
  310. data/test/test_youtube.rb +1 -1
  311. metadata +232 -160
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FFaker
4
+ module JobIT
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ def title
9
+ "#{fetch_sample(JOB_PREFIX)} #{fetch_sample(JOB_ADJ)} #{fetch_sample(JOB_NOUN)}"
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FFaker
4
+ # Based on Perl's Text::Lorem
5
+ module LoremBR
6
+ extend ModuleUtils
7
+ extend self
8
+
9
+ def characters(character_count = 255)
10
+ character_count = 0 if character_count.negative?
11
+ Array.new(character_count).map { fetch_sample(CHARACTERS) }.join
12
+ end
13
+
14
+ def word
15
+ fetch_sample(WORDS)
16
+ end
17
+
18
+ def words(num = 3)
19
+ fetch_sample(WORDS, count: num)
20
+ end
21
+
22
+ def sentence(word_count = 4)
23
+ first_word, *last_words = words(word_count + rand(1..5))
24
+ return "#{first_word.capitalize} #{last_words.join(' ')}." if last_words
25
+
26
+ first_word.capitalize
27
+ end
28
+
29
+ alias phrase sentence
30
+
31
+ def sentences(sentence_count = 3)
32
+ (1..sentence_count).map { sentence }
33
+ end
34
+
35
+ alias phrases sentences
36
+
37
+ def paragraph(sentence_count = 3)
38
+ sentences(sentence_count + rand(0..2)).join(' ')
39
+ end
40
+
41
+ def paragraphs(paragraph_count = 3)
42
+ (1..paragraph_count).map { paragraph }
43
+ end
44
+ end
45
+ end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FFaker
4
- # Based on Perl's Text::Lorem
5
4
  module LoremCN
6
5
  extend ModuleUtils
7
6
  extend self
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FFaker
4
+ module LoremIT
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ def word
9
+ fetch_sample(WORDS)
10
+ end
11
+
12
+ def words(num = 3)
13
+ fetch_sample(WORDS, count: num)
14
+ end
15
+
16
+ def sentence(word_count = 4)
17
+ s = words(word_count + rand(0..5))
18
+ s = s.join(' ')
19
+ s.capitalize!
20
+ "#{s}."
21
+ end
22
+
23
+ alias phrase sentence
24
+
25
+ def sentences(sentence_count = 3)
26
+ (1..sentence_count).map { sentence }
27
+ end
28
+
29
+ alias phrases sentences
30
+
31
+ def paragraph(sentence_count = 3)
32
+ sentences(sentence_count + rand(0..2)).join(' ')
33
+ end
34
+
35
+ def paragraphs(paragraph_count = 3)
36
+ (1..paragraph_count).map { paragraph }
37
+ end
38
+ end
39
+ end
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name'
4
-
5
3
  module FFaker
6
4
  module NameCS
7
5
  include FFaker::Name
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name'
4
-
5
3
  module FFaker
6
4
  module NameDA
7
5
  include FFaker::Name
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name'
4
-
5
3
  module FFaker
6
4
  module NameDE
7
5
  include FFaker::Name
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name'
4
-
5
3
  module FFaker
6
4
  # guapolo github.com/guapolo
7
5
  module NameMX
@@ -26,7 +24,7 @@ module FFaker
26
24
  # Full name with prefix according to gender, possibly with middle_name
27
25
  def full_name_prefix(gender = :any)
28
26
  case gender
29
- when :any then
27
+ when :any
30
28
  case rand(0..8)
31
29
  when 0, 3, 6, 8 then "#{female_prefix} #{female_name} #{paternal_last_names}"
32
30
  else "#{male_prefix} #{male_name} #{paternal_last_names}"
@@ -40,7 +38,7 @@ module FFaker
40
38
  # Full name with no prefix according to gender, possibly with middle_name
41
39
  def full_name_no_prefix(gender = :any)
42
40
  case gender
43
- when :any then
41
+ when :any
44
42
  case rand(0..8)
45
43
  when 0, 3, 6, 8 then "#{female_name} #{paternal_last_names}"
46
44
  else "#{male_name} #{paternal_last_names}"
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name'
4
-
5
3
  module FFaker
6
4
  module NameNB
7
5
  include FFaker::Name
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name'
4
-
5
3
  module FFaker
6
4
  module NameNL
7
5
  include FFaker::Name
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name'
4
-
5
3
  module FFaker
6
4
  # Philippine names based on http://en.wikipedia.org/wiki/Philippine_name
7
5
  module NamePH
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name'
4
-
5
3
  module FFaker
6
4
  module NameRU
7
5
  extend ModuleUtils
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name'
4
-
5
3
  module FFaker
6
4
  module NameSE
7
5
  include FFaker::Name
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name_th'
3
+ require_relative 'name_th'
4
4
 
5
5
  module FFaker
6
6
  module NameTHEN
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/name'
4
-
5
3
  module FFaker
6
4
  module NameUA
7
5
  extend ModuleUtils
@@ -14,8 +14,8 @@ module FFaker
14
14
 
15
15
  COUNTRY_PREFIX = '+55'
16
16
  AREA_CODE = [
17
- 10..19, 21..22, 24, 27..28, 31..35, 37..38, 41..49,
18
- 51..54, 55, 61..69, 71..75, 77, 79, 81..89, 91..99
17
+ 11..19, 21..22, 24, 27..28, 31..35, 37..38, 41..49,
18
+ 51, 53..55, 61..69, 71, 73..75, 77, 79, 81..89, 91..99
19
19
  ].flat_map { |x| Array(x) }.map(&:to_s).freeze
20
20
 
21
21
  HOME_WORK_PHONE_PREFIX = %w[2 3 4 5].freeze
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FFaker
4
- # Based on information from http://en.wikipedia.org/wiki/Telephone_numbers_in_Australia
5
4
  module PhoneNumberDA
6
5
  extend ModuleUtils
7
6
  extend self
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+
3
+ # sourse: https://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/number_shitei.html#kotei-denwa
4
+
5
+ module FFaker
6
+ module PhoneNumberJA
7
+ extend ModuleUtils
8
+ extend self
9
+
10
+ JAPAN_PREFIX = '0'
11
+ JAPAN_COUNTRY_CODE = '+81'
12
+
13
+ ONE_DISIT_FORMAT = '%s #### ####'
14
+ TWO_DISIT_FORMAT = '%s ### ####'
15
+ THREE_DISIT_FORMAT = '%s ## ####'
16
+ FOUR_DISIT_FORMAT = '%s # ####'
17
+
18
+ MOBILE_PHONE_PREFIXES = %w[90 80 70].freeze
19
+ IP_PHONE_PREFIX = '50'
20
+ MOBILE_NUMBER_FORMAT = '%s #### ####'
21
+
22
+ def home_phone_number
23
+ disit = rand(1..4)
24
+ FFaker.numerify("#{JAPAN_PREFIX}#{home_phone_number_format(disit)}")
25
+ end
26
+
27
+ def mobile_phone_number
28
+ FFaker.numerify("#{JAPAN_PREFIX}#{mobile_phone_number_format}")
29
+ end
30
+
31
+ def phone_number
32
+ case rand(0..1)
33
+ when 0 then home_phone_number
34
+ when 1 then mobile_phone_number
35
+ end
36
+ end
37
+
38
+ def international_home_phone_number
39
+ disit = rand(1..4)
40
+ FFaker.numerify("#{JAPAN_COUNTRY_CODE} #{home_phone_number_format(disit)}")
41
+ end
42
+
43
+ def international_mobile_phone_number
44
+ FFaker.numerify("#{JAPAN_COUNTRY_CODE} #{mobile_phone_number_format}")
45
+ end
46
+
47
+ def international_phone_number
48
+ case rand(0..1)
49
+ when 0 then international_mobile_phone_number
50
+ when 1 then international_home_phone_number
51
+ end
52
+ end
53
+
54
+ def home_phone_prefix(disit = nil)
55
+ case disit
56
+ when 1 then fetch_sample(ONE_DISIT_AREA_CODES)
57
+ when 2 then fetch_sample(TWO_DISIT_AREA_CODES)
58
+ when 3 then fetch_sample(THREE_DISIT_AREA_CODES)
59
+ when 4 then fetch_sample(FOUR_DISIT_AREA_CODES)
60
+ end
61
+ end
62
+
63
+ def home_phone_number_format(disit)
64
+ prefix = home_phone_prefix(disit)
65
+ select_home_phone_format(disit) % prefix
66
+ end
67
+
68
+ def mobile_prefix
69
+ fetch_sample(MOBILE_PHONE_PREFIXES)
70
+ end
71
+
72
+ def mobile_phone_number_format
73
+ prefix = mobile_prefix
74
+ MOBILE_NUMBER_FORMAT % prefix
75
+ end
76
+
77
+ private
78
+
79
+ def select_home_phone_format(disit)
80
+ case disit
81
+ when 1 then ONE_DISIT_FORMAT
82
+ when 2 then TWO_DISIT_FORMAT
83
+ when 3 then THREE_DISIT_FORMAT
84
+ when 4 then FOUR_DISIT_FORMAT
85
+ end
86
+ end
87
+ end
88
+ end
@@ -14,7 +14,7 @@ module FFaker
14
14
  def brand
15
15
  case rand(0..11)
16
16
  when (0..4) then fetch_sample(B1) + fetch_sample(B2)
17
- when (5..10) then
17
+ when (5..10)
18
18
  [
19
19
  fetch_sample(START), fetch_sample(VOWELS), fetch_sample(SUFFIX),
20
20
  rand(0..1).zero? ? fetch_sample(ADDON) : nil
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FFaker
4
+ # Inspirations:
5
+ # https://olympic.ru/team/sport/
6
+ # http://ru.sport-wiki.org/vidy-sporta/
7
+ module SportRU
8
+ extend ModuleUtils
9
+ extend self
10
+
11
+ ALL = SUMMER + WINTER
12
+
13
+ def name
14
+ fetch_sample(ALL)
15
+ end
16
+
17
+ def summer
18
+ fetch_sample(SUMMER)
19
+ end
20
+
21
+ def winter
22
+ fetch_sample(WINTER)
23
+ end
24
+ end
25
+ end
data/lib/ffaker/ssn.rb CHANGED
@@ -16,9 +16,7 @@ module FFaker
16
16
  third_group = rand(1..9999)
17
17
 
18
18
  group_numbers = [first_group, second_group, third_group]
19
- result = format('%.3d-%.2d-%.4d', *group_numbers)
20
-
21
- result
19
+ format('%.3d-%.2d-%.4d', *group_numbers)
22
20
  end
23
21
  end
24
22
  end
data/lib/ffaker/ssn_se.rb CHANGED
@@ -76,24 +76,5 @@ module FFaker
76
76
  def three_character_string(number)
77
77
  format('%03d', number)
78
78
  end
79
-
80
- # http://en.wikipedia.org/wiki/Luhn_algorithm
81
- def luhn_check(number)
82
- multiplications = []
83
-
84
- number.split(//).each_with_index do |digit, i|
85
- multiplications << i.even? ? digit.to_i * 2 : digit.to_i
86
- end
87
-
88
- sum = 0
89
- multiplications.each do |num|
90
- num.to_s.each_byte do |character|
91
- sum += character.chr.to_i
92
- end
93
- end
94
-
95
- control_digit = (sum % 10).zero? ? 0 : (sum / 10 + 1) * 10 - sum
96
- control_digit.to_s
97
- end
98
79
  end
99
80
  end
data/lib/ffaker/string.rb CHANGED
@@ -8,10 +8,10 @@ module FFaker
8
8
  BACKSLASH = '\\'
9
9
  DASH = '-'
10
10
 
11
- LOWERS = [*'a'..'z'].freeze
12
- UPPERS = [*'A'..'Z'].freeze
11
+ LOWERS = Array('a'..'z').freeze
12
+ UPPERS = Array('A'..'Z').freeze
13
13
  LETTERS = LOWERS + UPPERS
14
- NUMBERS = [*'0'..'9'].freeze
14
+ NUMBERS = Array('0'..'9').freeze
15
15
  WORD_CHARS = LETTERS + NUMBERS + ['_']
16
16
  SPACES = [' ', "\t"].freeze
17
17
  ESCAPEABLE_CHARS = ['\\', '/', '.', '(', ')', '[', ']', '{', '}'].freeze
@@ -34,7 +34,7 @@ module FFaker
34
34
  while tokens.any?
35
35
  token = tokens.shift
36
36
  if token == DASH && tokens.first && result.last
37
- result += [*result.pop..tokens.shift]
37
+ result += Array(result.pop..tokens.shift)
38
38
  elsif token == BACKSLASH
39
39
  result << special(tokens.shift)
40
40
  else
@@ -50,7 +50,7 @@ module FFaker
50
50
  token = tokens.shift
51
51
 
52
52
  case token
53
- when '?' then
53
+ when '?'
54
54
  # TODO: Let ? generate nothing
55
55
  '' # We already printed its target
56
56
  when '+' then