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,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
@@ -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,6 +60,18 @@ module Faker
33
60
  rand(from..to).to_i
34
61
  end
35
62
 
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
36
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
@@ -46,6 +85,18 @@ module Faker
46
85
  end
47
86
  end
48
87
 
88
+ ##
89
+ # Produces a random complex hash with random keys and values where the values may include other hashes and arrays.
90
+ #
91
+ # @param number [Integer] Specifies the number of key-value pairs.
92
+ # @return [Hash]
93
+ #
94
+ # @example
95
+ # Faker::Types.complex_rb_hash #=> {user: {first: "bob", last: "marley"}}
96
+ # Faker::Types.complex_rb_hash(number: 1) #=> {user: {first: "bob", last: "marley"}}
97
+ # Faker::Types.complex_rb_hash(number: 2) #=> {user: {first: "bob", last: "marley"}, son: ["damien", "marley"]}
98
+ #
99
+ # @faker.version 1.8.6
49
100
  def complex_rb_hash(legacy_number = NOT_GIVEN, number: 1)
50
101
  warn_for_deprecated_arguments do |keywords|
51
102
  keywords << :number if legacy_number != NOT_GIVEN
@@ -54,6 +105,17 @@ module Faker
54
105
  rb_hash(number: number, type: random_complex_type)
55
106
  end
56
107
 
108
+ ##
109
+ # Produces a random array.
110
+ #
111
+ # @param len [Integer] Specifies the number of elements in the array.
112
+ # @return [Array]
113
+ #
114
+ # @example
115
+ # Faker::Types.rb_array #=> ["a"]
116
+ # Faker::Types.rb_array(len: 4) #=> ["a", 1, 2, "bob"]
117
+ #
118
+ # @faker.version 1.8.6
57
119
  def rb_array(legacy_len = NOT_GIVEN, len: 1)
58
120
  warn_for_deprecated_arguments do |keywords|
59
121
  keywords << :len if legacy_len != NOT_GIVEN
@@ -66,6 +128,15 @@ module Faker
66
128
  end
67
129
  end
68
130
 
131
+ ##
132
+ # Produces a random type that's either a String or an Integer.
133
+ #
134
+ # @return [String, Integer]
135
+ #
136
+ # @example
137
+ # Faker::Types.random_type #=> 1 or "a" or "bob"
138
+ #
139
+ # @faker.version 1.8.6
69
140
  def random_type
70
141
  type_to_use = SIMPLE_TYPES[rand(0..SIMPLE_TYPES.length - 1)]
71
142
  case type_to_use
@@ -76,6 +147,15 @@ module Faker
76
147
  end
77
148
  end
78
149
 
150
+ ##
151
+ # Produces a random complex type that's either a String, an Integer, an array or a hash.
152
+ #
153
+ # @return [String, Integer]
154
+ #
155
+ # @example
156
+ # Faker::Types.random_complex_type #=> 1 or "a" or "bob" or {foo: "bar"}
157
+ #
158
+ # @faker.version 1.8.6
79
159
  def random_complex_type
80
160
  types = SIMPLE_TYPES + COMPLEX_TYPES
81
161
  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)))