ffaker 2.13.0 → 2.18.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 (133) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +31 -0
  3. data/README.md +14 -5
  4. data/REFERENCE.md +1398 -1249
  5. data/Rakefile +3 -9
  6. data/ffaker.gemspec +14 -5
  7. data/lib/ffaker.rb +12 -6
  8. data/lib/ffaker/address_ch.rb +0 -2
  9. data/lib/ffaker/address_ch_de.rb +0 -2
  10. data/lib/ffaker/address_ch_fr.rb +0 -2
  11. data/lib/ffaker/address_ch_it.rb +0 -2
  12. data/lib/ffaker/address_da.rb +0 -2
  13. data/lib/ffaker/address_de.rb +0 -2
  14. data/lib/ffaker/address_fi.rb +0 -2
  15. data/lib/ffaker/address_fr.rb +5 -3
  16. data/lib/ffaker/address_gr.rb +0 -2
  17. data/lib/ffaker/address_id.rb +0 -2
  18. data/lib/ffaker/address_in.rb +0 -2
  19. data/lib/ffaker/address_ja.rb +0 -2
  20. data/lib/ffaker/address_nl.rb +1 -5
  21. data/lib/ffaker/address_ru.rb +0 -2
  22. data/lib/ffaker/address_se.rb +0 -2
  23. data/lib/ffaker/address_sn.rb +0 -2
  24. data/lib/ffaker/address_ua.rb +0 -2
  25. data/lib/ffaker/address_uk.rb +0 -2
  26. data/lib/ffaker/address_us.rb +0 -2
  27. data/lib/ffaker/{animals.rb → animal.rb} +1 -1
  28. data/lib/ffaker/{animals_cn.rb → animal_cn.rb} +0 -0
  29. data/lib/ffaker/animal_es.rb +12 -0
  30. data/lib/ffaker/{animals_us.rb → animal_us.rb} +0 -0
  31. data/lib/ffaker/bacon_ipsum.rb +0 -2
  32. data/lib/ffaker/code.rb +17 -0
  33. data/lib/ffaker/company_ja.rb +24 -0
  34. data/lib/ffaker/data/address_fr/region +27 -0
  35. data/lib/ffaker/data/animal_es/common_names +135 -0
  36. data/lib/ffaker/data/filesystem/extension +31 -31
  37. data/lib/ffaker/data/food_pl/diary +14 -0
  38. data/lib/ffaker/data/food_pl/fermented +13 -0
  39. data/lib/ffaker/data/food_pl/fruits +34 -0
  40. data/lib/ffaker/data/food_pl/herbs +20 -0
  41. data/lib/ffaker/data/food_pl/meats +9 -0
  42. data/lib/ffaker/data/food_pl/preserves +10 -0
  43. data/lib/ffaker/data/food_pl/spices +26 -0
  44. data/lib/ffaker/data/food_pl/vegetables +45 -0
  45. data/lib/ffaker/data/freedom_ipsum/freedom_words +161 -0
  46. data/lib/ffaker/data/lorem/words +0 -67
  47. data/lib/ffaker/data/phone_number_ja/four_disit_area_codes +41 -0
  48. data/lib/ffaker/data/phone_number_ja/one_disit_area_codes +3 -0
  49. data/lib/ffaker/data/phone_number_ja/three_disit_area_codes +296 -0
  50. data/lib/ffaker/data/phone_number_ja/two_disit_area_codes +48 -0
  51. data/lib/ffaker/dizzle_ipsum.rb +0 -2
  52. data/lib/ffaker/education.rb +4 -8
  53. data/lib/ffaker/education_cn.rb +3 -6
  54. data/lib/ffaker/filesystem.rb +7 -7
  55. data/lib/ffaker/food_pl.rb +65 -0
  56. data/lib/ffaker/freedom_ipsum.rb +20 -0
  57. data/lib/ffaker/healthcare_ipsum.rb +0 -2
  58. data/lib/ffaker/hipster_ipsum.rb +0 -2
  59. data/lib/ffaker/identification_es_cl.rb +0 -2
  60. data/lib/ffaker/identification_es_co.rb +0 -1
  61. data/lib/ffaker/identification_in.rb +15 -0
  62. data/lib/ffaker/identification_kr.rb +1 -1
  63. data/lib/ffaker/identification_mx.rb +1 -3
  64. data/lib/ffaker/identification_tw.rb +23 -0
  65. data/lib/ffaker/image.rb +8 -11
  66. data/lib/ffaker/internet.rb +1 -1
  67. data/lib/ffaker/internet_se.rb +1 -3
  68. data/lib/ffaker/lorem_cn.rb +0 -1
  69. data/lib/ffaker/name_cs.rb +0 -2
  70. data/lib/ffaker/name_da.rb +0 -2
  71. data/lib/ffaker/name_de.rb +0 -2
  72. data/lib/ffaker/name_mx.rb +2 -4
  73. data/lib/ffaker/name_nb.rb +0 -2
  74. data/lib/ffaker/name_nl.rb +0 -2
  75. data/lib/ffaker/name_ph.rb +0 -2
  76. data/lib/ffaker/name_ru.rb +0 -2
  77. data/lib/ffaker/name_se.rb +0 -2
  78. data/lib/ffaker/name_ua.rb +0 -2
  79. data/lib/ffaker/phone_number_br.rb +2 -2
  80. data/lib/ffaker/phone_number_da.rb +0 -1
  81. data/lib/ffaker/phone_number_ja.rb +88 -0
  82. data/lib/ffaker/product.rb +1 -1
  83. data/lib/ffaker/ssn.rb +1 -3
  84. data/lib/ffaker/string.rb +5 -5
  85. data/lib/ffaker/unit.rb +9 -10
  86. data/lib/ffaker/unit_english.rb +18 -21
  87. data/lib/ffaker/unit_metric.rb +15 -18
  88. data/lib/ffaker/utils/unique_utils.rb +0 -2
  89. data/lib/ffaker/vehicle.rb +1 -1
  90. data/lib/version.rb +5 -0
  91. data/scripts/benchmark.rb +10 -11
  92. data/test/helper.rb +3 -3
  93. data/test/test_address_au.rb +2 -2
  94. data/test/test_address_br.rb +1 -1
  95. data/test/test_address_fi.rb +2 -2
  96. data/test/test_address_fr.rb +1 -1
  97. data/test/test_address_id.rb +1 -1
  98. data/test/test_address_ja.rb +1 -1
  99. data/test/test_address_nl.rb +1 -1
  100. data/test/test_address_se.rb +2 -2
  101. data/test/test_animal_es.rb +17 -0
  102. data/test/test_array_utils.rb +0 -1
  103. data/test/test_aws.rb +1 -1
  104. data/test/test_bank.rb +2 -3
  105. data/test/test_book.rb +4 -4
  106. data/test/test_code.rb +22 -1
  107. data/test/test_company_ja.rb +28 -0
  108. data/test/{test_faker.rb → test_ffaker.rb} +5 -1
  109. data/test/test_filesystem.rb +11 -3
  110. data/test/test_food_pl.rb +61 -0
  111. data/test/test_freedom_ipsum.rb +21 -0
  112. data/test/test_geolocation.rb +2 -2
  113. data/test/test_healthcare_ru.rb +1 -1
  114. data/test/test_html_ipsum.rb +1 -1
  115. data/test/test_identification_co.rb +1 -1
  116. data/test/test_identification_es_cl.rb +1 -1
  117. data/test/test_identification_in.rb +20 -0
  118. data/test/test_identification_tw.rb +17 -0
  119. data/test/test_image.rb +4 -4
  120. data/test/test_internet_se.rb +1 -1
  121. data/test/test_lorem.rb +4 -0
  122. data/test/test_lorem_fr.rb +9 -7
  123. data/test/test_lorem_pl.rb +1 -1
  124. data/test/test_lorem_ru.rb +1 -1
  125. data/test/test_lorem_ua.rb +1 -1
  126. data/test/test_music.rb +4 -4
  127. data/test/test_phone_number_ja.rb +63 -0
  128. data/test/test_ssn_se.rb +3 -3
  129. data/test/test_string.rb +3 -3
  130. data/test/test_time.rb +2 -3
  131. data/test/test_tweet.rb +4 -4
  132. data/test/test_vehicle.rb +2 -2
  133. metadata +214 -162
