faker 2.10.2 → 2.15.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 (219) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +323 -0
  3. data/README.md +27 -2
  4. data/lib/faker.rb +57 -25
  5. data/lib/faker/blockchain/aeternity.rb +4 -4
  6. data/lib/faker/books/dune.rb +15 -2
  7. data/lib/faker/books/lovecraft.rb +8 -4
  8. data/lib/faker/default/address.rb +35 -5
  9. data/lib/faker/default/bank.rb +80 -3
  10. data/lib/faker/default/barcode.rb +154 -0
  11. data/lib/faker/default/beer.rb +3 -3
  12. data/lib/faker/default/blood.rb +48 -0
  13. data/lib/faker/default/business.rb +1 -1
  14. data/lib/faker/default/camera.rb +46 -0
  15. data/lib/faker/default/cannabis.rb +80 -0
  16. data/lib/faker/default/chile_rut.rb +47 -3
  17. data/lib/faker/default/code.rb +98 -17
  18. data/lib/faker/default/commerce.rb +74 -11
  19. data/lib/faker/default/company.rb +78 -11
  20. data/lib/faker/default/compass.rb +135 -0
  21. data/lib/faker/default/computer.rb +63 -0
  22. data/lib/faker/default/construction.rb +54 -0
  23. data/lib/faker/default/cosmere.rb +90 -0
  24. data/lib/faker/default/crypto_coin.rb +45 -0
  25. data/lib/faker/default/date.rb +16 -12
  26. data/lib/faker/default/driving_licence.rb +65 -0
  27. data/lib/faker/default/drone.rb +332 -0
  28. data/lib/faker/default/faker_adjective.rb +35 -0
  29. data/lib/faker/default/file.rb +49 -0
  30. data/lib/faker/default/finance.rb +45 -0
  31. data/lib/faker/default/food.rb +1 -1
  32. data/lib/faker/default/funny_name.rb +45 -0
  33. data/lib/faker/default/gender.rb +1 -1
  34. data/lib/faker/default/hipster.rb +101 -4
  35. data/lib/faker/default/id_number.rb +88 -2
  36. data/lib/faker/default/internet.rb +68 -10
  37. data/lib/faker/default/internet_http.rb +48 -0
  38. data/lib/faker/default/invoice.rb +33 -6
  39. data/lib/faker/default/json.rb +59 -4
  40. data/lib/faker/default/lorem.rb +2 -2
  41. data/lib/faker/default/lorem_flickr.rb +65 -0
  42. data/lib/faker/default/lorem_pixel.rb +22 -0
  43. data/lib/faker/default/markdown.rb +89 -0
  44. data/lib/faker/default/measurement.rb +93 -2
  45. data/lib/faker/default/military.rb +26 -0
  46. data/lib/faker/default/mountain.rb +33 -0
  47. data/lib/faker/default/name.rb +98 -0
  48. data/lib/faker/default/nhs.rb +19 -0
  49. data/lib/faker/default/number.rb +6 -8
  50. data/lib/faker/default/omniauth.rb +107 -52
  51. data/lib/faker/default/phone_number.rb +88 -5
  52. data/lib/faker/default/placeholdit.rb +21 -0
  53. data/lib/faker/default/relationship.rb +1 -1
  54. data/lib/faker/default/slack_emoji.rb +81 -0
  55. data/lib/faker/default/south_africa.rb +90 -0
  56. data/lib/faker/default/space.rb +1 -1
  57. data/lib/faker/default/string.rb +19 -3
  58. data/lib/faker/default/stripe.rb +64 -3
  59. data/lib/faker/default/twitter.rb +35 -0
  60. data/lib/faker/default/types.rb +80 -0
  61. data/lib/faker/default/university.rb +45 -0
  62. data/lib/faker/default/vehicle.rb +184 -4
  63. data/lib/faker/default/verb.rb +45 -0
  64. data/lib/faker/default/world_cup.rb +4 -4
  65. data/lib/faker/fantasy/tolkien.rb +67 -0
  66. data/lib/faker/games/clash_of_clans.rb +48 -0
  67. data/lib/faker/games/control.rb +113 -0
  68. data/lib/faker/games/dnd.rb +136 -0
  69. data/lib/faker/games/elder_scrolls.rb +26 -0
  70. data/lib/faker/games/heroes.rb +13 -0
  71. data/lib/faker/games/heroes_of_the_storm.rb +16 -5
  72. data/lib/faker/games/minecraft.rb +113 -0
  73. data/lib/faker/games/street_fighter.rb +61 -0
  74. data/lib/faker/games/super_mario.rb +48 -0
  75. data/lib/faker/games/warhammer_fantasy.rb +74 -0
  76. data/lib/faker/games/world_of_warcraft.rb +26 -1
  77. data/lib/faker/japanese_media/conan.rb +48 -0
  78. data/lib/faker/japanese_media/doraemon.rb +48 -0
  79. data/lib/faker/japanese_media/dragon_ball.rb +26 -0
  80. data/lib/faker/japanese_media/naruto.rb +61 -0
  81. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  82. data/lib/faker/movies/departed.rb +49 -0
  83. data/lib/faker/movies/hobbit.rb +4 -4
  84. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  85. data/lib/faker/movies/lord_of_the_rings.rb +3 -3
  86. data/lib/faker/movies/movie.rb +13 -0
  87. data/lib/faker/movies/room.rb +63 -0
  88. data/lib/faker/movies/star_wars.rb +2 -2
  89. data/lib/faker/music/hiphop.rb +48 -0
  90. data/lib/faker/music/opera.rb +237 -1
  91. data/lib/faker/music/pearl_jam.rb +50 -0
  92. data/lib/faker/music/phish.rb +27 -1
  93. data/lib/faker/music/prince.rb +64 -0
  94. data/lib/faker/music/rush.rb +37 -0
  95. data/lib/faker/music/show.rb +49 -0
  96. data/lib/faker/quotes/chiquito.rb +80 -0
  97. data/lib/faker/quotes/quote.rb +80 -1
  98. data/lib/faker/quotes/rajnikanth.rb +26 -0
  99. data/lib/faker/quotes/shakespeare.rb +36 -0
  100. data/lib/faker/sports/volleyball.rb +74 -0
  101. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +13 -0
  102. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  103. data/lib/faker/tv_shows/buffy.rb +17 -4
  104. data/lib/faker/tv_shows/dr_who.rb +1 -1
  105. data/lib/faker/tv_shows/final_space.rb +51 -0
  106. data/lib/faker/tv_shows/futurama.rb +65 -0
  107. data/lib/faker/tv_shows/simpsons.rb +14 -0
  108. data/lib/faker/tv_shows/suits.rb +37 -0
  109. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +17 -4
  110. data/lib/faker/version.rb +1 -1
  111. data/lib/helpers/base58.rb +1 -1
  112. data/lib/helpers/char.rb +22 -27
  113. data/lib/helpers/unique_generator.rb +3 -2
  114. data/lib/locales/de-AT.yml +4 -2
  115. data/lib/locales/de-CH.yml +1696 -1
  116. data/lib/locales/de.yml +4 -2
  117. data/lib/locales/en-AU.yml +50 -10
  118. data/lib/locales/en-CA.yml +2 -0
  119. data/lib/locales/en-GB.yml +1 -1
  120. data/lib/locales/en-IND.yml +2 -1
  121. data/lib/locales/en-MS.yml +2 -1
  122. data/lib/locales/en-NEP.yml +4 -1
  123. data/lib/locales/en-NZ.yml +3 -1
  124. data/lib/locales/en-PAK.yml +2 -1
  125. data/lib/locales/en-SG.yml +2 -1
  126. data/lib/locales/en-US.yml +36 -10
  127. data/lib/locales/en-au-ocker.yml +2 -1
  128. data/lib/locales/en.yml +0 -3
  129. data/lib/locales/en/address.yml +2 -0
  130. data/lib/locales/en/adjective.yml +179 -0
  131. data/lib/locales/en/animal.yml +1 -1
  132. data/lib/locales/en/aqua_teen_hunger_force.yml +33 -1
  133. data/lib/locales/en/bank.yml +1 -1
  134. data/lib/locales/en/barcode.yml +24 -0
  135. data/lib/locales/en/big_bang_theory.yml +38 -0
  136. data/lib/locales/en/blood.yml +13 -0
  137. data/lib/locales/en/buffy.yml +1 -1
  138. data/lib/locales/en/camera.yml +611 -0
  139. data/lib/locales/en/chiquito.yml +64 -0
  140. data/lib/locales/en/clash_of_clan.yml +101 -0
  141. data/lib/locales/en/company.yml +2 -2
  142. data/lib/locales/en/computer.yml +36 -0
  143. data/lib/locales/en/conan.yml +171 -0
  144. data/lib/locales/en/control.yml +247 -0
  145. data/lib/locales/en/demographic.yml +218 -5
  146. data/lib/locales/en/departed.yml +50 -0
  147. data/lib/locales/en/dnd.yml +451 -0
  148. data/lib/locales/en/doraemon.yml +286 -0
  149. data/lib/locales/en/dota.yml +531 -63
  150. data/lib/locales/en/dragon_ball.yml +243 -1
  151. data/lib/locales/en/driving_license.yml +181 -0
  152. data/lib/locales/en/drone.yml +95 -0
  153. data/lib/locales/en/dune.yml +401 -131
  154. data/lib/locales/en/elder_scrolls.yml +583 -9
  155. data/lib/locales/en/fallout.yml +311 -133
  156. data/lib/locales/en/final_space.yml +37 -0
  157. data/lib/locales/en/finance.yml +53 -0
  158. data/lib/locales/en/fresh_prince_of_bel_air.yml +1 -1
  159. data/lib/locales/en/futurama.yml +344 -0
  160. data/lib/locales/en/half_life.yml +84 -3
  161. data/lib/locales/en/heroes.yml +408 -3
  162. data/lib/locales/en/heroes_of_the_storm.yml +131 -4
  163. data/lib/locales/en/house.yml +1 -1
  164. data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
  165. data/lib/locales/en/jack_handey.yml +54 -0
  166. data/lib/locales/en/league_of_legends.yml +285 -6
  167. data/lib/locales/en/military.yml +179 -5
  168. data/lib/locales/en/minecraft.yml +663 -0
  169. data/lib/locales/en/mountain.yml +158 -0
  170. data/lib/locales/en/movie.yml +192 -1
  171. data/lib/locales/en/music.yml +451 -29
  172. data/lib/locales/en/myst.yml +87 -31
  173. data/lib/locales/en/name.yml +6 -5
  174. data/lib/locales/en/naruto.yml +231 -0
  175. data/lib/locales/en/one_piece.yml +2 -2
  176. data/lib/locales/en/opera.yml +168 -0
  177. data/lib/locales/en/overwatch.yml +2650 -2622
  178. data/lib/locales/en/pearl_jam.yml +213 -0
  179. data/lib/locales/en/phish.yml +392 -1
  180. data/lib/locales/en/pokemon.yml +417 -4
  181. data/lib/locales/en/prince.yml +227 -0
  182. data/lib/locales/en/quote.yml +692 -163
  183. data/lib/locales/en/rajnikanth.yml +77 -0
  184. data/lib/locales/en/room.yml +68 -0
  185. data/lib/locales/en/rush.yml +32 -0
  186. data/lib/locales/en/show.yml +597 -0
  187. data/lib/locales/en/simpsons.yml +668 -0
  188. data/lib/locales/en/source.yml +30 -0
  189. data/lib/locales/en/star_trek.yml +1 -1
  190. data/lib/locales/en/star_wars.yml +568 -220
  191. data/lib/locales/en/street_fighter.yml +1524 -0
  192. data/lib/locales/en/studio_ghibli.yml +107 -0
  193. data/lib/locales/en/suits.yml +45 -0
  194. data/lib/locales/en/super_mario.yml +58 -0
  195. data/lib/locales/en/super_smash_bros.yml +16 -4
  196. data/lib/locales/en/tolkien.yml +2453 -0
  197. data/lib/locales/en/volleyball.yml +501 -0
  198. data/lib/locales/en/warhammer_fantasy.yml +582 -0
  199. data/lib/locales/en/witcher.yml +389 -7
  200. data/lib/locales/en/world_of_warcraft.yml +122 -4
  201. data/lib/locales/en/zelda.yml +962 -4
  202. data/lib/locales/es.yml +56 -0
  203. data/lib/locales/fi-FI.yml +1 -1
  204. data/lib/locales/fr-CA.yml +21 -5
  205. data/lib/locales/fr-CH.yml +2 -2
  206. data/lib/locales/fr.yml +8 -2
  207. data/lib/locales/id.yml +2 -1
  208. data/lib/locales/it.yml +2 -1
  209. data/lib/locales/ja.yml +5 -1
  210. data/lib/locales/ko.yml +94 -2
  211. data/lib/locales/nb-NO.yml +4 -2
  212. data/lib/locales/pt-BR.yml +2 -1
  213. data/lib/locales/pt.yml +3 -1
  214. data/lib/locales/ru.yml +3 -1
  215. data/lib/locales/sk.yml +4 -2
  216. data/lib/locales/uk.yml +2 -0
  217. metadata +89 -21
  218. data/lib/locales/en/hobbit.yml +0 -19
  219. data/lib/locales/en/lord_of_the_rings.yml +0 -6
