faker 2.11.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 (277) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +421 -13
  3. data/History.md +4 -4
  4. data/README.md +33 -3
  5. data/lib/faker.rb +28 -23
  6. data/lib/faker/blockchain/aeternity.rb +4 -4
  7. data/lib/faker/blockchain/bitcoin.rb +2 -2
  8. data/lib/faker/blockchain/tezos.rb +30 -2
  9. data/lib/faker/books/dune.rb +15 -2
  10. data/lib/faker/books/lovecraft.rb +8 -4
  11. data/lib/faker/creature/bird.rb +203 -0
  12. data/lib/faker/default/address.rb +35 -5
  13. data/lib/faker/default/app.rb +1 -1
  14. data/lib/faker/default/avatar.rb +1 -1
  15. data/lib/faker/default/bank.rb +96 -3
  16. data/lib/faker/default/barcode.rb +165 -0
  17. data/lib/faker/default/beer.rb +3 -3
  18. data/lib/faker/default/blood.rb +48 -0
  19. data/lib/faker/default/business.rb +1 -1
  20. data/lib/faker/default/camera.rb +46 -0
  21. data/lib/faker/default/cannabis.rb +10 -0
  22. data/lib/faker/default/chile_rut.rb +47 -3
  23. data/lib/faker/default/chuck_norris.rb +1 -0
  24. data/lib/faker/default/code.rb +98 -17
  25. data/lib/faker/default/commerce.rb +74 -11
  26. data/lib/faker/default/company.rb +96 -11
  27. data/lib/faker/default/compass.rb +135 -0
  28. data/lib/faker/default/computer.rb +63 -0
  29. data/lib/faker/default/construction.rb +54 -0
  30. data/lib/faker/default/cosmere.rb +90 -0
  31. data/lib/faker/default/crypto.rb +17 -4
  32. data/lib/faker/default/crypto_coin.rb +45 -0
  33. data/lib/faker/default/date.rb +16 -12
  34. data/lib/faker/default/driving_licence.rb +67 -1
  35. data/lib/faker/default/drone.rb +332 -0
  36. data/lib/faker/default/educator.rb +13 -0
  37. data/lib/faker/default/faker_adjective.rb +35 -0
  38. data/lib/faker/default/file.rb +53 -2
  39. data/lib/faker/default/finance.rb +45 -0
  40. data/lib/faker/default/food.rb +1 -1
  41. data/lib/faker/default/gender.rb +1 -1
  42. data/lib/faker/default/hipster.rb +107 -10
  43. data/lib/faker/default/id_number.rb +122 -2
  44. data/lib/faker/default/internet.rb +266 -12
  45. data/lib/faker/default/internet_http.rb +48 -0
  46. data/lib/faker/default/invoice.rb +33 -6
  47. data/lib/faker/default/json.rb +61 -5
  48. data/lib/faker/default/lorem.rb +160 -5
  49. data/lib/faker/default/lorem_flickr.rb +67 -7
  50. data/lib/faker/default/lorem_pixel.rb +23 -0
  51. data/lib/faker/default/markdown.rb +91 -0
  52. data/lib/faker/default/measurement.rb +93 -2
  53. data/lib/faker/default/military.rb +26 -0
  54. data/lib/faker/default/mountain.rb +33 -0
  55. data/lib/faker/default/name.rb +98 -0
  56. data/lib/faker/default/nhs.rb +19 -0
  57. data/lib/faker/default/number.rb +28 -13
  58. data/lib/faker/default/omniauth.rb +62 -14
  59. data/lib/faker/default/phone_number.rb +88 -5
  60. data/lib/faker/default/placeholdit.rb +23 -1
  61. data/lib/faker/default/relationship.rb +1 -1
  62. data/lib/faker/default/science.rb +26 -0
  63. data/lib/faker/default/slack_emoji.rb +81 -0
  64. data/lib/faker/default/south_africa.rb +90 -0
  65. data/lib/faker/default/space.rb +1 -1
  66. data/lib/faker/default/string.rb +20 -3
  67. data/lib/faker/default/stripe.rb +64 -3
  68. data/lib/faker/default/tea.rb +41 -0
  69. data/lib/faker/default/twitter.rb +35 -0
  70. data/lib/faker/default/types.rb +84 -3
  71. data/lib/faker/default/university.rb +45 -0
  72. data/lib/faker/default/vehicle.rb +184 -4
  73. data/lib/faker/default/verb.rb +45 -0
  74. data/lib/faker/default/world_cup.rb +4 -4
  75. data/lib/faker/fantasy/tolkien.rb +67 -0
  76. data/lib/faker/games/clash_of_clans.rb +48 -0
  77. data/lib/faker/games/control.rb +113 -0
  78. data/lib/faker/games/dnd.rb +136 -0
  79. data/lib/faker/games/elder_scrolls.rb +26 -0
  80. data/lib/faker/games/heroes.rb +13 -0
  81. data/lib/faker/games/heroes_of_the_storm.rb +16 -5
  82. data/lib/faker/games/minecraft.rb +113 -0
  83. data/lib/faker/games/street_fighter.rb +61 -0
  84. data/lib/faker/games/super_mario.rb +48 -0
  85. data/lib/faker/games/touhou.rb +75 -0
  86. data/lib/faker/games/warhammer_fantasy.rb +74 -0
  87. data/lib/faker/games/witcher.rb +39 -0
  88. data/lib/faker/games/world_of_warcraft.rb +26 -1
  89. data/lib/faker/japanese_media/conan.rb +48 -0
  90. data/lib/faker/japanese_media/doraemon.rb +48 -0
  91. data/lib/faker/japanese_media/dragon_ball.rb +26 -0
  92. data/lib/faker/japanese_media/naruto.rb +61 -0
  93. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  94. data/lib/faker/movies/departed.rb +49 -0
  95. data/lib/faker/movies/hobbit.rb +4 -4
  96. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  97. data/lib/faker/movies/lord_of_the_rings.rb +3 -3
  98. data/lib/faker/movies/movie.rb +13 -0
  99. data/lib/faker/movies/room.rb +63 -0
  100. data/lib/faker/movies/star_wars.rb +74 -2
  101. data/lib/faker/music/hiphop.rb +48 -0
  102. data/lib/faker/music/music.rb +12 -0
  103. data/lib/faker/music/opera.rb +237 -1
  104. data/lib/faker/music/pearl_jam.rb +50 -0
  105. data/lib/faker/music/phish.rb +27 -1
  106. data/lib/faker/music/prince.rb +64 -0
  107. data/lib/faker/music/rock_band.rb +12 -0
  108. data/lib/faker/music/rush.rb +37 -0
  109. data/lib/faker/music/show.rb +49 -0
  110. data/lib/faker/quotes/quote.rb +80 -1
  111. data/lib/faker/quotes/rajnikanth.rb +1 -0
  112. data/lib/faker/quotes/shakespeare.rb +70 -0
  113. data/lib/faker/sports/volleyball.rb +74 -0
  114. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +13 -0
  115. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  116. data/lib/faker/tv_shows/buffy.rb +17 -4
  117. data/lib/faker/tv_shows/dr_who.rb +1 -1
  118. data/lib/faker/tv_shows/final_space.rb +51 -0
  119. data/lib/faker/tv_shows/futurama.rb +65 -0
  120. data/lib/faker/tv_shows/simpsons.rb +14 -0
  121. data/lib/faker/tv_shows/suits.rb +37 -0
  122. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +17 -4
  123. data/lib/faker/version.rb +1 -1
  124. data/lib/helpers/base58.rb +1 -1
  125. data/lib/helpers/char.rb +22 -27
  126. data/lib/helpers/unique_generator.rb +0 -2
  127. data/lib/locales/de-AT.yml +4 -2
  128. data/lib/locales/de-CH.yml +1696 -1
  129. data/lib/locales/de.yml +4 -2
  130. data/lib/locales/en-AU.yml +50 -10
  131. data/lib/locales/en-CA.yml +2 -0
  132. data/lib/locales/en-GB.yml +1 -1
  133. data/lib/locales/en-IND.yml +2 -1
  134. data/lib/locales/en-MS.yml +2 -1
  135. data/lib/locales/en-NEP.yml +4 -1
  136. data/lib/locales/en-NZ.yml +3 -1
  137. data/lib/locales/en-PAK.yml +2 -1
  138. data/lib/locales/en-SG.yml +2 -1
  139. data/lib/locales/en-US.yml +37 -11
  140. data/lib/locales/en-au-ocker.yml +2 -1
  141. data/lib/locales/en.yml +0 -3
  142. data/lib/locales/en/address.yml +2 -0
  143. data/lib/locales/en/adjective.yml +179 -0
  144. data/lib/locales/en/animal.yml +1 -1
  145. data/lib/locales/en/aqua_teen_hunger_force.yml +33 -1
  146. data/lib/locales/en/bank.yml +1 -1
  147. data/lib/locales/en/barcode.yml +24 -0
  148. data/lib/locales/en/big_bang_theory.yml +38 -0
  149. data/lib/locales/en/bird.yml +1281 -0
  150. data/lib/locales/en/blood.yml +13 -0
  151. data/lib/locales/en/book.yml +487 -3
  152. data/lib/locales/en/buffy.yml +1 -1
  153. data/lib/locales/en/camera.yml +611 -0
  154. data/lib/locales/en/clash_of_clan.yml +101 -0
  155. data/lib/locales/en/company.yml +2 -2
  156. data/lib/locales/en/computer.yml +36 -0
  157. data/lib/locales/en/conan.yml +171 -0
  158. data/lib/locales/en/control.yml +247 -0
  159. data/lib/locales/en/demographic.yml +218 -5
  160. data/lib/locales/en/departed.yml +50 -0
  161. data/lib/locales/en/device.yml +112 -4
  162. data/lib/locales/en/dnd.yml +451 -0
  163. data/lib/locales/en/doraemon.yml +286 -0
  164. data/lib/locales/en/dota.yml +531 -63
  165. data/lib/locales/en/dragon_ball.yml +243 -1
  166. data/lib/locales/en/driving_license.yml +181 -0
  167. data/lib/locales/en/drone.yml +95 -0
  168. data/lib/locales/en/dune.yml +270 -131
  169. data/lib/locales/en/educator.yml +6 -0
  170. data/lib/locales/en/elder_scrolls.yml +583 -9
  171. data/lib/locales/en/fallout.yml +311 -133
  172. data/lib/locales/en/final_space.yml +37 -0
  173. data/lib/locales/en/finance.yml +53 -0
  174. data/lib/locales/en/football.yml +3 -3
  175. data/lib/locales/en/fresh_prince_of_bel_air.yml +1 -1
  176. data/lib/locales/en/futurama.yml +344 -0
  177. data/lib/locales/en/half_life.yml +84 -3
  178. data/lib/locales/en/heroes.yml +408 -3
  179. data/lib/locales/en/heroes_of_the_storm.yml +131 -4
  180. data/lib/locales/en/house.yml +1 -1
  181. data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
  182. data/lib/locales/en/jack_handey.yml +54 -0
  183. data/lib/locales/en/league_of_legends.yml +285 -6
  184. data/lib/locales/en/lebowski.yml +1 -1
  185. data/lib/locales/en/lovecraft.yml +76 -6
  186. data/lib/locales/en/military.yml +179 -5
  187. data/lib/locales/en/minecraft.yml +663 -0
  188. data/lib/locales/en/mountain.yml +158 -0
  189. data/lib/locales/en/movie.yml +192 -1
  190. data/lib/locales/en/music.yml +461 -29
  191. data/lib/locales/en/myst.yml +87 -31
  192. data/lib/locales/en/name.yml +5 -4
  193. data/lib/locales/en/naruto.yml +231 -0
  194. data/lib/locales/en/one_piece.yml +2 -2
  195. data/lib/locales/en/opera.yml +168 -0
  196. data/lib/locales/en/overwatch.yml +2650 -2622
  197. data/lib/locales/en/pearl_jam.yml +213 -0
  198. data/lib/locales/en/phish.yml +392 -1
  199. data/lib/locales/en/pokemon.yml +417 -4
  200. data/lib/locales/en/prince.yml +227 -0
  201. data/lib/locales/en/quote.yml +692 -163
  202. data/lib/locales/en/rock_band.yml +1 -0
  203. data/lib/locales/en/room.yml +68 -0
  204. data/lib/locales/en/rush.yml +32 -0
  205. data/lib/locales/en/science.yml +355 -3
  206. data/lib/locales/en/shakespeare.yml +21 -24
  207. data/lib/locales/en/show.yml +597 -0
  208. data/lib/locales/en/simpsons.yml +668 -0
  209. data/lib/locales/en/source.yml +30 -0
  210. data/lib/locales/en/space.yml +1 -1
  211. data/lib/locales/en/star_trek.yml +1 -1
  212. data/lib/locales/en/star_wars.yml +568 -220
  213. data/lib/locales/en/street_fighter.yml +1524 -0
  214. data/lib/locales/en/studio_ghibli.yml +107 -0
  215. data/lib/locales/en/suits.yml +45 -0
  216. data/lib/locales/en/super_mario.yml +58 -0
  217. data/lib/locales/en/super_smash_bros.yml +18 -4
  218. data/lib/locales/en/tea.yml +172 -0
  219. data/lib/locales/en/tolkien.yml +2453 -0
  220. data/lib/locales/en/touhou.yml +839 -0
  221. data/lib/locales/en/volleyball.yml +501 -0
  222. data/lib/locales/en/warhammer_fantasy.yml +582 -0
  223. data/lib/locales/en/witcher.yml +426 -7
  224. data/lib/locales/en/world_of_warcraft.yml +122 -4
  225. data/lib/locales/en/zelda.yml +962 -4
  226. data/lib/locales/es-AR.yml +4603 -0
  227. data/lib/locales/es.yml +56 -0
  228. data/lib/locales/fi-FI.yml +1 -1
  229. data/lib/locales/fr-CA.yml +21 -5
  230. data/lib/locales/fr-CH.yml +2 -2
  231. data/lib/locales/fr.yml +1 -113
  232. data/lib/locales/fr/address.yml +21 -0
  233. data/lib/locales/fr/book.yml +7 -0
  234. data/lib/locales/fr/color.yml +4 -0
  235. data/lib/locales/fr/company.yml +17 -0
  236. data/lib/locales/fr/compass.yml +23 -0
  237. data/lib/locales/fr/demographic.yml +4 -0
  238. data/lib/locales/fr/gender.yml +6 -0
  239. data/lib/locales/fr/internet.yml +5 -0
  240. data/lib/locales/fr/lorem.yml +5 -0
  241. data/lib/locales/fr/measurement.yml +7 -0
  242. data/lib/locales/fr/name.yml +21 -0
  243. data/lib/locales/fr/phone_number.yml +7 -0
  244. data/lib/locales/fr/pokemon.yml +9 -0
  245. data/lib/locales/id.yml +3 -1
  246. data/lib/locales/it.yml +2 -1
  247. data/lib/locales/ja/README.md +13 -0
  248. data/lib/locales/ja/address.yml +17 -0
  249. data/lib/locales/ja/ancient.yml +4 -0
  250. data/lib/locales/ja/bank.yml +4 -0
  251. data/lib/locales/ja/book.yml +7 -0
  252. data/lib/locales/ja/coffee.yml +4 -0
  253. data/lib/locales/ja/color.yml +4 -0
  254. data/lib/locales/ja/commerce.yml +11 -0
  255. data/lib/locales/ja/company.yml +8 -0
  256. data/lib/locales/ja/creature.yml +9 -0
  257. data/lib/locales/ja/food.yml +4 -0
  258. data/lib/locales/ja/games.yml +18 -0
  259. data/lib/locales/ja/gender.yml +4 -0
  260. data/lib/locales/ja/lorem.yml +9 -0
  261. data/lib/locales/ja/name.yml +13 -0
  262. data/lib/locales/ja/phone_number.yml +7 -0
  263. data/lib/locales/ja/restaurant.yml +11 -0
  264. data/lib/locales/ja/space.yml +5 -0
  265. data/lib/locales/ja/subscription.yml +8 -0
  266. data/lib/locales/ja/university.yml +9 -0
  267. data/lib/locales/ko.yml +94 -2
  268. data/lib/locales/nb-NO.yml +4 -2
  269. data/lib/locales/pt-BR.yml +3 -1
  270. data/lib/locales/pt.yml +3 -1
  271. data/lib/locales/ru.yml +42 -1
  272. data/lib/locales/sk.yml +4 -2
  273. data/lib/locales/uk.yml +2 -0
  274. metadata +133 -24
  275. data/lib/locales/en/hobbit.yml +0 -19
  276. data/lib/locales/en/lord_of_the_rings.yml +0 -6
  277. data/lib/locales/ja.yml +0 -101