@@ -0,0 +1,48 @@
1
+ 11
2
+ 15
3
+ 17
4
+ 18
5
+ 19
6
+ 22
7
+ 23
8
+ 24
9
+ 25
10
+ 26
11
+ 27
12
+ 28
13
+ 29
14
+ 42
15
+ 43
16
+ 44
17
+ 45
18
+ 46
19
+ 47
20
+ 48
21
+ 49
22
+ 52
23
+ 53
24
+ 54
25
+ 55
26
+ 58
27
+ 59
28
+ 72
29
+ 73
30
+ 75
31
+ 76
32
+ 77
33
+ 78
34
+ 79
35
+ 82
36
+ 83
37
+ 84
38
+ 86
39
+ 87
40
+ 88
41
+ 89
42
+ 92
43
+ 93
44
+ 95
45
+ 96
46
+ 97
47
+ 98
48
+ 99
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/lorem'
4
-
5
3
  module FFaker
6
4
  # Thanks to Snoop Dogg
7
5
  module DizzleIpsum
@@ -39,14 +39,10 @@ module FFaker
39
39
 
40
40
  def school
41
41
  case rand(0..4)
42
- when 0, 1 then
43
- "#{school_name} #{fetch_sample(SCHOOL_TYPE)}"
44
- when 2 then
45
- "#{school_generic_name} #{fetch_sample(SCHOOL_ADJ)} #{fetch_sample(SCHOOL_TYPE)}"
46
- when 3 then
47
- "#{fetch_sample(SCHOOL_UNI)} of #{school_generic_name}"
48
- when 4 then
49
- "#{school_generic_name} #{fetch_sample(SCHOOL_TYPE)} of #{fetch_sample(MAJOR_NOUN)}"
42
+ when 0, 1 then "#{school_name} #{fetch_sample(SCHOOL_TYPE)}"
43
+ when 2 then "#{school_generic_name} #{fetch_sample(SCHOOL_ADJ)} #{fetch_sample(SCHOOL_TYPE)}"
44
+ when 3 then "#{fetch_sample(SCHOOL_UNI)} of #{school_generic_name}"
45
+ when 4 then "#{school_generic_name} #{fetch_sample(SCHOOL_TYPE)} of #{fetch_sample(MAJOR_NOUN)}"
50
46
  end
