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
@@ -9,7 +9,7 @@ module FFaker
9
9
  extend ModuleUtils
10
10
  extend self
11
11
 
12
- PREFIXES = %w(Dr. Drs. Ir. Ing. Prof.)
12
+ PREFIXES = %w(Dr. Drs. Ir. Ing. Prof.).freeze
13
13
 
14
14
  def name
15
15
  case rand(30)
@@ -27,24 +27,24 @@ module FFaker
27
27
 
28
28
  def first_name_female
29
29
  case rand(8)
30
- when 0 then [FIRST_NAMES_FEMALE.sample, FIRST_NAMES_FEMALE.sample].join('-')
31
- else FIRST_NAMES_FEMALE.sample
30
+ when 0 then [fetch_sample(FIRST_NAMES_FEMALE), fetch_sample(FIRST_NAMES_FEMALE)].join('-')
31
+ else fetch_sample(FIRST_NAMES_FEMALE)
32
32
  end
33
33
  end
34
34
 
35
35
  def first_name_male
36
36
  case rand(8)
37
- when 0 then [FIRST_NAMES_MALE.sample, FIRST_NAMES_MALE.sample].join('-')
38
- else FIRST_NAMES_MALE.sample
37
+ when 0 then [fetch_sample(FIRST_NAMES_MALE), fetch_sample(FIRST_NAMES_MALE)].join('-')
38
+ else fetch_sample(FIRST_NAMES_MALE)
39
39
  end
40
40
  end
41
41
 
42
42
  def last_name
43
- LAST_NAMES.sample
43
+ fetch_sample(LAST_NAMES)
44
44
  end
45
45
 
46
46
  def prefix
47
- PREFIXES.sample
47
+ fetch_sample(PREFIXES)
48
48
  end
49
49
  end
50
50
  end
@@ -13,9 +13,9 @@ module FFaker
13
13
  def last_name
14
14
  case rand(2)
15
15
  when 0
16
- AUTOCHTHONOUS_SURNAMES.sample
16
+ fetch_sample(AUTOCHTHONOUS_SURNAMES)
17
17
  else
18
- SPANISH_SURNAMES.sample
18
+ fetch_sample(SPANISH_SURNAMES)
19
19
  end
20
20
  end
21
21
 