@@ -6,8 +6,29 @@ module Faker
6
6
  SUPPORTED_FORMATS = %w[png jpg gif jpeg].freeze
7
7
 
8
8
  # rubocop:disable Metrics/ParameterLists
9
+
10
+ ##
11
+ # Produces a random placeholder image from https://placehold.it.
12
+ #
13
+ # @param size [String] Specifies the image's size, dimensions separated by 'x'.
14
+ # @param format [String] Specifies the image's extension.
15
+ # @param background_color [String, Symbol] Specifies the background color, either in hexadecimal format (without #) or as :random.
16
+ # @param text_color [String, Symbol] Specifies the text color, either in hexadecimal format (without #) or as :random.
17
+ # @param text [String] Specifies a custom text to be used.
18
+ # @return [String]
19
+ #
20
+ # @example
21
+ # # Keyword arguments: size, format, background_color, text_color, text
22
+ # Faker::Placeholdit.image #=> "https://placehold.it/300x300.png"
23
+ # Faker::Placeholdit.image(size: '50x50') #=> "https://placehold.it/50x50.png"
24
+ # Faker::Placeholdit.image(size: '50x50', format: 'jpg') #=> "https://placehold.it/50x50.jpg"
25
+ # Faker::Placeholdit.image(size: '50x50', format: 'gif', background_color: 'ffffff') #=> "https://placehold.it/50x50.gif/ffffff"
26
+ # Faker::Placeholdit.image(size: '50x50', format: 'jpeg', background_color: :random) #=> "https://placehold.it/50x50.jpeg/39eba7"
27
+ # Faker::Placeholdit.image(size: '50x50', format: 'jpeg', background_color: 'ffffff', text_color: '000') #=> "https://placehold.it/50x50.jpeg/ffffff/000"
28
+ # 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"
29
+ #
30
+ # @faker.version 1.6.0
9
31
  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
