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
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Internet
5
+ class HTTP < Base
6
+ STATUS_CODES = {
7
+ information: [100, 101, 102, 103],
8
+ successful: [200, 201, 202, 203, 204, 205, 206, 207, 208, 226],
9
+ redirect: [300, 301, 302, 303, 304, 305, 306, 307, 308],
10
+ client_error: [400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
11
+ 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428,
12
+ 429, 431, 451],
13
+ server_error: [500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511]
14
+ }.freeze
15
+
16
+ STATUS_CODES_GROUPS = STATUS_CODES.keys.freeze
17
+
18
+ class << self
19
+ ##
20
+ # Produces an HTTP status code
21
+ #
22
+ # @return [Integer]
23
+ #
24
+ # @example
25
+ # Faker::Internet::HTTP.status_code #=> 418
26
+ # @example
27
+ # Faker::Internet::HTTP.status_code(group: :information) #=> 102
28
+ # @example
29
+ # Faker::Internet::HTTP.status_code(group: :successful) #=> 200
30
+ # @example
31
+ # Faker::Internet::HTTP.status_code(group: :redirect) #=> 306
32
+ # @example
33
+ # Faker::Internet::HTTP.status_code(group: :client_error) #=> 451
34
+ # @example
35
+ # Faker::Internet::HTTP.status_code(group: :server_error) #=> 502
36
+ #
37
+ # @faker.version 2.13.0
38
+ def status_code(group: nil)
39
+ return STATUS_CODES[STATUS_CODES_GROUPS.sample].sample unless group
40
+
41
+ raise ArgumentError, 'Invalid HTTP status code group' unless STATUS_CODES_GROUPS.include?(group)
42
+
43
+ STATUS_CODES[group].sample
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -5,7 +5,18 @@ module Faker
5
5
  flexible :invoice
6
6
 
7
7
  class << self
8
- # Generate random amount between values with 2 decimals
8
+ ##
9
+ # Produces a random amount between values with 2 decimals
10
+ #
11
+ # @param from [Integer] Specifies lower limit.
12
+ # @param to [Integer] Specifies upper limit.
13
+ # @return [Integer]
14
+ #
15
+ # @example
16
+ # Faker::Finance.amount_between #=> 0
17
+ # Faker::Finance.amount_between(0, 10) #=> 4.33
18
+ #
19
+ # @faker.version 1.9.0
9
20
  def amount_between(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, from: 0, to: 0)
10
21
  warn_for_deprecated_arguments do |keywords|
11
22
  keywords << :from if legacy_from != NOT_GIVEN
@@ -15,8 +26,16 @@ module Faker
15
26
  Faker::Base.rand_in_range(from, to).round(2)
16
27
  end
17
28
 
18
- # International bank slip reference https://en.wikipedia.org/wiki/Creditor_Reference
19
- # ref is optional so that we can create unit tests
29
+ ##
30
+ # Produces a random valid reference accoring to the International bank slip reference https://en.wikipedia.org/wiki/Creditor_Reference
31
+ #
32
+ # @param ref [String] Specifies reference base.
33
+ # @return [String]
34
+ #
35
+ # @example
36
+ # Faker::Invoice.creditor_reference #=> "RF34118592570724925498"
37
+ #
38
+ # @faker.version 1.9.0
20
39
  def creditor_reference(legacy_ref = NOT_GIVEN, ref: '')
21
40
  warn_for_deprecated_arguments do |keywords|
22
41
  keywords << :ref if legacy_ref != NOT_GIVEN
@@ -24,11 +43,19 @@ module Faker
24
43
 
25
44
  ref = reference if ref.empty?
26
45
 
27
- 'RF' + iban_checksum('RF', ref) + ref
46
+ "RF#{iban_checksum('RF', ref)}#{ref}"
28
47
  end
29
48
 
30
- # Payment references have some rules in certain countries
31
- # ref is optional so that we can create unit tests
49
+ ##
50
+ # Produces a random valid reference.
51
+ #
52
+ # @param ref [String] Specifies reference base.
53
+ # @return [String]
54
+ #
55
+ # @example
56
+ # Faker::Invoice.reference #=> "45656646957845"
57
+ #
58
+ # @faker.version 1.9.0
32
59
  def reference(legacy_ref = NOT_GIVEN, ref: '')
33
60
  warn_for_deprecated_arguments do |keywords|
34
61
  keywords << :ref if legacy_ref != NOT_GIVEN
@@ -3,22 +3,77 @@ module Faker
3
3
  require 'json'