@@ -13,20 +13,20 @@ module FFaker
13
13
  LAST_NAMES = {
14
14
  male: %w(Абарун Абишев Авсюк Агаянц Адрющенков Азаркович Айзатуллов Акуненков Алабян Алвердашвили Алегин Александрович Андоловский Андрушко Анзимиров Анисимович Анпилов Аредьев Арихин Артыкнаев Артюнов Асикайнен Ахагинский Ахмедзянов Ахундзянов Ачамович Аширметов Багникян Бадашков Баздорев Базяев Балабанцев Балдихин Барчунов Бахалдин Бахонов Бачко Безин Беккерман Белоусов Бельцев Берберян Бернштейн Бессалов Биневич Бирюченко Битлер Благородов Блазнин Бойко Бордовкин Борисов Борсаков Браговский Бретнев Бричко Брыжахин Буженков Буртняк Бучников Ваиренко Васющенков Вердиянин Вирютин Воликов Волнаков Втонов Выдрич Выпирайлов Гайдашев Галабцев Ганецкий Гарбко Гарьковец Гасымов Гбидеров Гваськов Георгадзе Геркин Герливанов Гидаспов Гилюк Гладырин Глудман Глуздак Голанджан Головашеч Голынков Голяновский Гостюшин Гревизирский Грибоедов Гридасов Грустнев Губенский Гудолевич Давлетинин Денежко Джиджаев Дзеярский Долганов Долганюк Долгарев Дробуш Дружиненко Дружинкин Дымонт Дышев Евгенев Елепский Енанешников Еременко Ефимовцев Жеребченко Жутаев Забарный Загуменников Зарубенко Засенко Зашбахидзе Зворыкин Зиманенков Зубоедов Иванкович Иванковский Иванов Ивлюшин Избищев Кавин Казинец Калацкий Калуженко Камгатных Камзин Каракулян Карапай Карнацкий Карнеичев Карпышев Картманов Карцевадзе Кафтаев Кафтан Квалиашвили Квашихин Кендалиев Кирилко Климкевич Климнюк Ключенович Кобидзе Колюковский Коргутов Корленко Корлов Коробцов Коротько Корсов Кособок Коювский Крутилин Крышко Куварихин Кузьмин Купецкий Куприн Купцин Купырин Кустарников Кутиев Кухтов Кушнырь Кылосов Лабушкин Лагутаев Лагуткин Лапатиев Ларенцев Латьенов Лашевич Летшов Лечбинский Лизлов Лиштван Ловчев Ломашевич Лопонос Лотев Луговенко Ляховенко Магаметшапиев Майоров Маконько Малишевский Мамычкин Манукиан Маракшаев Марудин Марульский Маслов Матиас Матьязов Матюшкин Машурик Медведев Медвежинский Медянский Мелюшкин Мендусов Меринсон Милославов Мирошничев Мирсианов Митракович Михайлов Михитарян Михлин Мильцын Мицин Можелев Мокроус Мольвинских Монин Морадудин Моренов Мугрузин Мухаматкуров Мухляев Муюнин Наххомов Невкин Нежальский Немченинов Никоноркин Ободкин Огуркис Одокий Озепов Оковаиков Олышев Олянюк Оршаковский Остроухих Ошков Паникин Панкрушкин Паперко Пахолюк Петров Перевезев Перчуков Пидоренко Пилинский Пилищек Пипачук Пистоленко Плосконовов Подлесов Подорожний Покорчак Поладашвили Поликанин Померанцев Понченко Поскокухин Прутян Пунтиков Пусташев Пяртель Разночинцев Раслеков Рахленко Рахматуллин Ребекин Ревельский Редозубов Решетнев Римач Ройзнер Романов Рубель Руховец Сагоманян Садосюк Салошенко Сальккев Самоделко Сейсенбаев Сейтбаталов Селиончик Селуков Селюненок Семченков Серебрюхов Сидоров Скалецкий Скиженюк Скоробацкий Скрынько Слабчук Слежиков Смолянов Сморгунов Смутко Соколецкий Солонюк Старжин Страсс Стрекосов Струсов Студитских Суровкин Сченснович Сытясков Табалов Табахьян Таболов Тажвицкий Такиди Таротько Таутов Твердислов Тишайкин Ткачман Толманов Томинов Тонетов Тончиенко Топорников Торгоев Требунских Трилешинский Тряпичников Турзин Туровник Тутаров Тутейкин Тчанников Тяпко Уалентов Убкосмачев Удобников Усамединов Устилко Устькачинцев Ушахин Фалушкин Фараонов Фарбовский Фаридун Филатиков Фимошин Французов Фумич Хайтов Ханадьян Ханыгин Харехин Харламович Хволес Хитайленко Хлопонин Ходокович Хорохорин Хотунцов Цебаньков Цейнер Цепюк Чакириди Чебышов Челокян Чингузов Чипурных Чокашвили Чугров Чудных Чудоров Чумин Шабалдин Шаблин Шавердьян Шаленок Шарыпов Шеварев Шеняк Шестоперстов Шипенко Шиповсков Шкарев Шмырков Штенников Штиков Щепоков Щепотько Щептев Эдилов Элашвили Этерман Эчин Юрнев Яиченко Якишин Янович),
15
15
  female: %w(Абашникова Авекирова Агапчева Агенкова Агиева Айварова Айнутдинова Алежетдинова Алейкберова Алекперова Алимзанова Альбеева Альпатцева Андреева Аникинина Аниковская Анучкина Арисанова Арлачева Арлушкина Архангелова Астраханкина Афелова Ахилова Ачаповская Бабайцева Бабракова Байдарова Балаганина Балаганова Балдынова Баловинова Балышкина Барановская Баргугова Бардебанова Барьзева Батраева Бахшнева Бейзерова Бекмементьева Белдина Белункова Беляськова Бесова Бессчетнова Благодирова Блоха Блющицина Бобурова Богинина Болсова Бородина Босторина Брынцалова Брысковская Бубикова Бузулицкая Букаринова Булинова Бутонина Буханцова Бушевская Бушкетова Валиновская Вахрова Вахтеева Вейдова Великонская Великоруссова Венидиктова Венскова Вергилесова Верютина Ветродуева Видишева Войцеховская Волочаева Воронихина Воронянская Ворсобина Вострячкова Всеволодовская Выходова Галочкина Гарылева Гедгафова Герлова Глубокова Голованева Голодовая Голумбокова Гончаровская Гоньшева Городянская Горченкова Готавская Грабильникова Грацилева Грешищева Грешнякова Гржимальская Гузаева Гулипова Гульбинская Дашкова Деваева Декабрева Додырева Дочевская Дояматова Дубковская Думинская Дурдыева Евдашкина Евстиженкова Евтина Едомская Елецкая Елешенкова Епутаева Железная Жестякова Жилкова Забиралова Завершиева Загустина Закомоядина Закоурцева Залозная Заломаева Замарина Зановская Занцинская Занючковская Звездочкина Звержинская Зиядтдинова Зущина Иванова Ивашкива Иволга Иголкина Иднатуллина Икеряева Инелеева Иренкова Исраилова Иусова Ишинкина Кабичева Кавизина Каипова Калиновская Калинушкина Каменцева Камозина Камышкина Каннина Канькова Караульщикова Карачевская Карнилина Карпежникова Карягина Кашарова Кирилычева Кирюшенкова Клабукова Кобзина Коверенская Ковткова Когорева Козюрина Колотыркина Колушкина Комзелева Комзнкова Комитуркина Комкина Кориневская Корнюкина Корпушева Косарская Косьминина Котичева Котусева Кохтарева Кравская Кудряванова Кужненкова Куковицкая Кулакина Куличенкова Кунижева Куранчева Курепова Курлнская Курнашова Курнекова Курносенкова Курсантова Кусалова Кусачева Кутубаева Кучминская Лазова Ланятина Лашова Левенцова Лейзбовская Лепатецкая Летунова Лиходумова Локтеева Локутанская Лутавина Лушева Лынская Мазовская Малисова Малихникова Малкершина Малунеева Мамушина Манишева Манновеева Маносипова Манусова Манцырева Маразова Мардарейкина Мардулатова Маримпольская Марфутова Марьичева Матиросова Мелышкова Ментусова Мефодиева Мехидева Мизюнская Микотина Микряева Милородова Мимитаева Минхазова Мирошихина Миссуловина Михайликова Миханошина Мишалина Мораева Морозовская Моссаковская Мышова Нагановская Назмиева Невская Негодаева Нелюбова Нижегородова Ноздреватова Обминская Ольштинская Ончурова Отрочева Охматовская Павпычева Паксиватова Паленычева Паницкая Паршкина Пастушкина Перевышина Перелазная Пигулова Пилипова Пирогова Плуталовская Побаруева Побеглая Погребашкина Подсадная Поленцова Полонская Польская Помутова Помыкина Портянкина Потакина Прибытскова Прошутинская Пруцкова Птумкина Пулькова Пупырникова Пырьева Рагицкая Радомская Расшивалова Рахманькова Раченская Редюшова Ретюхина Родионочева Розинькова Ротаенова Рощупкина Руженцова Рыжеукова Рябышева Саадуева Савраскина Сайгашкина Салиханова Саманкина Самолюбова Саморохова Свитушкина Северякова Сейтбаева Семидумова Сергушева Сеуткина Сивилькаева Симнова Синаборская Скарина Скирдина Смешанова Смотраева Снегова Соткина Спирькова Спифанова Сумовская Сухаручкина Талалуева Талпыкина Таратученкова Тарачакова Тахторова Тенцова Тенькова Терентьева Техтина Тимокова Тихановская Товкуева Тогобицкая Толстикова Торгашева Торченкова Трубинкова Тугаринова Тулаева Турбатова Турлакова Туфанова Тюлева Тюликова Тютюнова Тюцкая Тюшина Ульданова Фаворская Фанасова Фаркова Фатищева Фатнева Филихина Фильштинская Фогенкова Фонанова Фругина Хабайлова Холмогорова Хамбикова Харламкина Хваловская Хлямова Хрусткова Цатурова Цивкина Цымбаева Чабаева Чебиева Чегрова Челейкина Чельднева Ченурина Черноиванова Чертова Черторыгина Четверткова Чигирижская Чичеткина Чичиркоза Чучкина Шадилова Шанина Шановая Шапатина Шаюнова Шаяхметова Шебакина Шедрина Шечковская Шикалева Шишаева Шишкова Шияновская Шпикова Шувашова Шуганикова Шумакова Шумялева Шумятьева Щепеникова Щиконикова Якиманская Яночкина)
16
- }
16
+ }.freeze
17
17
 