- # rubocop:enable Metrics/ParameterLists
11
32
  warn_for_deprecated_arguments do |keywords|
12
33
  keywords << :size if legacy_size != NOT_GIVEN
13
34
  keywords << :format if legacy_format != NOT_GIVEN
@@ -30,6 +51,7 @@ module Faker
30
51
  image_url += "?text=#{text}" if text
31
52
  image_url
32
53
  end
54
+ # rubocop:enable Metrics/ParameterLists
33
55
 
34
56
  private
35
57
 
@@ -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
  ##
@@ -29,6 +29,32 @@ module Faker
29
29
  fetch('science.element_symbol')
30
30
  end
31
31
 
32
+ ##
33
+ # Produces the state of an element.
34
+ #
35
+ # @return [String]
36
+ #
37
+ # @example
38
+ # Faker::Science.element_state #=> "Liquid"
39
+ #
40
+ # @faker.version next
41
+ def element_state
42
+ fetch('science.element_state')
43
+ end
44
+
45
+ ##
46
+ # Produces the subcategory of an element.
47
+ #
48
+ # @return [String]
49
+ #
50
+ # @example
51
+ # Faker::Science.element_subcategory #=> "Reactive nonmetal"
52
+ #
53
+ # @faker.version next
54
+ def element_subcategory
55
+ fetch('science.element_subcategory')
56
+ end
57
+
32
58
  ##