4
4
 
5
5
  class << self
6
+ ##
7
+ # Produces a random simple JSON formatted string.
8
+ #
9
+ # @param width [Integer] Specifies the number of key-value pairs.
10
+ # @param options [Hash] Specifies a Faker gem class to use for keys and for values, respectably. options_hash = {key: Class.method, value: Class.method}
11
+ # @return [Hash{String => String}]
12
+ #
13
+ # @example
14
+ # Faker::Json.shallow_json(width: 3, options: { key: 'RockBand.name', value: 'Seinfeld.quote' }) # =>
15
+ # {"Parliament Funkadelic":"They're real, and they're spectacular.",
16
+ # "Fleetwood Mac":"I'm not a lesbian. I hate men, but I'm not a lesbian.",
17
+ # "The Roots":"It became very clear to me sitting out there today that every decision
18
+ # I've made in my entire life has been wrong. My life is the complete opposite of everything
19
+ # I want it to be. Every instinct I have, in every aspect of life, be it something to wear,
20
+ # something to eat - it's all been wrong."}
21
+ #
22
+ # @faker.version 1.9.2
6
23
  def shallow_json(legacy_width = NOT_GIVEN, legacy_options = NOT_GIVEN, width: 3, options: { key: 'Name.first_name', value: 'Name.first_name' })
7
24
  warn_for_deprecated_arguments do |keywords|
8
25
  keywords << :width if legacy_width != NOT_GIVEN
9
26
  keywords << :options if legacy_options != NOT_GIVEN
10
27
  end
11
28
 
12
- options[:key] = 'Faker::' + options[:key]
13
- options[:value] = 'Faker::' + options[:value]
29
+ options[:key] = "Faker::#{options[:key]}"
30
+ options[:value] = "Faker::#{options[:value]}"
14
31
 
15
32
  hash = build_shallow_hash(width, options)
16
33
  JSON.generate(hash)
17
34
  end
18
35
 
19
36
  # rubocop:disable Metrics/ParameterLists
37
+
38
+ ##
39
+ # Produces a random nested JSON formatted string that can take JSON as an additional argument.
40
+ #
41
+ # @param json [Hash{String => String}] Specifies a Json.shallow_json and uses its keys as keys of the nested JSON.
42
+ # @param width [Integer] Specifies the number of nested key-value pairs.
43
+ # @param options [Hash] Specifies a Faker gem class to use for nested keys and for values, respectably. options_hash = {key: Class.method, value: Class.method}
44
+ # @return [Hash{String => String}]
45
+ #
46
+ # @example
47
+ # json = Faker::Json.shallow_json(width: 3, options: { key: 'Name.first_name', value: 'Name.last_name' })
48
+ # puts json # =>
49
+ # {"Alisha":"Olson","Everardo":"DuBuque","Bridgette":"Turner"}
50
+ #
51
+ # json2 = Faker::Json.add_depth_to_json(json: json, width: 2, options: { key: 'Name.first_name', value: 'Name.last_name' })
52
+ # puts json2 # =>
53
+ # {"Alisha":{"Daisy":"Trantow","Oda":"Haag"},
54
+ # "Everardo":{"Javier":"Marvin","Eliseo":"Schuppe"},
55
+ # "Bridgette":{"Jorge":"Kertzmann","Lelah":"MacGyver"}}
56
+ #
57
+ # json3 = Faker::Json.add_depth_to_json(json: json2, width: 4, options: { key: 'Name.first_name', value: 'Name.last_name' })
58
+ # puts json3 # =>
59
+ # {"Alisha":
60
+ # {"Daisy":
61
+ # {"Bulah":"Wunsch","Cristian":"Champlin","Lester":"Bartoletti","Greg":"Jacobson"},
62
+ # "Oda":
63
+ # {"Salvatore":"Kuhlman","Aubree":"Okuneva","Larry":"Schmitt","Velva":"Gibson"}},
64
+ # "Everardo":
65
+ # {"Javier":
66
+ # {"Eduardo":"Orn","Laila":"Kub","Thad":"Legros","Dion":"Wilderman"},
67
+ # "Eliseo":
68
+ # {"Olin":"Hilpert","Marisa":"Greenfelder","Karlee":"Schmitt","Judd":"Larkin"}},
69
+ # "Bridgette":
70
+ # {"Jorge":
71
+ # {"Eloy":"Pfeffer","Kody":"Hansen","Paxton":"Lubowitz","Abe":"Lesch"},
72
+ # "Lelah":
73
+ # {"Rick":"Wiza","Bonita":"Bayer","Gardner":"Auer","Felicity":"Abbott"}}}
74
+ #
75
+ # @faker.version 1.9.2
20
76
  def add_depth_to_json(legacy_json = NOT_GIVEN, legacy_width = NOT_GIVEN, legacy_options = NOT_GIVEN, json: shallow_json, width: 3, options: { key: 'Name.first_name', value: 'Name.first_name' })