18
18
  # First names grammar
19
19
  FIRST_NAMES = {
20
20
  male: %w(Абрам Август Адольф Аким Александр Алексей Альберт Альфред Анатолий Андрей Антон Аристарх Аркадий Арнольд Арсен Артем Артемий Артур Аскольд Афанасий Ахмет Бенедикт Богдан Болеслав Борис Борислав Бронислав Вадим Валентин Валерий Василий Венедикт Вениамин Виктор Вильгельм Виталий Владимир Владислав Всеволод Вячеслав Гавриил Геннадий Генрих Георгий Герасим Герман Глеб Григорий Давыд Даниил Демид Денис Дмитрий Евгений Евдоким Егор Емельян Ермолай Ефим Жорж Захар Зиновий Ибрагим Иван Игорь Илларион Илья Иннокентий Иосиф Ираклий Карл Кирилл Константин Кузьма Лазарь Лев Леонид Леонтий Макар Максим Максимилиан Марат Марк Матвей Мирослав Михаил Модест Мурат Никита Николай Олег Осип Оскар Павел Петр Прохор Ринат Родион Ролан Роман Ростислав Рудольф Руслан Рустам Савва Святослав Севастьян Семен Сергей Спартак Станислав Степан Тарас Терентий Тимофей Тимур Федор Феликс Филипп Эдуард Эльдар Эммануил Эрик Эрнест Юлиан Юрий Яков Ян Ярослав),
21
21
  female: %w(Аврора Агнесса Агния Алевтина Александра Алёна Алина Алиса Алла Альбина Амелия Анастасия Ангелина Анжела Анна Антонина Анфиса Арина Ася Белла Берта Борислава Бронислава Валентина Валерия Ванда Варвара Василиса Венера Вера Вероника Виктория Виолетта Владислава Галина Генриетта Георгина Глафира Дана Даниэла Дарина Дарья Диана Дина Динара Доминика Ева Евгения Евдокия Екатерина Елена Елизавета Жанна Земфира Зинаида Злата Зоя Изабелла Изольда Инга Инесса Инна Ираида Ирина Ирма Ия Калерия Камилла Карина Каролина Кира Клавдия Клара Кристина Ксения Лада Лариса Леся Лидия Лилия Лина Лия Любовь Людмила Майя Маргарита Марианна Марина Мария Марта Марьяна Милена Моника Надежда Наталья Ника Нина Нонна Оксана Олеся Ольга Полина Рада Раиса Регина Рената Роза Роксана Руслана Сабина Светлана Сильва Снежана Софья Станислава Стелла Таисия Тамара Татьяна Тереза Ульяна Фаина Эдита Элла Эльвира Эльза Юлия Яна Ярослава)
22
- }
22
+ }.freeze
23
23
 
