faker 2.11.0 → 2.18.0

Sign up to get free protection for your applications and to get access to all the features.
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,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Tea < Base
5
+ flexible :tea
6
+
7
+ class << self
8
+ ##
9
+ # Produces a random variety or blend of tea.
10
+ #
11
+ # @param type [String, nil] the type of tea to query for (valid types: 'Black', 'Green', 'Oolong', 'White', and 'Herbal')
12
+ # @return [String] a variety of tea
13
+ #
14
+ # @example
15
+ # Faker::Tea.variety
16
+ # #=> "Earl Grey"
17
+ #
18
+ # @example
19
+ # Faker::Tea.variety(type: 'Green')
20
+ # #=> "Jasmine"
21
+ # @faker.version next
22
+ def variety(type: nil)
23
+ type ||= fetch('tea.type')
24
+ fetch "tea.variety.#{type.downcase}"
25
+ end
26
+
27
+ ##
28
+ # Produces a random type of tea.
29
+ #
30
+ # @return [String] a type of tea
31
+ #
32
+ # @example
33
+ # Faker::Tea.type
34
+ # #=> "Green"
35
+ # @faker.version next
36
+ def type
37
+ fetch 'tea.type'
38
+ end
39
+ end
40
+ end
41
+ end
@@ -3,6 +3,19 @@
3
3
  module Faker
4
4
  class Twitter < Base
5
5
  class << self
6
+ ##
7
+ # Produces a random Twitter user.
8
+ #
9
+ # @param include_status [Boolean] Include or exclude user status details
10
+ # @param include_email [Boolean] Include or exclude user email details
11
+ # @return [Hash]
12
+ #
13
+ # @example
14
+ # Faker::Twitter.user #=> {:id=>8821452687517076614, :name=>"Lincoln Paucek", :screen_name=>"cody"...
15
+ # Faker::Twitter.user(include_status: false) # Just get a user object with no embed status
16
+ # Faker::Twitter.user(include_email: true) # Simulate an authenticated user with the email permission
17
+ #
18
+ # @faker.version 1.7.3
6
19
  def user(legacy_include_status = NOT_GIVEN, legacy_include_email = NOT_GIVEN, include_status: true, include_email: false)
7
20
  warn_for_deprecated_arguments do |keywords|
8
21
  keywords << :include_status if legacy_include_status != NOT_GIVEN
@@ -59,6 +72,19 @@ module Faker
59
72
  user
60
73
  end
61
74
 
75
+ ##
76
+ # Produces a random Twitter user.
77
+ #
78
+ # @param include_user [Boolean] Include or exclude user details
79
+ # @param include_photo [Boolean] Include or exclude user photo
80
+ # @return [Hash]
81
+ #
82
+ # @example
83
+ # Faker::Twitter.status #=> {:id=>8821452687517076614, :text=>"Ea et laboriosam vel non."...
84
+ # Faker::Twitter.status(include_user: false) # Just get a status object with no embed user
85
+ # Faker::Twitter.status(include_photo: true) # Includes entities for an attached image
86
+ #
87
+ # @faker.version 1.7.3
62
88
  def status(legacy_include_user = NOT_GIVEN, legacy_include_photo = NOT_GIVEN, include_user: true, include_photo: false)
63
89
  warn_for_deprecated_arguments do |keywords|
64
90
  keywords << :include_user if legacy_include_user != NOT_GIVEN
@@ -97,6 +123,15 @@ module Faker
97
123
  status
98
124
  end
99
125
 
126
+ ##
127
+ # Produces a random screen name.
128
+ #
129
+ # @return [String]
130
+ #
131
+ # @example
132
+ # Faker::Twitter.screen_name #=> "audreanne_hackett"
133
+ #
134
+ # @faker.version 1.7.3
100
135
  def screen_name
101
136
  Faker::Internet.username(specifier: nil, separators: ['_'])[0...20]
102
137
  end
@@ -7,6 +7,15 @@ module Faker
7
7
  COMPLEX_TYPES = %i[hash array].freeze
8
8
 
9
9
  class << self
10
+ ##
11
+ # Produces a random String created from word (Faker::Lorem.word)
12
+ #
13
+ # @return [String]
14
+ #
15
+ # @example
16
+ # Faker::Types.rb_string #=> "foobar"
17
+ #
18
+ # @faker.version 1.8.6
10
19
  def rb_string(legacy_words = NOT_GIVEN, words: 1)
11
20
  warn_for_deprecated_arguments do |keywords|
12
21
  keywords << :words if legacy_words != NOT_GIVEN