51
47
  end
52
48
  end
@@ -28,12 +28,9 @@ module FFaker
28
28
 
29
29
  def school
30
30
  case rand(0..2)
31
- when 0 then
32
- "#{location}#{fetch_sample(SCHOOL_TYPE)}#{fetch_sample(SCHOOL_UNI)}"
33
- when 1 then
34
- "#{location}#{fetch_sample(SCHOOL_UNI)}"
35
- when 2 then
36
- "#{location}#{fetch_sample(SCHOOL_TYPE)}#{fetch_sample(SCHOOL_UNI)}#{fetch_sample(CITY)}分校"
31
+ when 0 then "#{location}#{fetch_sample(SCHOOL_TYPE)}#{fetch_sample(SCHOOL_UNI)}"
32
+ when 1 then "#{location}#{fetch_sample(SCHOOL_UNI)}"
33
+ when 2 then "#{location}#{fetch_sample(SCHOOL_TYPE)}#{fetch_sample(SCHOOL_UNI)}#{fetch_sample(CITY)}分校"
37
34
  end
38
35
  end
39
36
  end
@@ -5,8 +5,6 @@ module FFaker
5
5
  extend ModuleUtils
6
6
  extend self
7
7
 
8
- SLUG_DELIMITERS = %w[- _ .].freeze
9
-
10
8
  def extension
11
9
  fetch_sample(EXTENSION)
12
10
  end
@@ -15,11 +13,13 @@ module FFaker
15
13
  fetch_sample(MIME_TYPE)
16
14
  end
17
15
 
18
- def file_name(dir = nil, name = nil, ext = nil, directory_separator = '/')
19
- dir ||= Internet.slug
20
- name ||= Lorem.word.downcase
21
- ext ||= extension
22
- [dir, name].join(directory_separator) + ".#{ext}"
16
+ def directory(directory_separator = File::SEPARATOR)
17
+ Lorem.words.join(directory_separator)
18
+ end
19
+
20
+ def file_name(dir = directory, name = Lorem.word.downcase,
21
+ ext = extension, directory_separator = File::SEPARATOR)
22
+ "#{dir}#{directory_separator}#{name}.#{ext}"
23
23
  end