24
24
  # Patronymics grammar
25
25
  PATRONYMICS = {
26
26
  male: %w(Абрамович Августович Авдеевич Адамович Адольфович Адрианович Акимович Александрович Алексеевич Альбертович Альфредович Анатольевич Андреевич Антонович Ануфриевич Арамович Ариевич Аристархович Аркадиевич Арнольдович Аронович Арсенович Артемович Артемиевич Артурович Аскольдович Афанасиевич Ахметович Ашотович Бенедиктович Бернарович Богданович Болеславович Бонифациевич Борисович Бориславович Брониславович Вадимович Валентинович Валерьевич Вальтерович Васильевич Велорович Венедиктович Вениаминович Викторович Вильгельмович Виссарионович Витальевич Владимирович Владиславович Вольдемарович Всеволодович Вячеславович Гавриилович Геннадьевич Генрихович Георгиевич Геральдович Герасимович Германович Глебович Гордеевич Градимирович Григорьевич Гурьевич Давыдович Даниилович Демидович Демьянович Денисович Дмитриевич Донатович Дорофеевич Евгеньевич Евдокимович Евстафьевич Егорович Елисеевич Емельянович Ермолаевич Ерофеевич Ефимович Ефремович Захарович Зигмундович Зиновьевич Ибрагимович Иванович Игнатович Игоревич Измаилович Израилевич Илларионович Иннокентиевич Ионович Иосифович Ираклиевич Исаевич Казимирович Каренович Карлович Кириллович Клавдиевич Клементович Климович Кондратович Конкордиевич Константинович Лазариевич Львович Леванович Леонардович Леонидович Леонтьевич Леопольдович Любомирович Людвигович Макарович Максимович Максимилианович Маратович Марианович Маркович Мартинович Матвеевич Мерабович Мечеславович Миронович Мирославович Михайлович Модестович Моисеевич Муратович Назарович Натанович Наумович Никитович Никифорович Николаевич Никонович Нисонович Нифонтович Олегович Онисимович Орестович Осипович Оскарович Павлович Парамонович Петрович Платонович Прохорович Рафикович Рашидович Ринатович Ричардович Робертович Родионович Роланович Романович Ростиславович Рубенович Рудольфович Русланович Рустамович Самсонович Святославович Севастьянович Семенович Серафимович Сергеевич Соломонович Спартакович Станиславович Степанович Стоянович Тамазович Тарасович Теодорович Терентьевич Тигранович Тимофеевич Тимурович Титович Тихонович Трифонович Трофимович Устинович Федорович Феликсович Феодосьевич Филимонович Филиппович Фридрихович Харитонович Христианович Христофорович Эдуардович Эльдарович Эмилевич Эммануилович Эрикович Эрнестович Юлианович Юрьевич Якимович Янович Ярославович),
27
27
  female: %w(Абрамовна Августовна Авдеевна Адамовна Адольфовна Адриановна Акимовна Александровна Алексеевна Альбертовна Альфредовна Анатольевна Андреевна Антоновна Ануфриевна Арамовна Ариевна Аристарховна Аркадиевна Арнольдовна Ароновна Арсеновна Артемовна Артемьевна Артуровна Аскольдовна Афанасьевна Ахметовна Ашотовна Бенедиктовна Бернаровна Богдановна Болеславовна Бонифациевна Борисовна Бориславовна Брониславовна Вадимовна Валентиновна Валерьевна Вальтеровна Васильевна Велоровна Венедиктовна Вениаминовна Викторовна Вильгельмовна Виссарионовна Витальевна Владимировна Владиславовна Вольдемаровна Всеволодовна Вячеславовна Гаврииловна Геннадьевна Генриховна Георгиевна Геральдовна Герасимовна Германовна Глебовна Гордеевна Градимировна Григорьевна Гурьевна Давыдовна Данииловна Демидовна Демьяновна Денисовна Дмитриевна Донатовна Дорофеевна Евгеньевна Евдокимовна Евстафьевна Егоровна Елисеевна Емельяновна Ермолаевна Ерофеевна Ефимовна Ефремовна Захаровна Зигмундовна Зиновьевна Ибрагимовна Ивановна Игнатовна Игоревна Измаиловна Израилевна Илларионовна Иннокентиевна Ионовна Иосифовна Ираклиевна Исаевна Казимировна Кареновна Карловна Кирилловна Клавдиевна Клементовна Климовна Кондратьевна Конкордиевна Константиновна Лазарьевна Львовна Левановна Леонардовна Леонидовна Леонтьевна Леопольдовна Любомировна Людвиговна Макаровна Максимовна Максимилиановна Маратовна Мариановна Марковна Мартиновна Матвеевна Мерабовна Мечеславовна Мироновна Мирославовна Михайловна Модестовна Моисеевна Муратовна Назаровна Натановна Наумовна Никитовна Никифоровна Николаевна Никоновна Нисоновна Нифонтовна Олеговна Онисимовна Орестовна Осиповна Оскаровна Павловна Парамоновна Петровна Платоновна Прохоровна Рафиковна Рашидовна Ринатовна Ричардовна Робертовна Родионовна Ролановна Романовна Ростиславовна Рубеновна Рудольфовна Руслановна Рустамовна Самсоновна Святославовна Севастьяновна Семеновна Серафимовна Сергеевна Соломоновна Спартаковна Станиславовна Степановна Стояновна Тамазовна Тарасовна Теодоровна Терентьевна Тиграновна Тимофеевна Тимуровна Титовна Тихоновна Трифоновна Трофимовна Устиновна Федоровна Феликсовна Феодосьевна Филимоновна Филипповна Фридриховна Харитоновна Христиановна Христофоровна Эдуардовна Эльдаровна Эмилевна Эммануиловна Эриковна Эрнестовна Юлиановна Юрьевна Якимовна Яновна Ярославовна)
28
- }
29
- GENDERS = [:male, :female, :random] # :nodoc:
28
+ }.freeze
29
+ GENDERS = [:male, :female, :random].freeze # :nodoc:
30
30
 