@@ -3,43 +3,126 @@
3
3
  module Faker
4
4
  class PhoneNumber < Base
5
5
  class << self
6
+ ##
7
+ # Produces a random phone number in a random format (may or may not have a country code, extension and can have different dividers).
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::PhoneNumber.phone_number #=> "397.693.1309 x4321"
13
+ #
14
+ # @faker.version 0.3.0
6
15
  def phone_number
7
16
  parse('phone_number.formats')
8
17
  end
9
18
 
19
+ ##
20
+ # Produces a random cell phone number in a random format (may or may not have a country code and can have different dividers).
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::PhoneNumber.cell_phone #=> "(186)285-7925"
26
+ #
27
+ # @faker.version 1.0.0
10
28
  def cell_phone
11
29
  parse('cell_phone.formats')
12
30
  end
13
31
 
32
+ ##
33
+ # Produces a random country code.
34
+ #
35
+ # @return [String]
36
+ #
37
+ # @example
38
+ # Faker::PhoneNumber.country_code #=> "+20"
39
+ #
40
+ # @faker.version 1.9.2
14
41
  def country_code
15
42
  "+#{fetch('country_code')}"
16
43
  end
17
44
 
45
+ ##
46
+ # Produces a random phone number with country code.
47
+ #
48
+ # @return [String]
49
+ #
50
+ # @example
51
+ # Faker::PhoneNumber.phone_number_with_country_code #=> "+95 1-672-173-8153"
52
+ #
53
+ # @faker.version 1.9.2
18
54
  def phone_number_with_country_code