24
24
  end
25
25
  end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FFaker
4
+ module FoodPL
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ def food
9
+ case rand(0..1)
10
+ when 0 then processed
11
+ when 1 then unprocessed
12
+ end
13
+ end
14
+
15
+ def processed
16
+ case rand(0..2)
17
+ when 0 then fermented
18
+ when 1 then diary
19
+ when 2 then preserves
20
+ end
21
+ end
22
+
23
+ def unprocessed
24
+ case rand(0..4)
25
+ when 0 then vegetable
26
+ when 1 then fruit
27
+ when 2 then herb
28
+ when 3 then spice
29
+ when 4 then meat
30
+ end
31
+ end
32
+
33
+ def vegetable
34
+ fetch_sample(VEGETABLES)
35
+ end
36
+
37
+ def fruit
38
+ fetch_sample(FRUITS)
39
+ end
40
+
41
+ def herb
42
+ fetch_sample(HERBS)
43
+ end
44
+
45
+ def spice
46
+ fetch_sample(SPICES)
47
+ end
48
+
49
+ def meat
50
+ fetch_sample(MEATS)
51
+ end
52
+
53
+ def fermented
54
+ fetch_sample(FERMENTED)
55
+ end
56
+
57
+ def diary
58
+ fetch_sample(DIARY)
59
+ end
60
+
61
+ def preserves
62
+ fetch_sample(PRESERVES)
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ffaker/lorem'
4
+
5
+ module FFaker
6
+ module FreedomIpsum
7
+ include Lorem
8
+
9
+ extend ModuleUtils
10
+ extend self
11
+
12
+ def word
13
+ fetch_sample(FREEDOM_WORDS)
14
+ end
15
+
16
+ def words(num = 3)
17
+ fetch_sample(FREEDOM_WORDS, count: num)
18
+ end
19
+ end
20
+ end
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/lorem'
4
-
5
3
  module FFaker
6
4
  module HealthcareIpsum
7
5
  include Lorem
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/lorem'
4
-
5
3
  module FFaker
6
4
  # thanks to http://hipsteripsum.me
7
5
  module HipsterIpsum
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/identification_es'
4
-
5
3
  module FFaker
6
4
  module IdentificationESCL
7
5
  extend IdentificationES
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/identification_es'
4
3
  require 'date'
5
4
 
6
5
  module FFaker
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FFaker
4
+ module IdentificationIN
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ AADHAAR_FORMAT = ['############'].freeze
9
+
10
+ # REF: https://en.wikipedia.org/wiki/Aadhaar
11
+ def aadhaar
12
+ FFaker.numerify(AADHAAR_FORMAT)
13
+ end
14
+ end
15
+ end
@@ -10,7 +10,7 @@ module FFaker
10
10
  def rrn
11
11
  birth = fetch_sample(Date.new(1970, 1, 1)..Date.new(1999, 12, 31)).strftime('%y%d%m')
12
12
  sex = fetch_sample([1, 2])