31
31
  # All names generated inside the block will have the same sex.
32
32
  # Can be called with explicit sex which will affect
@@ -66,22 +66,21 @@ module FFaker
66
66
  # Generates random last name
67
67
  # for_sex can be :male, :female. Defaults to :random
68
68
  def last_name(for_sex = :random)
69
- LAST_NAMES[select_sex(for_sex)].sample
69
+ fetch_sample(LAST_NAMES[select_sex(for_sex)])
70
70
  end
71
71
 
72
72
  # Generates random first name
73
73
  # for_sex can be :male, :female. Defaults to :random
74
74
  def first_name(for_sex = :random)
75
- FIRST_NAMES[select_sex(for_sex)].sample
75
+ fetch_sample(FIRST_NAMES[select_sex(for_sex)])
76
76
  end
77
77
 
78
78
  # Generates random patronymic
79
79
  # for_sex can be :male, :female. Defaults to :random
80
80
  def patronymic(for_sex = :random)
81
- PATRONYMICS[select_sex(for_sex)].sample
81
+ fetch_sample(PATRONYMICS[select_sex(for_sex)])
82
82
  end
83
83
 
84
-
85
84
  private
86
85
 
87
86
  def select_sex(sex) # :nodoc:
@@ -9,7 +9,7 @@ module FFaker
9
9
  extend ModuleUtils
10
10
  extend self
11
11
 
12
- PREFIXES = %w(Dr. Prof.)
12
+ PREFIXES = %w(Dr. Prof.).freeze
13
13
 
14
14
  def name
15
15
  case rand(30)
@@ -29,19 +29,19 @@ module FFaker
29
29
  end
30
30
 
31
31
  def first_name_female
32
- FIRST_NAMES_FEMALE.sample
32
+ fetch_sample(FIRST_NAMES_FEMALE)
33
33
  end
34
34
 
35
35
  def first_name_male
36
- FIRST_NAMES_MALE.sample
36
+ fetch_sample(FIRST_NAMES_MALE)
37
37
  end