19
55
  "#{country_code} #{phone_number}"
20
56
  end
21
57
 
58
+ ##
59
+ # Produces a random cell phone number with country code.
60
+ #
61
+ # @return [String]
62
+ #
63
+ # @example
64
+ # Faker::PhoneNumber.cell_phone_with_country_code #=> "+974 (190) 987-9034"
65
+ #
66
+ # @faker.version 1.9.2
22
67
  def cell_phone_with_country_code
23
68
  "#{country_code} #{cell_phone}"
24
69
  end
25
70
 
26
- # US and Canada only
71
+ ##
72
+ # Produces a random phone number in e164 format.
73
+ #
74
+ # @return [String]
75
+ #
76
+ # @example
77
+ # Faker::PhoneNumber.cell_phone_in_e164 #=> "+944937040625"
78
+ #
79
+ # @faker.version 1.9.2
80
+ def cell_phone_in_e164
81
+ cell_phone_with_country_code.delete('^+0-9')
82
+ end
83
+
84
+ ##
85
+ # Produces a random US or Canada-based area code.
86
+ #
87
+ # @return [String]
88
+ #
89
+ # @example
90
+ # Faker::PhoneNumber.area_code #=> "201"
91
+ #
92
+ # @faker.version 1.3.0
27
93
  def area_code