33
59
  # Produces the name of a scientist.
34
60
  #
@@ -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
+ # rubocop:disable Style/AsciiComments
7
+
8
+ ##
9
+ # Produces a random UTF-8 string with optional nested length selectors.
10
+ #
11
+ # @param length [Integer, Range, Array<Integer, Range, nil>] The length of produced string and/or specific UTF-8 characters to use.
12
+ # @return [String]
13
+ #
14
+ # @example
15
+ # Faker::String.random #=> "3 뇦\u0017&y\u{3A109}$8^4* 녹豿4좘툢ꔾ쉙6ɉ\uA6 8TN畀챵|\"3쇤Ŵ"
16
+ # Faker::String.random(length: 4) #=> "⼨%0*"
17
+ # Faker::String.random(length: 3..12) #=> "\u{69FDC};秨툫"
18
+ # Faker::String.random(length: [0, 6]) #=> "I轤𣴒P溟L"
19
+ # Faker::String.random(length: [1, (2..5), [3, 6], nil]) #=> "葓L#ћ"
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
@@ -10,6 +26,7 @@ module Faker
10
26
 
11
27
  utf8string select_a length
12
28
  end
29
+ # rubocop:enable Style/AsciiComments
13
30
 
14
31
  private
15
32
 
@@ -38,9 +55,9 @@ module Faker
38
55
 