38
38
 
39
39
  def last_name
40
- LAST_NAMES.sample
40
+ fetch_sample(LAST_NAMES)
41
41
  end
42
42
 
43
43
  def prefix
44
- PREFIXES.sample
44
+ fetch_sample(PREFIXES)
45
45
  end
46
46
  end
47
47
  end
@@ -8,57 +8,57 @@ module FFaker
8
8
  extend ModuleUtils
9
9
  extend self
10
10
 
11
- PREFIX_FEMALE = %w(adja adjaratou mame ndeye)
12
- PREFIX_MALE = %w(pape eladji mame serigne)
11
+ PREFIX_FEMALE = %w(adja adjaratou mame ndeye).freeze
12
+ PREFIX_MALE = %w(pape eladji mame serigne).freeze
13
13
 
14
14
  def last_name
15
- LAST_NAMES.sample
15
+ fetch_sample(LAST_NAMES)
16
16
  end
17
17
 
18
18
  def first_name_male
19
- FIRST_NAMES_MALE.sample
19
+ fetch_sample(FIRST_NAMES_MALE)
20
20
  end
21
21
 
22
22
  def first_name_female
23
- FIRST_NAMES_FEMALE.sample
23
+ fetch_sample(FIRST_NAMES_FEMALE)
24
24
  end
25
25
 
26
26
  def prefix_male
27
- PREFIX_MALE.sample
27
+ fetch_sample(PREFIX_MALE)
28
28
  end
29
29
 
30
30
  def prefix_female
31
- PREFIX_FEMALE.sample
31
+ fetch_sample(PREFIX_FEMALE)
32
32
  end
33
33
 
34
34
  def name_male
35
35
  case rand(10)
36
- when 7 then "#{prefix_male} #{first_name_male} #{last_name}"
37
- when 5 then "#{prefix_male} #{first_name_male} #{last_name}"
38
- when 3 then "#{first_name_male} #{last_name}"
39
- when 0 then "#{first_name_male} #{last_name}"
40
- else "#{first_name_male} #{last_name}"
36
+ when 7 then "#{prefix_male} #{first_name_male} #{last_name}"
37
+ when 5 then "#{prefix_male} #{first_name_male} #{last_name}"
38
+ when 3 then "#{first_name_male} #{last_name}"
39
+ when 0 then "#{first_name_male} #{last_name}"
40
+ else "#{first_name_male} #{last_name}"
41
41
  end
42
42
  end
43
43
 
44
44
  def name_female
45
45
  case rand(10)
46
- when 7 then "#{prefix_female} #{first_name_female} #{last_name}"
47
- when 5 then "#{prefix_female} #{first_name_female} #{last_name}"
48
- when 3 then "#{first_name_female} #{last_name}"
49
- when 0 then "#{first_name_female} #{last_name}"
50
- else "#{first_name_female} #{last_name}"
46
+ when 7 then "#{prefix_female} #{first_name_female} #{last_name}"
47
+ when 5 then "#{prefix_female} #{first_name_female} #{last_name}"
48
+ when 3 then "#{first_name_female} #{last_name}"
49
+ when 0 then "#{first_name_female} #{last_name}"
50
+ else "#{first_name_female} #{last_name}"
51
51
  end
52
52
  end
53
53
 
54
54
  def name_sn
55
55
  case rand(10)
56
- when 7 then "#{prefix_female} #{first_name_female} #{last_name}"
57
- when 5 then "#{prefix_male} #{first_name_male} #{last_name}"
58
- when 3 then "#{first_name_male} #{last_name}"
59
- when 3 then "#{first_name_female} #{last_name}"
60
- when 0 then "#{first_name_male} #{last_name}"
61
- else "#{first_name_female} #{last_name}"
56
+ when 7 then "#{prefix_female} #{first_name_female} #{last_name}"
57
+ when 5 then "#{prefix_male} #{first_name_male} #{last_name}"
58
+ when 3 then "#{first_name_male} #{last_name}"
59
+ when 3 then "#{first_name_female} #{last_name}"
60
+ when 0 then "#{first_name_male} #{last_name}"
61
+ else "#{first_name_female} #{last_name}"
62
62
  end
63
63
  end
64
64
  end
@@ -7,15 +7,15 @@ module FFaker
7
7
  extend self
8
8
 
9
9
  def first_name
10
- FIRST_NAMES.sample
10
+ fetch_sample(FIRST_NAMES)
11
11
  end
12
12
 
13
13
  def last_name
14
- LAST_NAMES.sample
14
+ fetch_sample(LAST_NAMES)
15
15
  end
16
16
 
17
17
  def nick_name
18
- NICK_NAMES.sample
18
+ fetch_sample(NICK_NAMES)
19
19
  end
20
20
 