28
94
  fetch('phone_number.area_code')
29
95
  rescue I18n::MissingTranslationData
30
96
  nil
31
97
  end
32
98
 
33
- # US and Canada only
99
+ ##
100
+ # Produces a random US or Canada-based exchange code.
101
+ #
102
+ # @return [String]
103
+ #
104
+ # @example
105
+ # Faker::PhoneNumber.exchange_code #=> "208"
106
+ #
107
+ # @faker.version 1.3.0
34
108
  def exchange_code
35
109
  fetch('phone_number.exchange_code')
36
110
  rescue I18n::MissingTranslationData
37
111
  nil
38
112
  end
39
113
 
40
- # US and Canada only
41
- # Can be used for both extensions and last four digits of phone number.
42
- # Since extensions can be of variable length, this method taks a length parameter
114
+ ##
115
+ # Produces a random US or Canada-based extension / subscriber number. Can be used for both extensions and last four digits of phone number.
116
+ #
117
+ # @param length [Integer] Speficies the length of the return value.
118
+ # @return [String]
119
+ #
120
+ # @example
121
+ # Faker::PhoneNumber.subscriber_number #=> "3873"
122
+ # Faker::PhoneNumber.subscriber_number(length: 2) #=> "39"
123
+ # Faker::PhoneNumber.extension #=> "3764"
124
+ #
125
+ # @faker.version 1.3.0
43
126
  def subscriber_number(legacy_length = NOT_GIVEN, length: 4)