39
56
  def utf8character
40
57
  sample([
41
- rand(32..90), # latin alphabet
42
- rand(128), # 7-bit ASCII
43
- rand(0xd800), # utf-8 codepoints below utf-16 surrogate halves
58
+ rand(32..90), # latin alphabet
59
+ rand(128), # 7-bit ASCII
60
+ rand(0xd800), # utf-8 codepoints below utf-16 surrogate halves
44
61
  rand(57_344..1_114_111) # utf-8 codepoints above utf-16 surrogate halves
45
62
  ]).chr(Encoding::UTF_8)
46
63
  end
@@ -3,6 +3,17 @@
3
3
  module Faker
4
4
  class Stripe < Base
5
5
  class << self
6
+ ##
7
+ # Produces a random valid card number.
8
+ #
9
+ # @param card_type [String] Specific valid card type.
10
+ # @return [String]
11
+ #
12
+ # @example
13
+ # Faker::Stripe.valid_card #=> "4242424242424242"
14
+ # Faker::Stripe.valid_card(card_type: "visa_debit") #=> "4000056655665556"
15
+ #
16
+ # @faker.version 1.9.0
6
17
  def valid_card(legacy_card_type = NOT_GIVEN, card_type: nil)
7
18
  warn_for_deprecated_arguments do |keywords|