21
21
  def name
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+
3
+ require 'ffaker/name_th'
4
+
5
+ module FFaker
6
+ module NameTHEN
7
+ extend ModuleUtils
8
+ extend self
9
+
10
+ def first_name
11
+ fetch_sample(FIRST_NAMES)
12
+ end
13
+
14
+ def last_name
15
+ fetch_sample(LAST_NAMES)
16
+ end
17
+
18
+ def nick_name
19
+ fetch_sample(NICK_NAMES)
20
+ end
21
+
22
+ def name
23
+ "#{first_name} #{last_name}"
24
+ end
25
+ end
26
+ end
@@ -12,35 +12,35 @@ module FFaker
12
12
  MIDDLE_NAMES = MIDDLE_NAMES_MALE + MIDDLE_NAMES_FEMALE
13
13
 
14
14
  def first_name_female
15
- FIRST_NAMES_FEMALE.sample
15
+ fetch_sample(FIRST_NAMES_FEMALE)
16
16
  end
17
17
 
18
18
  def first_name_male
19
- FIRST_NAMES_MALE.sample
19
+ fetch_sample(FIRST_NAMES_MALE)
20
20
  end
21
21
 
22
22
  def middle_name_female
23
- MIDDLE_NAMES_FEMALE.sample
23
+ fetch_sample(MIDDLE_NAMES_FEMALE)
24
24
  end
25
25
 
26
26
  def middle_name_male
27
- MIDDLE_NAMES_MALE.sample
27
+ fetch_sample(MIDDLE_NAMES_MALE)
28
28
  end
29
29
 
30
30
  def last_name_female
31
- LAST_NAMES_FEMALE.sample
31
+ fetch_sample(LAST_NAMES_FEMALE)
32
32
  end
33
33
 
34
34
  def last_name_male
35
- LAST_NAMES_MALE.sample
35
+ fetch_sample(LAST_NAMES_MALE)
36
36
  end
37
37
 
38
38
  def first_name
39
- FIRST_NAMES.sample
39
+ fetch_sample(FIRST_NAMES)
40
40
  end
41
41
 
42
42
  def last_name
43
- LAST_NAMES.sample
43
+ fetch_sample(LAST_NAMES)
44
44
  end
45
45
 
46
46
  def name
@@ -10,19 +10,19 @@ module FFaker
10
10
  end
11
11
 
12
12
  def first_name
13
- FIRST_NAMES.sample
13
+ fetch_sample(FIRST_NAMES)
14
14
  end
15
15
 
16
16
  def last_name
17
- LAST_NAMES.sample
17
+ fetch_sample(LAST_NAMES)
18
18
  end
19
19
 
20
20
  def middle_name
21
- MIDDLE_NAMES.sample
21
+ fetch_sample(MIDDLE_NAMES)
22
22
  end
23
23
 
24
24
  def last_first
25
- "#{last_name} #{middle_name} #{first_name}"
25
+ "#{last_name} #{middle_name} #{first_name}"
26
26
  end
27
27
  end
28
28
  end
@@ -5,33 +5,33 @@ module FFaker
5
5
  extend ModuleUtils
6
6
  extend self
7
7
 
8
- ALPHABET_CODES = %w(ALPHA BRAVO CHARLIE DELTA ECHO FOXTROT GOLF HOTEL INDIA JULIETT KILO LIMA MIKE NOVEMBER OSCAR PAPA QUEBEC ROMEO SIERRA TANGO UNIFORM VICTOR WHISKEY XRAY YANKEE ZULU)
9
- NUMERIC_CODES = %w(ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE ZERO)
10
- STOP_CODE = "STOP"
8
+ ALPHABET_CODES = %w(ALPHA BRAVO CHARLIE DELTA ECHO FOXTROT GOLF HOTEL INDIA JULIETT KILO LIMA MIKE NOVEMBER OSCAR PAPA QUEBEC ROMEO SIERRA TANGO UNIFORM VICTOR WHISKEY XRAY YANKEE ZULU).freeze
9
+ NUMERIC_CODES = %w(ONE TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE ZERO).freeze
10
+ STOP_CODE = 'STOP'.freeze
11
11
  CODES = ALPHABET_CODES + NUMERIC_CODES + [STOP_CODE]
12
12
 
13
13
  def code
14
- CODES.sample
14
+ fetch_sample(CODES)
15
15
  end
16
16
 
17
17
  def alphabetic_code
18
- ALPHABET_CODES.sample
18
+ fetch_sample(ALPHABET_CODES)
19
19
  end
20
20
 
21
21
  def numeric_code
22
- NUMERIC_CODES.sample
22
+ fetch_sample(NUMERIC_CODES)
23
23
  end
24
24
 
25
25
  def callsign
26
- codify("?-?-#")
26
+ codify('?-?-#')
27
27
  end