44
127
  warn_for_deprecated_arguments do |keywords|
45
128
  keywords << :length if legacy_length != NOT_GIVEN
@@ -5,6 +5,27 @@ module Faker
5
5
  class << self
6
6
  SUPPORTED_FORMATS = %w[png jpg gif jpeg].freeze
7
7
 
8
+ ##
9
+ # Produces a random placeholder image from https://placehold.it.
10
+ #
11
+ # @param size [String] Specifies the image's size, dimensions separated by 'x'.
12
+ # @param format [String] Specifies the image's extension.
13
+ # @param background_color [String, Symbol] Specifies the background color, either in hexadecimal format (without #) or as :random.
14
+ # @param text_color [String, Symbol] Specifies the text color, either in hexadecimal format (without #) or as :random.
15
+ # @param text [String] Specifies a custom text to be used.
16
+ # @return [String]
17
+ #
18
+ # @example
19
+ # # Keyword arguments: size, format, background_color, text_color, text
20
+ # Faker::Placeholdit.image #=> "https://placehold.it/300x300.png"
21
+ # Faker::Placeholdit.image(size: '50x50') #=> "https://placehold.it/50x50.png"
22
+ # Faker::Placeholdit.image(size: '50x50', format: 'jpg') #=> "https://placehold.it/50x50.jpg"
23
+ # Faker::Placeholdit.image(size: '50x50', format: 'gif', background_color: 'ffffff') #=> "https://placehold.it/50x50.gif/ffffff"
24
+ # Faker::Placeholdit.image(size: '50x50', format: 'jpeg', background_color: :random) #=> "https://placehold.it/50x50.jpeg/39eba7"
25
+ # Faker::Placeholdit.image(size: '50x50', format: 'jpeg', background_color: 'ffffff', text_color: '000') #=> "https://placehold.it/50x50.jpeg/ffffff/000"
26
+ # Faker::Placeholdit.image(size: '50x50', format: 'jpg', background_color: 'ffffff', text_color: '000', text: 'Some Custom Text') #=> "https://placehold.it/50x50.jpg/ffffff/000?text=Some Custom Text"
27
+ #
28
+ # @faker.version 1.6.0
8
29
  # rubocop:disable Metrics/ParameterLists