@@ -20,10 +29,28 @@ module Faker
20
29
  shuffle(word_list)[0, resolved_num].join(' ')
21
30
  end
22
31
 
32
+ ##
33
+ # Produces a random character from the a-z, 0-9 ranges.
34
+ #
35
+ # @return [String]
36
+ #
37
+ # @example
38
+ # Faker::Types.character #=> "n"
39
+ #
40
+ # @faker.version 1.8.6
23
41
  def character
24
42
  sample(CHARACTERS)
25
43
  end
26
44
 
45
+ ##
46
+ # Produces a random integer.
47
+ #
48
+ # @return [Integer]
49
+ #
50
+ # @example
51
+ # Faker::Types.rb_integer #=> 1
52
+ #
53
+ # @faker.version 1.8.6
27
54
  def rb_integer(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, from: 0, to: 100)
28
55
  warn_for_deprecated_arguments do |keywords|
29
56
  keywords << :from if legacy_from != NOT_GIVEN
@@ -33,7 +60,19 @@ module Faker
33
60
  rand(from..to).to_i
34
61
  end
35
62
 
36
- def rb_hash(legacy_number = NOT_GIVEN, legacy_type = NOT_GIVEN, number: 1, type: random_type)
63
+ ##
64
+ # Produces a random hash with random keys and values.
65
+ #
66
+ # @param number [Integer] Specifies the number of key-value pairs.
67
+ # @return [Hash]
68
+ #
69
+ # @example
70
+ # Faker::Types.rb_hash #=> {name: "bob"}
71
+ # Faker::Types.rb_hash(number: 1) #=> {name: "bob"}
72
+ # Faker::Types.rb_hash(number: 2) #=> {name: "bob", last: "marley"}
73
+ #
74
+ # @faker.version 1.8.6
75
+ def rb_hash(legacy_number = NOT_GIVEN, legacy_type = NOT_GIVEN, number: 1, type: -> { random_type })
37
76
  warn_for_deprecated_arguments do |keywords|
38
77
  keywords << :number if legacy_number != NOT_GIVEN
39
78
  keywords << :type if legacy_type != NOT_GIVEN
@@ -41,19 +80,43 @@ module Faker
41
80
 
42
81
  {}.tap do |hsh|
43
82
  Lorem.words(number: number * 2).uniq.first(number).each do |s|
44
- hsh.merge!(s.to_sym => type)
83
+ value = type.is_a?(Proc) ? type.call : type
84
+ hsh.merge!(s.to_sym => value)
45
85
  end
46
86
  end
47
87
  end
48
88
 
89
+ ##
90
+ # Produces a random complex hash with random keys and values where the values may include other hashes and arrays.
91
+ #
92
+ # @param number [Integer] Specifies the number of key-value pairs.
93
+ # @return [Hash]
94
+ #
95
+ # @example
96
+ # Faker::Types.complex_rb_hash #=> {user: {first: "bob", last: "marley"}}
97
+ # Faker::Types.complex_rb_hash(number: 1) #=> {user: {first: "bob", last: "marley"}}
98
+ # Faker::Types.complex_rb_hash(number: 2) #=> {user: {first: "bob", last: "marley"}, son: ["damien", "marley"]}
99
+ #
100
+ # @faker.version 1.8.6
49
101
  def complex_rb_hash(legacy_number = NOT_GIVEN, number: 1)
50
102
  warn_for_deprecated_arguments do |keywords|
51
103
  keywords << :number if legacy_number != NOT_GIVEN
52
104
  end
53
105
 
54
- rb_hash(number: number, type: random_complex_type)
106
+ rb_hash(number: number, type: -> { random_complex_type })
55
107
  end
56
108
 
109
+ ##
110
+ # Produces a random array.
111
+ #
112
+ # @param len [Integer] Specifies the number of elements in the array.
113
+ # @return [Array]
114
+ #
115
+ # @example
116
+ # Faker::Types.rb_array #=> ["a"]
117
+ # Faker::Types.rb_array(len: 4) #=> ["a", 1, 2, "bob"]
118
+ #
119
+ # @faker.version 1.8.6
57
120
  def rb_array(legacy_len = NOT_GIVEN, len: 1)
58
121
  warn_for_deprecated_arguments do |keywords|
59
122
  keywords << :len if legacy_len != NOT_GIVEN
@@ -66,6 +129,15 @@ module Faker
66
129
  end
67
130
  end
68
131
 
