ffaker 2.15.0 → 2.19.0

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