9
30
  def image(legacy_size = NOT_GIVEN, legacy_format = NOT_GIVEN, legacy_background_color = NOT_GIVEN, legacy_text_color = NOT_GIVEN, legacy_text = NOT_GIVEN, size: '300x300', format: 'png', background_color: nil, text_color: nil, text: nil)
10
31
  # rubocop:enable Metrics/ParameterLists
@@ -32,7 +32,7 @@ module Faker
32
32
  end
33
33
  end
34
34
 
35
- fetch('relationship.familial.' + connection)
35
+ fetch("relationship.familial.#{connection}")
36
36
  end
37
37
 
38
38
  ##
@@ -3,38 +3,119 @@
3
3
  module Faker
4
4
  class SlackEmoji < Base
5
5
  class << self
6
+ ##
7
+ # Produces a random slack emoji from people category.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::SlackEmoji.people #=> ":sleepy:"
13
+ #
14
+ # @faker.version 1.5.0
6
15
  def people
7
16
  fetch('slack_emoji.people')
8
17
  end
9
18
 
19
+ ##
20
+ # Produces a random slack emoji from nature category.
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::SlackEmoji.nature #=> ":mount_fuji:"
26
+ #
27
+ # @faker.version 1.5.0
10
28
  def nature
11
29
  fetch('slack_emoji.nature')
12
30
  end
13
31
 
32
+ ##
33
+ # Produces a random slack emoji from food and drink category.
34
+ #
35
+ # @return [String]
36
+ #
37
+ # @example
38
+ # Faker::SlackEmoji.food_and_drink #=> ":beers:"
39
+ #
40
+ # @faker.version 1.5.0
14
41
  def food_and_drink
15
42
  fetch('slack_emoji.food_and_drink')
16
43
  end
17
44
 
45
+ ##
46
+ # Produces a random slack emoji from celebration category.
47
+ #
48
+ # @return [String]
49
+ #
50
+ # @example
51
+ # Faker::SlackEmoji.celebration #=> ":tada:"
52
+ #
53
+ # @faker.version 1.5.0
18
54
  def celebration
19
55
  fetch('slack_emoji.celebration')
20
56
  end
21
57
 
58
+ ##
59
+ # Produces a random slack emoji from activity category.
60
+ #
61
+ # @return [String]
62
+ #
63
+ # @example
64
+ # Faker::SlackEmoji.activity #=> ":soccer:"
65
+ #
66
+ # @faker.version 1.5.0
22
67
  def activity
23
68
  fetch('slack_emoji.activity')
24
69
  end
25
70
 
71
+ ##
72
+ # Produces a random slack emoji from travel and places category.
73
+ #
74
+ # @return [String]
75
+ #
76
+ # @example
77
+ # Faker::SlackEmoji.travel_and_places #=> ":metro:"
78
+ #
79
+ # @faker.version 1.5.0
26
80
  def travel_and_places
27
81
  fetch('slack_emoji.travel_and_places')
28
82
  end
29
83
 