132
+ ##
133
+ # Produces a random type that's either a String or an Integer.
134
+ #
135
+ # @return [String, Integer]
136
+ #
137
+ # @example
138
+ # Faker::Types.random_type #=> 1 or "a" or "bob"
139
+ #
140
+ # @faker.version 1.8.6
69
141
  def random_type
70
142
  type_to_use = SIMPLE_TYPES[rand(0..SIMPLE_TYPES.length - 1)]
71
143
  case type_to_use
@@ -76,6 +148,15 @@ module Faker
76
148
  end
77
149
  end
78
150
 
151
+ ##
152
+ # Produces a random complex type that's either a String, an Integer, an array or a hash.
153
+ #
154
+ # @return [String, Integer]
155
+ #
156
+ # @example
157
+ # Faker::Types.random_complex_type #=> 1 or "a" or "bob" or {foo: "bar"}
158
+ #
159
+ # @faker.version 1.8.6
79
160
  def random_complex_type
80
161
  types = SIMPLE_TYPES + COMPLEX_TYPES
81
162
  type_to_use = types[rand(0..types.length - 1)]
@@ -5,22 +5,67 @@ module Faker
5
5
  flexible :university
6
6
 
7
7
  class << self
8
+ ##
9
+ # Produces a random university name.
10
+ #
11
+ # @return [String]
12
+ #
13
+ # @example
14
+ # Faker::University.name #=> "Eastern Mississippi Academy"
15
+ #
16
+ # @faker.version 1.5.0
8
17
  def name
9
18
  parse('university.name')
10
19
  end
11
20
 
21
+ ##
22
+ # Produces a random university prefix.
23
+ #
24
+ # @return [String]
25
+ #
26
+ # @example
27
+ # Faker::University.prefix #=> "Western"
28
+ #
29
+ # @faker.version 1.5.0
12
30
  def prefix
13
31
  fetch('university.prefix')
14
32
  end
15
33
 
34
+ ##
35
+ # Produces a random university suffix.
36
+ #
37
+ # @return [String]
38
+ #
39
+ # @example
40
+ # Faker::University.suffix #=> "Academy"
41
+ #
42
+ # @faker.version 1.5.0
16
43
  def suffix
17
44
  fetch('university.suffix')
18
45
  end
19
46
 
47
+ ##
48
+ # Produces a random greek organization.
49
+ #
50
+ # @return [String]
51
+ #
52
+ # @example
53
+ # Faker::University.greek_organization #=> "BEX"
54
+ #
55
+ # @faker.version 1.5.0
20
56
  def greek_organization
21
57
  Array.new(3) { |_| sample(greek_alphabet) }.join
22
58
  end
23
59
 
60
+ ##
61
+ # Produces a greek alphabet.
62
+ #
63
+ # @return [Array]
64
+ #
65
+ # @example
66
+ # Faker::University.greek_alphabet #=> ["Α", "B", "Γ", "Δ", ...]
67
+ #
68
+ # @faker.version 1.5.0
24
69
  def greek_alphabet
25
70
  %w[Α B Γ Δ E Z H Θ I K Λ M N Ξ
26
71
  O Π P Σ T Y Φ X Ψ Ω]
@@ -14,18 +14,54 @@ module Faker
14
14
  SG_CHECKSUM_CHARS = 'AYUSPLJGDBZXTRMKHEC'
15
15
 
16
16
  class << self
17
+ # Produces a random vehicle VIN number.
18
+ #
19
+ # @return [String]
20
+ #
21
+ # @example
22
+ # Faker::Vehicle.vin #=> "LLDWXZLG77VK2LUUF"
23
+ #
24
+ # @faker.version 1.6.4
17
25
  def vin
18
26
  regexify(VIN_REGEX)
19
27
  end
20
28
 
29
+ # Produces a random vehicle manufacturer.
30
+ #
31
+ # @return [String]
32
+ #
33
+ # @example
34
+ # Faker::Vehicle.manufacture #=> "Lamborghini"
35
+ #
36
+ # @faker.version 1.6.4
21
37
  def manufacture
22
38
  fetch('vehicle.manufacture')
23
39
  end
24
40
 
41
+ ##
42
+ # Produces a random vehicle make.
43
+ #
44
+ # @return [String]
45
+ #
46
+ # @example
47
+ # Faker::Vehicle.make #=> "Honda"
48
+ #
49
+ # @faker.version 1.6.4
25
50
  def make
26
51
  fetch('vehicle.makes')
27
52
  end
28
53
 