13
- loc = FFaker.numerify("#{fetch_sample([*'00'..'95'])}###")
13
+ loc = FFaker.numerify("#{fetch_sample(Array('00'..'95'))}###")
14
14
  a, b, c, d, e, f, g, h, i, j, k, l = "#{birth}#{sex}#{loc}".split(//).map(&:to_i)
15
15
  checksum = (11 - (2 * a + 3 * b + 4 * c + 5 * d + 6 * e + 7 * f + 8 * g + 9 * h + 2 * i + 3 * j + 4 * k + 5 * l) % 11) % 10
16
16
  "#{birth}-#{sex}#{loc}#{checksum}"
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/identification_es'
4
-
5
3
  module FFaker
6
4
  module IdentificationMX
7
5
  extend ModuleUtils
@@ -9,7 +7,7 @@ module FFaker
9
7
 
10
8
  CONSONANTS = %w[B C D F G H J K L M N P Q R S T V W X Y Z].freeze
11
9
  VOWELS = %w[A E I O U].freeze
12
- HOMOCLAVE = CONSONANTS + VOWELS + [*'0'..'9']
10
+ HOMOCLAVE = CONSONANTS + VOWELS + Array('0'..'9')
13
11
 
14
12
  # http://es.wikipedia.org/wiki/Registro_Federal_de_Contribuyentes_(M%C3%A9xico)
15
13
  # Registro Federal de Contribuyentes (R.F.C.) para persona física
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FFaker
4
+ module IdentificationTW
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ AREA_CODE = { a: 10, b: 11, c: 12, d: 13, e: 14, f: 15, g: 16, h: 17, i: 34, j: 18, k: 19, l: 20, m: 21, n: 22, o: 35, p: 23, q: 24, r: 25, s: 26, t: 27, u: 28, v: 29, w: 30, x: 31, y: 32, z: 33 }.freeze
9
+
10
+ # Identity Card Number
11
+ # https://en.wikipedia.org/wiki/National_identification_card_(Taiwan)#Identity_card_number
12
+ def id
13
+ letter = FFaker.letterify('?')
14
+ code = AREA_CODE[letter.to_sym]
15
+ gender = fetch_sample([1, 2])
16
+ serial = FFaker.numerify('#######')
17
+ a, b, c, d, e, f, g, h, i, j = "#{code}#{gender}#{serial}".split(//).map(&:to_i)
18
+
19
+ checksum = (9 * a + b + 2 * c + 3 * d + 4 * e + 5 * f + 6 * g + 7 * h + 8 * i + 9 * j) % 10
20
+ "#{letter.upcase}#{gender}#{serial}#{checksum}"
21
+ end
22
+ end
23
+ end
data/lib/ffaker/image.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'cgi'
3
4
  require 'tempfile'
4
5
  require 'open-uri'
5
6
 
@@ -18,11 +19,16 @@ module FFaker
18
19
  text_color = FFaker::Color.hex_code if text_color == :random
19
20
  text = CGI.escape(text.to_s)
20
21
 
21
- "https://via.placeholder.com/#{size}/#{bg_color}/#{text_color}.#{format}?text=#{text}"
22
+ "https://dummyimage.com/#{size}/#{bg_color}/#{text_color}.#{format}?text=#{text}"
22
23
  end
23
24
 
24
25
  def file(size = '300x300', format = 'png', bg_color = :random, text_color = :random, text = nil)
25
- download_file(url(size, format, bg_color, text_color, text))
26
+ uri = URI.parse(url(size, format, bg_color, text_color, text))
27
+ file = Tempfile.new('ffaker_image')
28
+ file.binmode
29
+ file << uri.open.read
30
+ file.close
31
+ File.new(file.path)
26
32
  end
27
33
 
28
34
  private
@@ -38,14 +44,5 @@ module FFaker
38
44
 
39
45
  raise ArgumentError, "Supported formats are #{SUPPORTED_FORMATS.join(', ')}"
40
46
  end
41
-
42
- def download_file(url)
43
- file = Tempfile.new('ffaker_image')
44
- file.binmode
45
- file << Kernel.open(url).read
46
- file.close
47
-
48
- File.new(file.path)
49
- end
50
47
  end
51
48
  end
@@ -5,7 +5,7 @@ module FFaker
5
5
  extend ModuleUtils
6
6
  extend self
7
7
 
8
- BYTE = [*'0'..'255'].freeze
8
+ BYTE = Array('0'..'255').freeze
9
9
  HOSTS = %w[gmail.com yahoo.com hotmail.com].freeze
10
10
  DISPOSABLE_HOSTS = %w[
11
11
  mailinator.com suremail.info spamherelots.com binkmail.com safetymail.info
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/internet'
4
-
5
3
  module FFaker
6
4
  module InternetSE
7
5
  include Internet
@@ -9,7 +7,7 @@ module FFaker
9
7
  extend ModuleUtils
10
8
  extend self
11
9
 
12
- BYTE = [*'0'..'255'].freeze
10
+ BYTE = Array('0'..'255').freeze
13
11
  HOSTS = %w[gmail.com yahoo.com hotmail.com spray.se passagen.se].freeze
14
12
  DOMAIN_SUFFIXES = %w[se nu com].freeze
15
13
  DISPOSABLE_HOSTS = %w[
@@ -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
@@ -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}"