84
+ ##
85
+ # Produces a random slack emoji from objects and symbols category.
86
+ #
87
+ # @return [String]
88
+ #
89
+ # @example
90
+ # Faker::SlackEmoji.objects_and_symbols #=> ":id:"
91
+ #
92
+ # @faker.version 1.5.0
30
93
  def objects_and_symbols
31
94
  fetch('slack_emoji.objects_and_symbols')
32
95
  end
33
96
 
97
+ ##
98
+ # Produces a random slack emoji from custom category.
99
+ #
100
+ # @return [String]
101
+ #
102
+ # @example
103
+ # Faker::SlackEmoji.custom #=> ":slack:"
104
+ #
105
+ # @faker.version 1.5.0
34
106
  def custom
35
107
  fetch('slack_emoji.custom')
36
108
  end
37
109
 
110
+ ##
111
+ # Produces a random slack emoji from any category.
112
+ #
113
+ # @return [String]
114
+ #
115
+ # @example
116
+ # Faker::SlackEmoji.emoji #=> ":pizza:"
117
+ #
118
+ # @faker.version 1.5.0
38
119
  def emoji
39
120
  parse('slack_emoji.emoji')
40
121
  end
@@ -3,46 +3,136 @@
3
3
  module Faker
4
4
  class SouthAfrica < Base
5
5
  class << self
6
+ ##
7
+ # Produces a South African ID number.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::SouthAfrica.id_number #=> "6110311856083"
13
+ #
14
+ # @faker.version 1.9.2
6
15
  def id_number
7
16
  Faker::IDNumber.south_african_id_number
8
17
  end
9
18
 
19
+ ##
20
+ # Produces a valid South African ID number
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::SouthAfrica.valid_id_number #=> "6110311856083"
26
+ #
27
+ # @faker.version 1.9.2
10
28
  def valid_id_number
11
29
  Faker::IDNumber.valid_south_african_id_number
12
30
  end
13
31
 
32
+ ##
33
+ # Produces an invalid South African ID number
34
+ #
35
+ # @return [String]
36
+ #
37
+ # @example
38
+ # Faker::SouthAfrica.invalid_id_number #=> "7018356904081"
39
+ #
40
+ # @faker.version 1.9.2
14
41
  def invalid_id_number
15
42
  Faker::IDNumber.invalid_south_african_id_number
16
43
  end
17
44
 
45
+ ##
46
+ # Produces a South African phone number.
47
+ #
48
+ # @return [String]
49
+ #
50
+ # @example
51
+ # Faker::SouthAfrica.phone_number #=> "010 788 5009"
52
+ #
53
+ # @faker.version 1.9.2
18
54
  def phone_number
19
55
  with_locale 'en-ZA' do
20
56
  Faker::PhoneNumber.phone_number
21
57
  end
22
58
  end
23
59
 
60
+ ##
61
+ # Produces a South African cell phone number.
62
+ #
63
+ # @return [String]
64
+ #
65
+ # @example
66
+ # Faker::SouthAfrica.cell_phone #=> "082 946 7470"
67
+ #
68
+ # @faker.version 1.9.2
24
69
  def cell_phone
25
70
  with_locale 'en-ZA' do
26
71
  Faker::PhoneNumber.cell_phone
27
72
  end
28
73
  end
29
74
 
75
+ ##
76
+ # Produces a South African private company registration number.
77
+ #
78
+ # @return [String]
79
+ #
80
+ # @example
81
+ # Faker::SouthAfrica.pty_ltd_registration_number #=> "5301/714689/07"
82
+ #
83
+ # @faker.version 1.9.2
30
84
  def pty_ltd_registration_number
31
85
  Faker::Company.south_african_pty_ltd_registration_number
32
86
  end
33
87
 
88
+ ##
89
+ # Produces a South African close corporation registration number.
90
+ #
91
+ # @return [String]
92
+ #
93
+ # @example
94
+ # Faker::SouthAfrica.close_corporation_registration_number #=> "CK74/7585/23"
95
+ #
96
+ # @faker.version 1.9.2
34
97
  def close_corporation_registration_number