21
- # rubocop:enable Metrics/ParameterLists
22
77
  warn_for_deprecated_arguments do |keywords|
23
78
  keywords << :json if legacy_json != NOT_GIVEN
24
79
  end
@@ -29,8 +84,8 @@ module Faker
29
84
  keywords << :options if legacy_options != NOT_GIVEN
30
85
  end
31
86
 
32
- options[:key] = 'Faker::' + options[:key]
33
- options[:value] = 'Faker::' + options[:value]
87
+ options[:key] = "Faker::#{options[:key]}"
88
+ options[:value] = "Faker::#{options[:value]}"
34
89
 
35
90
  hash = JSON.parse(json)
36
91
  hash.each do |key, _|
@@ -38,6 +93,7 @@ module Faker
38
93
  end
39
94
  JSON.generate(hash)
40
95
  end
96
+ # rubocop:enable Metrics/ParameterLists
41
97
 
42
98
  private
43
99
 
@@ -4,10 +4,32 @@ module Faker
4
4
  # Based on Perl's Text::Lorem
5
5
  class Lorem < Base
6
6
  class << self
7
+ ##
8
+ # Returs the random word
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::Lorem.word #=> "soluto"
13
+ #
14
+ # @faker.version 2.1.3
7
15
  def word
8
16
  sample(translate('faker.lorem.words'))
9
17
  end
10
18
 