28
28
 
29
29
  def codify(masks)
30
30
  masks.scan(/./).map do |c|
31
31
  case c
32
- when "#" then NUMERIC_CODES.sample
33
- when "?" then ALPHABET_CODES.sample
34
- when "." then STOP_CODE
32
+ when '#' then fetch_sample(NUMERIC_CODES)
33
+ when '?' then fetch_sample(ALPHABET_CODES)
34
+ when '.' then STOP_CODE
35
35
  else c
36
36
  end
37
37
  end.join
@@ -7,22 +7,22 @@ module FFaker
7
7
 
8
8
  def phone_number
9
9
  FFaker.numerify case rand(20)
10
- when 0 then "#{area_code}-###-#### x#####"
11
- when 1 then "#{area_code}-###-#### x####"
12
- when 2 then "#{area_code}-###-#### x###"
13
- when 3..4 then "#{area_code}-###-####"
14
- when 5 then "#{area_code}.###.#### x#####"
15
- when 6 then "#{area_code}.###.#### x####"
16
- when 7 then "#{area_code}.###.#### x###"
17
- when 8..9 then "#{area_code}.###.####"
18
- when 10 then "(#{area_code})###-#### x#####"
19
- when 11 then "(#{area_code})###-#### x####"
20
- when 12 then "(#{area_code})###-#### x###"
21
- when 13..14 then "(#{area_code})###-####"
22
- when 15 then "1-#{area_code}-###-#### x#####"
23
- when 16 then "1-#{area_code}-###-#### x####"
24
- when 17 then "1-#{area_code}-###-#### x###"
25
- when 18..19 then "1-#{area_code}-###-####"
10
+ when 0 then "#{area_code}-#{exchange_code}-#### x#####"
11
+ when 1 then "#{area_code}-#{exchange_code}-#### x####"
12
+ when 2 then "#{area_code}-#{exchange_code}-#### x###"
13
+ when 3..4 then "#{area_code}-#{exchange_code}-####"
14
+ when 5 then "#{area_code}.#{exchange_code}.#### x#####"
15
+ when 6 then "#{area_code}.#{exchange_code}.#### x####"
16
+ when 7 then "#{area_code}.#{exchange_code}.#### x###"
17
+ when 8..9 then "#{area_code}.#{exchange_code}.####"
18
+ when 10 then "(#{area_code})#{exchange_code}-#### x#####"
19
+ when 11 then "(#{area_code})#{exchange_code}-#### x####"
20
+ when 12 then "(#{area_code})#{exchange_code}-#### x###"
21
+ when 13..14 then "(#{area_code})#{exchange_code}-####"
22
+ when 15 then "1-#{area_code}-#{exchange_code}-#### x#####"
23
+ when 16 then "1-#{area_code}-#{exchange_code}-#### x####"
24
+ when 17 then "1-#{area_code}-#{exchange_code}-#### x###"
25
+ when 18..19 then "1-#{area_code}-#{exchange_code}-####"
26
26
  end
27
27
  end
28
28
 
@@ -36,15 +36,26 @@ module FFaker
36
36
  end
37
37
  end
38
38
 
39
+ def exchange_code
40
+ # The North American Numbering Plan (NANP) does not permit the digits 0
41
+ # and 1 as the leading digit of the exchange code.
42
+ # https://en.wikipedia.org/wiki/North_American_Numbering_Plan#Numbering_system
43
+ area_code
44
+ end
45
+
39
46
  def short_phone_number
40
- FFaker.numerify("#{area_code}-###-####")
47
+ FFaker.numerify("#{area_code}-#{exchange_code}-####")
41
48
  end
42
49
 
43
- def imei(serial_number=nil)
50
+ def phone_calling_code
51
+ fetch_sample(PHONE_CALLING_CODE)
52
+ end
53
+
54
+ def imei(serial_number = nil)
44
55
  # IMEI Format:
45
56
  # AA-BBBBBB-CCCCCC-D
46
57
 
47
- rbi = "00" # Test IMEI for countries with 2-digit country codes
58
+ rbi = '00' # Test IMEI for countries with 2-digit country codes
48
59
  tac = "#{rbi}124500" # iPhone
49
60
 
50
61
  serial_number ||= rand(1_000_000)
@@ -55,12 +66,11 @@ module FFaker
55
66
  check_digit = 0
56
67
  base_digits = imei_base.split('').map(&:to_i)
57
68
  base_digits.each_with_index do |digit, i|
58
- check_digit += i.even? ? 2*digit : digit
69
+ check_digit += i.even? ? 2 * digit : digit
59
70
  end
60
71
  check_digit = (10 - check_digit % 10) % 10
61
72
 
62
73
  "#{imei_base}#{check_digit}"
63
74
  end
64
-
65
75
  end
66
76
  end