35
98
  Faker::Company.south_african_close_corporation_registration_number
36
99
  end
37
100
 
101
+ ##
102
+ # Produces a South African listed company registration number.
103
+ #
104
+ # @return [String]
105
+ #
106
+ # @example
107
+ # Faker::SouthAfrica.listed_company_registration_number #=> "7039/3135/06"
108
+ #
109
+ # @faker.version 1.9.2
38
110
  def listed_company_registration_number
39
111
  Faker::Company.south_african_listed_company_registration_number
40
112
  end
41
113
 
114
+ ##
115
+ # Produces a South African trust registration number.
116
+ #
117
+ # @return [String]
118
+ #
119
+ # @example
120
+ # Faker::SouthAfrica.trust_registration_number #=> "IT38/6489900"
121
+ #
122
+ # @faker.version 1.9.2
42
123
  def trust_registration_number
43
124
  Faker::Company.south_african_trust_registration_number
44
125
  end
45
126
 
127
+ ##
128
+ # Produces a South African VAT number.
129
+ #
130
+ # @return [String]
131
+ #
132
+ # @example
133
+ # Faker::SouthAfrica.vat_number #=> "ZA79494416181"
134
+ #
135
+ # @faker.version 1.9.2
46
136
  def vat_number
47
137
  Faker::Finance.vat_number(country: 'ZA')
48
138
  end
@@ -158,7 +158,7 @@ module Faker
158
158
  #
159
159
  # @faker.version 1.6.4
160
160
  def distance_measurement
161
- rand(10..100).to_s + ' ' + fetch('space.distance_measurement')
161
+ "#{rand(10..100)} #{fetch('space.distance_measurement')}"
162
162
  end
163
163
 
164
164
  ##
@@ -3,6 +3,22 @@
3
3
  module Faker
4
4
  class String < Base
5
5
  class << self
6
+ ##
7
+ # Produces a random UTF-8 string with optional nested length selectors.
8
+ #
9
+ # @param length [Integer, Range, Array<Integer, Range, nil>] The length of produced string and/or specific UTF-8 characters to use.
10
+ # @return [String]
11
+ #
12
+ # @example
13
+ # rubocop:disable Style/AsciiComments
14
+ # Faker::String.random #=> "3 뇦\u0017&y\u{3A109}$8^4* 녹豿4좘툢ꔾ쉙6ɉ\uA6 8TN畀챵|\"3쇤Ŵ"
15
+ # Faker::String.random(length: 4) #=> "⼨%0*"
16
+ # Faker::String.random(length: 3..12) #=> "\u{69FDC};秨툫"
17
+ # Faker::String.random(length: [0, 6]) #=> "I轤𣴒P溟L"
18
+ # Faker::String.random(length: [1, (2..5), [3, 6], nil]) #=> "葓L#ћ"
19
+ # rubocop:enable Style/AsciiComments
20
+ #
21
+ # @faker.version 1.9.0
6
22
  def random(legacy_length = NOT_GIVEN, length: 32)
7
23
  warn_for_deprecated_arguments do |keywords|
8
24
  keywords << :length if legacy_length != NOT_GIVEN
@@ -38,9 +54,9 @@ module Faker
38
54
 
39
55
  def utf8character
40
56
  sample([
41
- rand(32..90), # latin alphabet
42
- rand(128), # 7-bit ASCII
43
- rand(0xd800), # utf-8 codepoints below utf-16 surrogate halves
57
+ rand(32..90), # latin alphabet
58
+ rand(128), # 7-bit ASCII
59
+ rand(0xd800), # utf-8 codepoints below utf-16 surrogate halves
44
60
  rand(57_344..1_114_111) # utf-8 codepoints above utf-16 surrogate halves
45
61
  ]).chr(Encoding::UTF_8)
46
62
  end