19
+ ##
20
+ # Generates random 3 words
21
+ #
22
+ # @param number [Integer] Number of words to be generated
23
+ # @param supplemental [Boolean] Whether to attach supplemental words at the end, default is false
24
+ #
25
+ # @return [Array] Array for words
26
+ #
27
+ # @example
28
+ # Faker::Lorem.words #=> ["hic", "quia", "nihil"]
29
+ # Faker::Lorem.words(number: 4) #=> ["est", "temporibus", "et", "quaerat"]
30
+ # Faker::Lorem.words(number: 4, supplemental: true) #=> ["nisi", "sit", "allatus", "consequatur"]
31
+ #
32
+ # @faker.version 2.1.3
11
33
  def words(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
12
34
  warn_for_deprecated_arguments do |keywords|
13
35
  keywords << :number if legacy_number != NOT_GIVEN
@@ -23,6 +45,15 @@ module Faker
23
45
  shuffle(word_list)[0, resolved_num]
24
46
  end
25
47
 
48
+ ##
49
+ # Generates single character
50
+ #
51
+ # @return [String]
52
+ #
53
+ # @example
54
+ # Faker::Lorem.character #=> "e"
55
+ #
56
+ # @faker.version 2.1.3
26
57
  def character
27
58
  sample(Types::CHARACTERS)
28
59
  end
@@ -51,13 +82,42 @@ module Faker
51
82
  Alphanumeric.alphanumeric(number: number, min_alpha: min_alpha, min_numeric: min_numeric)
52
83
  end
53
84
 
85
+ # rubocop:disable Style/AsciiComments
86
+
87
+ ##
88
+ # Generates the emoji
89
+ #
90
+ # @return [String]
91
+ #
92
+ # @example
93
+ # Faker::Lorem.multibyte #=> "😀"
94
+ # Faker::Lorem.multibyte #=> "❤"
95
+ #
96
+ # @faker.version 2.1.3
54
97
  def multibyte
55
98
  sample(translate('faker.lorem.multibyte')).pack('C*').force_encoding('utf-8')
56
99
  end
100
+ # rubocop:enable Style/AsciiComments
57
101
 
58
102
  # rubocop:disable Metrics/ParameterLists
103
+
104
+ ##
105
+ # Generates sentence
106
+ #
107
+ # @param word_count [Integer] How many words should be there in a sentence, default to 4
108
+ # @param supplemental [Boolean] Add supplemental words, default to false
109
+ # @param random_words_to_add [Integer] Add any random words, default to 0
110
+ #
111
+ # @return [String]
112
+ #
113
+ # @example
114
+ # Faker::Lorem.sentence #=> "Magnam qui aut quidem."
115
+ # Faker::Lorem.sentence(word_count: 5) #=> "Voluptas rerum aut aliquam velit."
116
+ # Faker::Lorem.sentence(word_count: 5, supplemental: true) #=> "Aut viscus curtus votum iusto."
117
+ # Faker::Lorem.sentence(word_count: 5, supplemental: true, random_words_to_add:2) #=> "Crinis quo cruentus velit animi vomer."
118
+ #
119
+ # @faker.version 2.1.3
59
120
  def sentence(legacy_word_count = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_random_words_to_add = NOT_GIVEN, word_count: 4, supplemental: false, random_words_to_add: 0)
60
- # rubocop:enable Metrics/ParameterLists
61
121
  warn_for_deprecated_arguments do |keywords|
62
122
  keywords << :word_count if legacy_word_count != NOT_GIVEN
63
123
  keywords << :supplemental if legacy_supplemental != NOT_GIVEN
@@ -66,7 +126,22 @@ module Faker
66
126
 
67
127
  words(number: word_count + rand(random_words_to_add.to_i), supplemental: supplemental).join(locale_space).capitalize + locale_period
68
128
  end
129
+ # rubocop:enable Metrics/ParameterLists
69
130
 
131
+ ##
132
+ # Generates three sentences
133
+ #
134
+ # @param number [Integer] How many sentences to be generated, default to 3
135
+ # @param supplemental [Boolean] Should add supplemental words, defaults to false
136
+ #
137
+ # @return [Array] Returns array for sentences.
138
+ #
139
+ # @example
140
+ # Faker::Lorem.sentences #=> ["Possimus non tenetur.", "Nulla non excepturi.", "Quisquam rerum facilis."]
141
+ # Faker::Lorem.sentences(number: 2) #=> ["Nulla est natus.", "Perferendis autem cum."]
142
+ # Faker::Lorem.sentences(number: 2, supplemental: true) #=> ["Cito cena ad.", "Solvo animus allatus."]
143
+ #
144
+ # @faker.version 2.1.3
70
145
  def sentences(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
71
146
  warn_for_deprecated_arguments do |keywords|
72
147
  keywords << :number if legacy_number != NOT_GIVEN
@@ -77,8 +152,28 @@ module Faker
77
152
  end
78
153
 
79
154
  # rubocop:disable Metrics/ParameterLists
155
+
156
+ ##
157
+ # Generates three sentence paragraph
158
+ #
159
+ # @param sentence_count [Integer] Number of sentences in the paragraph
160
+ # @param supplemental [Boolean]
161
+ # @param random_sentences_to_add [Integer]
162
+ #
163
+ # @return [String]
164
+ #
165
+ # @example
166
+ # Faker::Lorem.paragraph
167
+ # #=> "Impedit et est. Aliquid deleniti necessitatibus. Et aspernatur minima."
168
+ # Faker::Lorem.paragraph(sentence_count: 2)
169
+ # #=> "Rerum fugit vitae. Et atque autem."
170
+ # Faker::Lorem.paragraph(sentence_count: 2, supplemental: true)
171
+ # #=> "Terreo coerceo utor. Vester sunt cogito."
172
+ # Faker::Lorem.paragraph(sentence_count: 2, supplemental: true, random_sentences_to_add: 2)
173
+ # #=> "Texo tantillus tamisium. Tribuo amissio tamisium. Facere aut canis."
174
+ #
175
+ # @faker.version 2.1.3
80
176
  def paragraph(legacy_sentence_count = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_random_sentences_to_add = NOT_GIVEN, sentence_count: 3, supplemental: false, random_sentences_to_add: 0)
81
- # rubocop:enable Metrics/ParameterLists
82
177
  warn_for_deprecated_arguments do |keywords|
83
178
  keywords << :sentence_count if legacy_sentence_count != NOT_GIVEN
84
179
  keywords << :supplemental if legacy_supplemental != NOT_GIVEN
@@ -87,7 +182,22 @@ module Faker
87
182
 
88
183
  sentences(number: resolve(sentence_count) + rand(random_sentences_to_add.to_i), supplemental: supplemental).join(locale_space)
89
184
  end
185
+ # rubocop:enable Metrics/ParameterLists
90
186
 
187
+ ##
188
+ # Generates three paragraphs
189
+ #
190
+ # @param number [Integer]
191
+ # @param supplemental [Boolean]
192
+ #
193
+ # @return [Array]
194
+ #
195
+ # @example
196
+ # Faker::Lorem.paragraphs
197
+ # Faker::Lorem.paragraphs(number:2)
198
+ # Faker::Lorem.paragraphs(number:2, supplemental: true)
199
+ #
200
+ # @faker.version 2.1.3
91
201
  def paragraphs(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
92
202
  warn_for_deprecated_arguments do |keywords|
93
203
  keywords << :number if legacy_number != NOT_GIVEN
@@ -99,6 +209,20 @@ module Faker
99
209
  1.upto(resolve(number)).collect { paragraph(sentence_count: 3, supplemental: supplemental) }
100
210
  end
101
211
 
212
+ ##
213
+ # Generates paragraph with 256 characters
214
+ #
215
+ # @param number [Integer]
216
+ # @param supplemental [Boolean]
217
+ #
218
+ # @return [String]
219
+ #
220
+ # @example
221
+ # Faker::Lorem.paragraph_by_chars
222
+ # Faker::Lorem.paragraph_by_chars(number: 20) #=> "Sit modi alias. Imp."
223
+ # Faker::Lorem.paragraph_by_chars(number: 20, supplemental: true) #=> "Certus aveho admove."
224
+ #
225
+ # @faker.version 2.1.3
102
226
  def paragraph_by_chars(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 256, supplemental: false)
103
227
  warn_for_deprecated_arguments do |keywords|
104
228
  keywords << :number if legacy_number != NOT_GIVEN
@@ -107,14 +231,30 @@ module Faker
107
231
 
108
232
  paragraph = paragraph(sentence_count: 3, supplemental: supplemental)
109
233
 
110
- paragraph += ' ' + paragraph(sentence_count: 3, supplemental: supplemental) while paragraph.length < number
234
+ paragraph += " #{paragraph(sentence_count: 3, supplemental: supplemental)}" while paragraph.length < number
111
235
 
112
- paragraph[0...number - 1] + '.'
236
+ "#{paragraph[0...number - 1]}."
113
237
  end
114
238
 
115
239
  # rubocop:disable Metrics/ParameterLists
240
+
241
+ ##
242
+ # Returns the question with 4 words
243
+ #
244
+ # @param word_count [Integer]
245
+ # @param supplemental [Boolean]
246
+ # @param random_words_to_add [Integer]
247
+ #
248
+ # @return [String]
249
+ #
250
+ # @example
251
+ # Faker::Lorem.question #=> "Natus deleniti sequi laudantium?"
252
+ # Faker::Lorem.question(word_count: 2) #=> "Quo ut?"
253
+ # Faker::Lorem.question(word_count: 2, supplemental: true) #=> "Terga consequatur?"
254
+ # Faker::Lorem.question(word_count: 2, supplemental: true, random_words_to_add: 2) #=> "Depulso uter ut?"
255
+ #
256
+ # @faker.version 2.1.3
116
257
  def question(legacy_word_count = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, legacy_random_words_to_add = NOT_GIVEN, word_count: 4, supplemental: false, random_words_to_add: 0)
117
- # rubocop:enable Metrics/ParameterLists
118
258
  warn_for_deprecated_arguments do |keywords|
119
259
  keywords << :word_count if legacy_word_count != NOT_GIVEN
120
260
  keywords << :supplemental if legacy_supplemental != NOT_GIVEN
@@ -123,7 +263,22 @@ module Faker
123
263
 
124
264
  words(number: word_count + rand(random_words_to_add), supplemental: supplemental).join(' ').capitalize + locale_question_mark
125
265
  end
266
+ # rubocop:enable Metrics/ParameterLists
126
267
 
268
+ ##
269
+ # Generates array of three questions
270
+ #
271
+ # @param number [Integer]
272
+ # @param supplemental [Boolean]
273
+ #
274
+ # @return [Array]
275
+ #
276
+ # @example
277
+ # Faker::Lorem.questions #=> ["Amet culpa enim?", "Voluptatem deleniti numquam?", "Veniam non cum?"]
278
+ # Faker::Lorem.questions(number: 2) #=> ["Minus occaecati nobis?", "Veniam et alias?"]
279
+ # Faker::Lorem.questions(number: 2, supplemental: true) #=> ["Acceptus subito cetera?", "Aro sulum cubicularis?"]
280
+ #
281
+ # @faker.version 2.1.3
127
282
  def questions(legacy_number = NOT_GIVEN, legacy_supplemental = NOT_GIVEN, number: 3, supplemental: false)
128
283
  warn_for_deprecated_arguments do |keywords|
129
284
  keywords << :number if legacy_number != NOT_GIVEN