8
19
  keywords << :card_type if legacy_card_type != NOT_GIVEN
@@ -19,9 +30,20 @@ module Faker
19
30
  end
20
31
  end
21
32
 
22
- fetch('stripe.valid_cards.' + card_type)
33
+ fetch("stripe.valid_cards.#{card_type}")
23
34
  end
24
35
 
36
+ ##
37
+ # Produces a random valid Stripe token.
38
+ #
39
+ # @param card_type [String] Specific valid card type.
40
+ # @return [String]
41
+ #
42
+ # @example
43
+ # Faker::Stripe.valid_token #=> "tok_visa"
44
+ # Faker::Stripe.valid_token(card_type: "mc_debit") #=> "tok_mastercard_debit"
45
+ #
46
+ # @faker.version 1.9.0
25
47
  def valid_token(legacy_card_type = NOT_GIVEN, card_type: nil)
26
48
  warn_for_deprecated_arguments do |keywords|
27
49
  keywords << :card_type if legacy_card_type != NOT_GIVEN
@@ -38,9 +60,19 @@ module Faker
38
60
  end
39
61
  end
40
62
 
41
- fetch('stripe.valid_tokens.' + card_type)
63
+ fetch("stripe.valid_tokens.#{card_type}")
42
64
  end
43
65
 
66
+ ##
67
+ # Produces a random invalid card number.
68
+ #
69
+ # @return [String]
70
+ #
71
+ # @example
72
+ # Faker::Stripe.invalid_card #=> "4000000000000002"
73
+ # Faker::Stripe.invalid_card(card_error: "addressZipFail") #=> "4000000000000010"
74
+ #
75
+ # @faker.version 1.9.0
44
76
  def invalid_card(legacy_card_error = NOT_GIVEN, card_error: nil)
45
77
  warn_for_deprecated_arguments do |keywords|
46
78
  keywords << :card_error if legacy_card_error != NOT_GIVEN
@@ -57,18 +89,47 @@ module Faker
57
89
  end
58
90
  end
59
91
 
60
- fetch('stripe.invalid_cards.' + card_error)
92
+ fetch("stripe.invalid_cards.#{card_error}")
61
93
  end
62
94
 
95
+ ##
96
+ # Produces a random month in two digits format.
97
+ #
98
+ # @return [String]
99
+ #
100
+ # @example
101
+ # Faker::Stripe.month #=> "10"
102
+ #
103
+ # @faker.version 1.9.0
63
104
  def month
64
105
  format('%02d', rand_in_range(1, 12))
65
106
  end
66
107
 
108
+ ##
109
+ # Produces a random year that is always in the future.
110
+ #
111
+ # @return [String]
112
+ #
113
+ # @example
114
+ # Faker::Stripe.year #=> "2018" # This will always be a year in the future
115
+ #
116
+ # @faker.version 1.9.0
67
117
  def year
68
118
  start_year = ::Time.new.year + 1
69
119
  rand_in_range(start_year, start_year + 5).to_s
70
120
  end
71
121
 
122
+ ##
123
+ # Produces a random ccv number.
124
+ #
125
+ # @param card_type [String] Specific valid card type.
126
+ # @return [String]
127
+ #
128
+ # @example
129
+ # Faker::Stripe.ccv #=> "123"
130
+ # Faker::Stripe.ccv(card_type: "amex") #=> "1234"
131
+ #
132
+ # @faker.version 1.9.0
72
133
  def ccv(legacy_card_type = NOT_GIVEN, card_type: nil)
73
134
  warn_for_deprecated_arguments do |keywords|
74
135
  keywords << :card_type if legacy_card_type != NOT_GIVEN