54
+ ##
55
+ # Produces a random vehicle model.
56
+ #
57
+ # @param make_of_model [String] Specific valid vehicle make.
58
+ # @return [String]
59
+ #
60
+ # @example
61
+ # Faker::Vehicle.model #=> "A8"
62
+ # Faker::Vehicle.model(make_of_model: 'Toyota') #=> "Prius"
63
+ #
64
+ # @faker.version 1.6.4
29
65
  def model(legacy_make_of_model = NOT_GIVEN, make_of_model: '')
30
66
  warn_for_deprecated_arguments do |keywords|
31
67
  keywords << :make_of_model if legacy_make_of_model != NOT_GIVEN
@@ -36,59 +72,183 @@ module Faker
36
72
  fetch("vehicle.models_by_make.#{make_of_model}")
37
73
  end
38
74
 
75
+ ##
76
+ # Produces a random vehicle make and model.
77
+ #
78
+ # @return [String]
79
+ #
80
+ # @example
81
+ # Faker::Vehicle.make_and_model #=> "Dodge Charger"
82
+ #
83
+ # @faker.version 1.6.4
39
84
  def make_and_model
40
85
  m = make
41
86
 
42
87
  "#{m} #{model(make_of_model: m)}"
43
88
  end
44
89
 
90
+ ##
91
+ # Produces a random vehicle style.
92
+ #
93
+ # @return [String]
94
+ #
95
+ # @example
96
+ # Faker::Vehicle.style #=> "ESi"
97
+ #
98
+ # @faker.version 1.6.4
45
99
  def style
46
100
  fetch('vehicle.styles')
47
101
  end
48
102
 
103
+ ##
104
+ # Produces a random vehicle color.
105
+ #
106
+ # @return [String]
107
+ #
108
+ # @example
109
+ # Faker::Vehicle.color #=> "Red"
110
+ #
111
+ # @faker.version 1.6.4
49
112
  def color
50
113
  fetch('vehicle.colors')
51
114
  end
52
115
 
116
+ ##
117
+ # Produces a random vehicle transmission.
118
+ #
119
+ # @return [String]
120
+ #
121
+ # @example
122
+ # Faker::Vehicle.transmission #=> "Automanual"
123
+ #
124
+ # @faker.version 1.6.4
53
125
  def transmission
54
126
  fetch('vehicle.transmissions')
55
127
  end
56
128
 
129
+ ##
130
+ # Produces a random vehicle drive type.
131
+ #
132
+ # @return [String]
133
+ #
134
+ # @example
135
+ # Faker::Vehicle.drive_type #=> "4x2/2-wheel drive"
136
+ #
137
+ # @faker.version 1.6.4
57
138
  def drive_type
58
139
  fetch('vehicle.drive_types')
59
140
  end
60
141
 
142
+ ##
143
+ # Produces a random vehicle fuel type.
144
+ #
145
+ # @return [String]
146
+ #
147
+ # @example
148
+ # Faker::Vehicle.fuel_type #=> "Diesel"
149
+ #
150
+ # @faker.version 1.6.4
61
151
  def fuel_type
62
152
  fetch('vehicle.fuel_types')
63
153
  end
64
154
 
155
+ ##
156
+ # Produces a random car type.
157
+ #
158
+ # @return [String]
159
+ #
160
+ # @example
161
+ # Faker::Vehicle.car_type #=> "Sedan"
162
+ #
163
+ # @faker.version 1.6.4
65
164
  def car_type
66
165
  fetch('vehicle.car_types')
67
166
  end
68
167
 
168
+ ##
169
+ # Produces a random engine cylinder count.
170
+ #
171
+ # @return [String]
172
+ #
173
+ # @example
174
+ # Faker::Vehicle.engine_size #=> 6
175
+ # Faker::Vehicle.engine #=> 4
176
+ #
177
+ # @faker.version 1.6.4
69
178
  def engine
70
179
  "#{sample(fetch_all('vehicle.doors'))} #{fetch('vehicle.cylinder_engine')}"
71
180
  end
72
181
 
73
182
  alias engine_size engine
74
183
 
184
+ ##
185
+ # Produces a random list of car options.
186
+ #
187
+ # @return [Array<String>]
188
+ #
189
+ # @example
190
+ # Faker::Vehicle.car_options #=> ["DVD System", "MP3 (Single Disc)", "Tow Package", "CD (Multi Disc)", "Cassette Player", "Bucket Seats", "Cassette Player", "Leather Interior", "AM/FM Stereo", "Third Row Seats"]
191
+ #
192
+ # @faker.version 1.6.4
75
193
  def car_options
76
194
  Array.new(rand(5...10)) { fetch('vehicle.car_options') }
77
195
  end
78
196
 
197
+ ##
198
+ # Produces a random list of standard specs.
199
+ #
200
+ # @return [Array<String>]
201
+ #
202
+ # @example
203
+ # Faker::Vehicle.standard_specs #=> ["Full-size spare tire w/aluminum alloy wheel", "Back-up camera", "Carpeted cargo area", "Silver accent IP trim finisher -inc: silver shifter finisher", "Back-up camera", "Water-repellent windshield & front door glass", "Floor carpeting"]
204
+ #
205
+ # @faker.version 1.6.4
79
206
  def standard_specs
80
207
  Array.new(rand(5...10)) { fetch('vehicle.standard_specs') }
81
208
  end
82
209
 
210
+ ##
211
+ # Produces a random vehicle door count.
212
+ #
213
+ # @return [Integer]
214
+ #
215
+ # @example
216
+ # Faker::Vehicle.doors #=> 1
217
+ # Faker::Vehicle.door_count #=> 3
218
+ #
219
+ # @faker.version 1.6.4
83
220
  def doors
84
221
  sample(fetch_all('vehicle.doors'))
85
222
  end
86
223
  alias door_count doors
87
224
 
225
+ ##
226
+ # Produces a random car year between 1 and 15 years ago.
227
+ #
228
+ # @return [Integer]
229
+ #
230
+ # @example
231
+ # Faker::Vehicle.year #=> 2008
232
+ #
233
+ # @faker.version 1.6.4
88
234
  def year
89
235
  Faker::Time.backward(days: rand_in_range(365, 5475), period: :all, format: '%Y').to_i
90
236
  end
91
237
 
238
+ ##
239
+ # Produces a random mileage/kilometrage for a vehicle.
240
+ #
241
+ # @param min [Integer] Specific minimum limit for mileage generation.
242
+ # @param max [Integer] Specific maximum limit for mileage generation.
243
+ # @return [Integer]
244
+ #
245
+ # @example
246
+ # Faker::Vehicle.mileage #=> 26961
247
+ # Faker::Vehicle.mileage(min: 50_000) #=> 81557
248
+ # Faker::Vehicle.mileage(min: 50_000, max: 250_000) #=> 117503
249
+ # Faker::Vehicle.kilometrage #=> 35378
250
+ #
251
+ # @faker.version 1.6.4
92
252
  def mileage(legacy_min = NOT_GIVEN, legacy_max = NOT_GIVEN, min: MILEAGE_MIN, max: MILEAGE_MAX)
93
253
  warn_for_deprecated_arguments do |keywords|
94
254
  keywords << :min if legacy_min != NOT_GIVEN
@@ -100,17 +260,37 @@ module Faker
100
260
 
101
261
  alias kilometrage mileage
102
262
 
103
- def license_plate(legacy_state_abreviation = NOT_GIVEN, state_abreviation: '')
263
+ ##
264
+ # Produces a random license plate number.
265
+ #
266
+ # @param state_abbreviation [String] Two letter state abbreviation for license plate generation.
267
+ # @return [String]
268
+ #
269
+ # @example
270
+ # Faker::Vehicle.license_plate #=> "DEP-2483"
271
+ # Faker::Vehicle.license_plate(state_abbreviation: 'FL') #=> "977 UNU"
272
+ #
273
+ # @faker.version 1.6.4
274
+ def license_plate(legacy_state_abreviation = NOT_GIVEN, state_abbreviation: '')
104
275
  warn_for_deprecated_arguments do |keywords|
105
- keywords << :state_abreviation if legacy_state_abreviation != NOT_GIVEN
276
+ keywords << :state_abbreviation if legacy_state_abreviation != NOT_GIVEN
106
277
  end
107
278
 
108
- return regexify(bothify(fetch('vehicle.license_plate'))) if state_abreviation.empty?
279
+ return regexify(bothify(fetch('vehicle.license_plate'))) if state_abbreviation.empty?
109
280
 
110
- key = 'vehicle.license_plate_by_state.' + state_abreviation
281
+ key = "vehicle.license_plate_by_state.#{state_abbreviation}"
111
282
  regexify(bothify(fetch(key)))
112
283
  end
113
284
 
285
+ ##
286
+ # Produces a random license plate number for Singapore.
287
+ #
288
+ # @return [String]
289
+ #
290
+ # @example
291
+ # Faker::Vehicle.singapore_license_plate #=> "SLV1854M"
292
+ #
293
+ # @faker.version 1.6.4
114
294
  def singapore_license_plate
115
295
  key = 'vehicle.license_plate'
116
296
  plate_number = regexify(bothify(fetch(key)))