faker 2.11.0 → 2.17.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 (233) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +372 -13
  3. data/History.md +4 -4
  4. data/README.md +27 -3
  5. data/lib/faker/blockchain/aeternity.rb +4 -4
  6. data/lib/faker/blockchain/bitcoin.rb +2 -2
  7. data/lib/faker/blockchain/tezos.rb +30 -2
  8. data/lib/faker/books/dune.rb +15 -2
  9. data/lib/faker/books/lovecraft.rb +8 -4
  10. data/lib/faker/default/address.rb +35 -5
  11. data/lib/faker/default/app.rb +1 -1
  12. data/lib/faker/default/avatar.rb +1 -1
  13. data/lib/faker/default/bank.rb +96 -3
  14. data/lib/faker/default/barcode.rb +165 -0
  15. data/lib/faker/default/beer.rb +3 -3
  16. data/lib/faker/default/blood.rb +48 -0
  17. data/lib/faker/default/business.rb +1 -1
  18. data/lib/faker/default/camera.rb +46 -0
  19. data/lib/faker/default/cannabis.rb +10 -0
  20. data/lib/faker/default/chile_rut.rb +47 -3
  21. data/lib/faker/default/chuck_norris.rb +1 -0
  22. data/lib/faker/default/code.rb +98 -17
  23. data/lib/faker/default/commerce.rb +74 -11
  24. data/lib/faker/default/company.rb +96 -11
  25. data/lib/faker/default/compass.rb +135 -0
  26. data/lib/faker/default/computer.rb +63 -0
  27. data/lib/faker/default/construction.rb +54 -0
  28. data/lib/faker/default/cosmere.rb +90 -0
  29. data/lib/faker/default/crypto.rb +4 -4
  30. data/lib/faker/default/crypto_coin.rb +45 -0
  31. data/lib/faker/default/date.rb +16 -12
  32. data/lib/faker/default/driving_licence.rb +67 -1
  33. data/lib/faker/default/drone.rb +332 -0
  34. data/lib/faker/default/educator.rb +13 -0
  35. data/lib/faker/default/faker_adjective.rb +35 -0
  36. data/lib/faker/default/file.rb +53 -2
  37. data/lib/faker/default/finance.rb +45 -0
  38. data/lib/faker/default/food.rb +1 -1
  39. data/lib/faker/default/gender.rb +1 -1
  40. data/lib/faker/default/hipster.rb +107 -10
  41. data/lib/faker/default/id_number.rb +88 -2
  42. data/lib/faker/default/internet.rb +266 -12
  43. data/lib/faker/default/internet_http.rb +48 -0
  44. data/lib/faker/default/invoice.rb +33 -6
  45. data/lib/faker/default/json.rb +61 -5
  46. data/lib/faker/default/lorem.rb +160 -5
  47. data/lib/faker/default/lorem_flickr.rb +67 -7
  48. data/lib/faker/default/lorem_pixel.rb +23 -0
  49. data/lib/faker/default/markdown.rb +91 -0
  50. data/lib/faker/default/measurement.rb +93 -2
  51. data/lib/faker/default/military.rb +26 -0
  52. data/lib/faker/default/mountain.rb +33 -0
  53. data/lib/faker/default/name.rb +98 -0
  54. data/lib/faker/default/nhs.rb +19 -0
  55. data/lib/faker/default/number.rb +28 -13
  56. data/lib/faker/default/omniauth.rb +62 -14
  57. data/lib/faker/default/phone_number.rb +88 -5
  58. data/lib/faker/default/placeholdit.rb +23 -1
  59. data/lib/faker/default/relationship.rb +1 -1
  60. data/lib/faker/default/slack_emoji.rb +81 -0
  61. data/lib/faker/default/south_africa.rb +90 -0
  62. data/lib/faker/default/space.rb +1 -1
  63. data/lib/faker/default/string.rb +20 -3
  64. data/lib/faker/default/stripe.rb +64 -3
  65. data/lib/faker/default/twitter.rb +35 -0
  66. data/lib/faker/default/types.rb +84 -3
  67. data/lib/faker/default/university.rb +45 -0
  68. data/lib/faker/default/vehicle.rb +184 -4
  69. data/lib/faker/default/verb.rb +45 -0
  70. data/lib/faker/default/world_cup.rb +4 -4
  71. data/lib/faker/fantasy/tolkien.rb +67 -0
  72. data/lib/faker/games/clash_of_clans.rb +48 -0
  73. data/lib/faker/games/control.rb +113 -0
  74. data/lib/faker/games/dnd.rb +136 -0
  75. data/lib/faker/games/elder_scrolls.rb +26 -0
  76. data/lib/faker/games/heroes.rb +13 -0
  77. data/lib/faker/games/heroes_of_the_storm.rb +16 -5
  78. data/lib/faker/games/minecraft.rb +113 -0
  79. data/lib/faker/games/street_fighter.rb +61 -0
  80. data/lib/faker/games/super_mario.rb +48 -0
  81. data/lib/faker/games/touhou.rb +75 -0
  82. data/lib/faker/games/warhammer_fantasy.rb +74 -0
  83. data/lib/faker/games/world_of_warcraft.rb +26 -1
  84. data/lib/faker/japanese_media/conan.rb +48 -0
  85. data/lib/faker/japanese_media/doraemon.rb +48 -0
  86. data/lib/faker/japanese_media/dragon_ball.rb +26 -0
  87. data/lib/faker/japanese_media/naruto.rb +61 -0
  88. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  89. data/lib/faker/movies/departed.rb +49 -0
  90. data/lib/faker/movies/hobbit.rb +4 -4
  91. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  92. data/lib/faker/movies/lord_of_the_rings.rb +3 -3
  93. data/lib/faker/movies/movie.rb +13 -0
  94. data/lib/faker/movies/room.rb +63 -0
  95. data/lib/faker/movies/star_wars.rb +74 -2
  96. data/lib/faker/music/hiphop.rb +48 -0
  97. data/lib/faker/music/opera.rb +237 -1
  98. data/lib/faker/music/pearl_jam.rb +50 -0
  99. data/lib/faker/music/phish.rb +27 -1
  100. data/lib/faker/music/prince.rb +64 -0
  101. data/lib/faker/music/rock_band.rb +12 -0
  102. data/lib/faker/music/rush.rb +37 -0
  103. data/lib/faker/music/show.rb +49 -0
  104. data/lib/faker/quotes/quote.rb +80 -1
  105. data/lib/faker/quotes/rajnikanth.rb +1 -0
  106. data/lib/faker/quotes/shakespeare.rb +70 -0
  107. data/lib/faker/sports/volleyball.rb +74 -0
  108. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +13 -0
  109. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  110. data/lib/faker/tv_shows/buffy.rb +17 -4
  111. data/lib/faker/tv_shows/dr_who.rb +1 -1
  112. data/lib/faker/tv_shows/final_space.rb +51 -0
  113. data/lib/faker/tv_shows/futurama.rb +65 -0
  114. data/lib/faker/tv_shows/simpsons.rb +14 -0
  115. data/lib/faker/tv_shows/suits.rb +37 -0
  116. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +17 -4
  117. data/lib/faker/version.rb +1 -1
  118. data/lib/faker.rb +28 -23
  119. data/lib/helpers/base58.rb +1 -1
  120. data/lib/helpers/char.rb +22 -27
  121. data/lib/helpers/unique_generator.rb +0 -2
  122. data/lib/locales/de-AT.yml +4 -2
  123. data/lib/locales/de-CH.yml +1696 -1
  124. data/lib/locales/de.yml +4 -2
  125. data/lib/locales/en/address.yml +2 -0
  126. data/lib/locales/en/adjective.yml +179 -0
  127. data/lib/locales/en/animal.yml +1 -1
  128. data/lib/locales/en/aqua_teen_hunger_force.yml +33 -1
  129. data/lib/locales/en/bank.yml +1 -1
  130. data/lib/locales/en/barcode.yml +24 -0
  131. data/lib/locales/en/big_bang_theory.yml +38 -0
  132. data/lib/locales/en/blood.yml +13 -0
  133. data/lib/locales/en/buffy.yml +1 -1
  134. data/lib/locales/en/camera.yml +611 -0
  135. data/lib/locales/en/clash_of_clan.yml +101 -0
  136. data/lib/locales/en/company.yml +2 -2
  137. data/lib/locales/en/computer.yml +36 -0
  138. data/lib/locales/en/conan.yml +171 -0
  139. data/lib/locales/en/control.yml +247 -0
  140. data/lib/locales/en/demographic.yml +218 -5
  141. data/lib/locales/en/departed.yml +50 -0
  142. data/lib/locales/en/device.yml +112 -4
  143. data/lib/locales/en/dnd.yml +451 -0
  144. data/lib/locales/en/doraemon.yml +286 -0
  145. data/lib/locales/en/dota.yml +531 -63
  146. data/lib/locales/en/dragon_ball.yml +243 -1
  147. data/lib/locales/en/driving_license.yml +181 -0
  148. data/lib/locales/en/drone.yml +95 -0
  149. data/lib/locales/en/dune.yml +401 -131
  150. data/lib/locales/en/educator.yml +6 -0
  151. data/lib/locales/en/elder_scrolls.yml +583 -9
  152. data/lib/locales/en/fallout.yml +311 -133
  153. data/lib/locales/en/final_space.yml +37 -0
  154. data/lib/locales/en/finance.yml +53 -0
  155. data/lib/locales/en/football.yml +3 -3
  156. data/lib/locales/en/fresh_prince_of_bel_air.yml +1 -1
  157. data/lib/locales/en/futurama.yml +344 -0
  158. data/lib/locales/en/half_life.yml +84 -3
  159. data/lib/locales/en/heroes.yml +408 -3
  160. data/lib/locales/en/heroes_of_the_storm.yml +131 -4
  161. data/lib/locales/en/house.yml +1 -1
  162. data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
  163. data/lib/locales/en/jack_handey.yml +54 -0
  164. data/lib/locales/en/league_of_legends.yml +285 -6
  165. data/lib/locales/en/lebowski.yml +1 -1
  166. data/lib/locales/en/military.yml +179 -5
  167. data/lib/locales/en/minecraft.yml +663 -0
  168. data/lib/locales/en/mountain.yml +158 -0
  169. data/lib/locales/en/movie.yml +192 -1
  170. data/lib/locales/en/music.yml +451 -29
  171. data/lib/locales/en/myst.yml +87 -31
  172. data/lib/locales/en/name.yml +5 -4
  173. data/lib/locales/en/naruto.yml +231 -0
  174. data/lib/locales/en/one_piece.yml +2 -2
  175. data/lib/locales/en/opera.yml +168 -0
  176. data/lib/locales/en/overwatch.yml +2650 -2622
  177. data/lib/locales/en/pearl_jam.yml +213 -0
  178. data/lib/locales/en/phish.yml +392 -1
  179. data/lib/locales/en/pokemon.yml +417 -4
  180. data/lib/locales/en/prince.yml +227 -0
  181. data/lib/locales/en/quote.yml +692 -163
  182. data/lib/locales/en/rock_band.yml +1 -0
  183. data/lib/locales/en/room.yml +68 -0
  184. data/lib/locales/en/rush.yml +32 -0
  185. data/lib/locales/en/shakespeare.yml +21 -24
  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 +18 -4
  196. data/lib/locales/en/tolkien.yml +2453 -0
  197. data/lib/locales/en/touhou.yml +839 -0
  198. data/lib/locales/en/volleyball.yml +501 -0
  199. data/lib/locales/en/warhammer_fantasy.yml +582 -0
  200. data/lib/locales/en/witcher.yml +389 -7
  201. data/lib/locales/en/world_of_warcraft.yml +122 -4
  202. data/lib/locales/en/zelda.yml +962 -4
  203. data/lib/locales/en-AU.yml +50 -10
  204. data/lib/locales/en-CA.yml +2 -0
  205. data/lib/locales/en-GB.yml +1 -1
  206. data/lib/locales/en-IND.yml +2 -1
  207. data/lib/locales/en-MS.yml +2 -1
  208. data/lib/locales/en-NEP.yml +4 -1
  209. data/lib/locales/en-NZ.yml +3 -1
  210. data/lib/locales/en-PAK.yml +2 -1
  211. data/lib/locales/en-SG.yml +2 -1
  212. data/lib/locales/en-US.yml +36 -10
  213. data/lib/locales/en-au-ocker.yml +2 -1
  214. data/lib/locales/en.yml +0 -3
  215. data/lib/locales/es-AR.yml +4603 -0
  216. data/lib/locales/es.yml +56 -0
  217. data/lib/locales/fi-FI.yml +1 -1
  218. data/lib/locales/fr-CA.yml +21 -5
  219. data/lib/locales/fr-CH.yml +2 -2
  220. data/lib/locales/fr.yml +12 -6
  221. data/lib/locales/id.yml +3 -1
  222. data/lib/locales/it.yml +2 -1
  223. data/lib/locales/ja.yml +18 -1
  224. data/lib/locales/ko.yml +94 -2
  225. data/lib/locales/nb-NO.yml +4 -2
  226. data/lib/locales/pt-BR.yml +2 -1
  227. data/lib/locales/pt.yml +3 -1
  228. data/lib/locales/ru.yml +3 -1
  229. data/lib/locales/sk.yml +4 -2
  230. data/lib/locales/uk.yml +2 -0
  231. metadata +90 -23
  232. data/lib/locales/en/hobbit.yml +0 -19
  233. data/lib/locales/en/lord_of_the_rings.yml +0 -6
@@ -4,42 +4,132 @@ module Faker
4
4
  class Cosmere < Base
5
5
  flexible :cosmere
6
6
  class << self
7
+ ##
8
+ # Produces a random aon.
9
+ #
10
+ # @return [String]
11
+ #
12
+ # @example
13
+ # Faker::Cosmere.aon #=> "Rao"
14
+ #
15
+ # @faker.version 1.9.2
7
16
  def aon
8
17
  sample(aons)
9
18
  end
10
19
 
20
+ ##
21
+ # Produces a random shard world.
22
+ #
23
+ # @return [String]
24
+ #
25
+ # @example
26
+ # Faker::Cosmere.shard_world #=> "Yolen"
27
+ #
28
+ # @faker.version 1.9.2
11
29
  def shard_world
12
30
  sample(shard_worlds)
13
31
  end
14
32
 
33
+ ##
34
+ # Produces a random shard.
35
+ #
36
+ # @return [String]
37
+ #
38
+ # @example
39
+ # Faker::Cosmere.shard #=> "Ambition"
40
+ #
41
+ # @faker.version 1.9.2
15
42
  def shard
16
43
  sample(shards)
17
44
  end
18
45
 
46
+ ##
47
+ # Produces a random surge.
48
+ #
49
+ # @return [String]
50
+ #
51
+ # @example
52
+ # Faker::Cosmere.surge #=> "Progression"
53
+ #
54
+ # @faker.version 1.9.2
19
55
  def surge
20
56
  sample(surges)
21
57
  end
22
58
 
59
+ ##
60
+ # Produces a random knight radiant.
61
+ #
62
+ # @return [String]
63
+ #
64
+ # @example
65
+ # Faker::Cosmere.knight_radiant #=> "Truthwatcher"
66
+ #
67
+ # @faker.version 1.9.2
23
68
  def knight_radiant
24
69
  sample(knights_radiant)
25
70
  end
26
71
 
72
+ ##
73
+ # Produces a random metal.
74
+ #
75
+ # @return [String]
76
+ #
77
+ # @example
78
+ # Faker::Cosmere.metal #=> "Brass"
79
+ #
80
+ # @faker.version 1.9.2
27
81
  def metal
28
82
  sample(metals)
29
83
  end
30
84
 
85
+ ##
86
+ # Produces a random allomancer.
87
+ #
88
+ # @return [String]
89
+ #
90
+ # @example
91
+ # Faker::Cosmere.allomancer #=> "Coinshot"
92
+ #
93
+ # @faker.version 1.9.2
31
94
  def allomancer
32
95
  sample(allomancers)
33
96
  end
34
97
 
98
+ ##
99
+ # Produces a random feruchemist.
100
+ #
101
+ # @return [String]
102
+ #
103
+ # @example
104
+ # Faker::Cosmere.feruchemist #=> "Archivist"
105
+ #
106
+ # @faker.version 1.9.2
35
107
  def feruchemist
36
108
  sample(feruchemists)
37
109
  end
38
110
 
111
+ ##
112
+ # Produces a random herald.
113
+ #
114
+ # @return [String]
115
+ #
116
+ # @example
117
+ # Faker::Cosmere.herald #=> "Ishar"
118
+ #
119
+ # @faker.version 1.9.2
39
120
  def herald
40
121
  sample(heralds)
41
122
  end
42
123
 
124
+ ##
125
+ # Produces a random spren.
126
+ #
127
+ # @return [String]
128
+ #
129
+ # @example
130
+ # Faker::Cosmere.spren #=> "Flamespren"
131
+ #
132
+ # @faker.version 1.9.2
43
133
  def spren
44
134
  sample(sprens)
45
135
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'digest'
3
+ require 'openssl'
4
4
 
5
5
  module Faker
6
6
  class Crypto < Base
@@ -15,7 +15,7 @@ module Faker
15
15
  #
16
16
  # @faker.version 1.6.4
17
17
  def md5
18
- Digest::MD5.hexdigest(Lorem.characters)
18
+ OpenSSL::Digest::MD5.hexdigest(Lorem.characters)
19
19
  end
20
20
 
21
21
  ##
@@ -28,7 +28,7 @@ module Faker
28
28
  #
29
29
  # @faker.version 1.6.4
30
30
  def sha1
31
- Digest::SHA1.hexdigest(Lorem.characters)
31
+ OpenSSL::Digest::SHA1.hexdigest(Lorem.characters)
32
32
  end
33
33
 
34
34
  ##
@@ -41,7 +41,7 @@ module Faker
41
41
  #
42
42
  # @faker.version 1.6.4
43
43
  def sha256
44
- Digest::SHA256.hexdigest(Lorem.characters)
44
+ OpenSSL::Digest::SHA256.hexdigest(Lorem.characters)
45
45
  end
46
46
  end
47
47
  end
@@ -7,6 +7,15 @@ module Faker
7
7
  ACRONYM = 1
8
8
  URL_LOGO = 2
9
9
 
10
+ ##
11
+ # Produces a random crypto coin name.
12
+ #
13
+ # @return [String]
14
+ #
15
+ # @example
16
+ # Faker::CryptoCoin.coin_name #=> "Bitcoin"
17
+ #
18
+ # @faker.version 1.9.2
10
19
  def coin_name(legacy_coin = NOT_GIVEN, coin: coin_array)
11
20
  warn_for_deprecated_arguments do |keywords|
12
21
  keywords << :coin if legacy_coin != NOT_GIVEN
@@ -15,6 +24,15 @@ module Faker
15
24
  coin[COIN_NAME]
16
25
  end
17
26
 
27
+ ##
28
+ # Produces a random crypto coin acronym.
29
+ #
30
+ # @return [String]
31
+ #
32
+ # @example
33
+ # Faker::CryptoCoin.acronym #=> "BTC"
34
+ #
35
+ # @faker.version 1.9.2
18
36
  def acronym(legacy_coin = NOT_GIVEN, coin: coin_array)
19
37
  warn_for_deprecated_arguments do |keywords|
20
38
  keywords << :coin if legacy_coin != NOT_GIVEN
@@ -23,6 +41,15 @@ module Faker
23
41
  coin[ACRONYM]
24
42
  end
25
43
 
44
+ ##
45
+ # Produces a random crypto coin logo url.
46
+ #
47
+ # @return [String]
48
+ #
49
+ # @example
50
+ # Faker::CryptoCoin.url_logo #=> "https://i.imgur.com/EFz61Ei.png"
51
+ #
52
+ # @faker.version 1.9.2
26
53
  def url_logo(legacy_coin = NOT_GIVEN, coin: coin_array)
27
54
  warn_for_deprecated_arguments do |keywords|
28
55
  keywords << :coin if legacy_coin != NOT_GIVEN
@@ -31,10 +58,28 @@ module Faker
31
58
  coin[URL_LOGO]
32
59
  end
33
60
 
61
+ ##
62
+ # Produces a random crypto coin's name, acronym and logo in an array.
63
+ #
64
+ # @return [Array<String>]
65
+ #
66
+ # @example
67
+ # Faker::CryptoCoin.coin_array #=> ["Dash", "DASH", "https://i.imgur.com/2uX91cb.png"]
68
+ #
69
+ # @faker.version 1.9.2
34
70
  def coin_array
35
71
  fetch('crypto_coin.coin').split(',').map(&:strip)
36
72
  end
37
73
 
74
+ ##
75
+ # Produces a random crypto coin's name, acronym and logo in a hash.
76
+ #
77
+ # @return [Hash]
78
+ #
79
+ # @example
80
+ # Faker::CryptoCoin.coin_hash {:name=>"Ethereum", :acronym=>"ETH", :url_logo=>"https://i.imgur.com/uOPFCXj.png"}
81
+ #
82
+ # @faker.version 1.9.2
38
83
  def coin_hash
39
84
  coin = coin_array
40
85
 
@@ -6,13 +6,15 @@ module Faker
6
6
  ##
7
7
  # Produce a random date between two dates.
8
8
  #
9
- # @param from [Date] The start of the usable date range.
10
- # @param to [Date] The end of the usable date range.
9
+ # @param from [Date, String] The start of the usable date range.
10
+ # @param to [Date, String] The end of the usable date range.
11
11
  # @return [Date]
12
12
  #
13
- # @example
14
- # Faker::Date.between(from: 2.days.ago, to: Date.today)
15
- # #=> #<Date: 2014-09-24>
13
+ # @example if used with or without Rails (Active Support)
14
+ # Faker::Date.between(from: '2014-09-23', to: '2014-09-25') #=> #<Date: 2014-09-24>
15
+ #
16
+ # @example if used with Rails (Active Support)
17
+ # Faker::Date.between(from: 2.days.ago, to: Date.today) #=> #<Date: 2014-09-24>
16
18
  #
17
19
  # @faker.version 1.0.0
18
20
  def between(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, from:, to:)
@@ -32,14 +34,16 @@ module Faker
32
34
  ##
33
35
  # Produce a random date between two dates.
34
36
  #
35
- # @param from [Date] The start of the usable date range.
36
- # @param to [Date] The end of the usable date range.
37
- # @param excepted [Date] A date to exclude.
37
+ # @param from [Date, String] The start of the usable date range.
38
+ # @param to [Date, String] The end of the usable date range.
39
+ # @param excepted [Date, String] A date to exclude.
38
40
  # @return [Date]
39
41
  #
40
- # @example
41
- # Faker::Date.between_except(from: 1.year.ago, to: 1.year.from_now, excepted: Date.today)
42
- # #=> #<Date: 2014-10-03>
42
+ # @example if used with or without Rails (Active Support)
43
+ # Faker::Date.between_except(from: '2014-09-23', to: '2015-09-25', excepted: '2015-01-24') #=> #<Date: 2014-10-03>
44
+ #
45
+ # @example if used with Rails (Active Support)
46
+ # Faker::Date.between_except(from: 1.year.ago, to: 1.year.from_now, excepted: Date.today) #=> #<Date: 2014-10-03>
43
47
  #
44
48
  # @faker.version 1.6.2
45
49
  def between_except(legacy_from = NOT_GIVEN, legacy_to = NOT_GIVEN, legacy_excepted = NOT_GIVEN, from:, to:, excepted:)
@@ -149,7 +153,7 @@ module Faker
149
153
  # @example
150
154
  # Faker::Date.in_date_period(month: 2) #=> #<Date: 2019-02-26>
151
155
  #
152
- # @faker.version next
156
+ # @faker.version 2.13.0
153
157
  def in_date_period(month: nil, year: ::Date.today.year)
154
158
  from = ::Date.new(year, month || 1, 1)
155
159
  to = ::Date.new(year, month || 12, ::Date.civil(year, month || 12, -1).day)
@@ -7,8 +7,25 @@ module Faker
7
7
 
8
8
  class << self
9
9
  # rubocop:disable Metrics/ParameterLists
10
+
11
+ ##
12
+ # Produces a random British driving licence number.
13
+ #
14
+ # @param last_name [String] The last name of the driving licence's owner.
15
+ # @param initials [String] The initials of the driving licence's owner.
16
+ # @param gender [String] The gender of the driving licence's owner.
17
+ # @param date_of_birth [String] The date of birth of the driving licence's owner.
18
+ # @return [String]
19
+ #
20
+ # @example
21
+ # Faker::DrivingLicence.british_driving_licence #=> "MCDER712081VF7EK"
22
+ # Faker::DrivingLicence.british_driving_licence(last_name: "O'Carroll",
23
+ # initials: "J",
24
+ # gender: :female,
25
+ # date_of_birth: Date.parse("1986-10-24")) #=> "OCARR815246J91HT"
26
+ #
27
+ # @faker.version 1.9.2
10
28
  def british_driving_licence(legacy_last_name = NOT_GIVEN, legacy_initials = NOT_GIVEN, legacy_gender = NOT_GIVEN, legacy_date_of_birth = NOT_GIVEN, last_name: Faker::Name.last_name, initials: Faker::Name.initials, gender: random_gender, date_of_birth: Faker::Date.birthday(min_age: 18, max_age: 65))
11
- # rubocop:enable Metrics/ParameterLists
12
29
  warn_for_deprecated_arguments do |keywords|
13
30
  keywords << :last_name if legacy_last_name != NOT_GIVEN
14
31
  keywords << :initials if legacy_initials != NOT_GIVEN
@@ -23,11 +40,37 @@ module Faker
23
40
  gb_licence_checksum
24
41
  ].join
25
42
  end
43
+ # rubocop:enable Metrics/ParameterLists
26
44
 
45
+ ##
46
+ # Produces a random Northern Irish licence number.
47
+ #
48
+ # @return [String]
49
+ #
50
+ # @example
51
+ # Faker::DrivingLicence.northern_irish_driving_licence #=> "70702548"
52
+ #
53
+ # @faker.version 1.9.2
27
54
  def northern_irish_driving_licence
28
55
  Faker::Number.number(digits: 8).to_s
29
56
  end
30
57
 
58
+ ##
59
+ # Produces a random UK driving licence number in either GB or NI format, at a rate consistent with their relative populations
60
+ #
61
+ # @overload uk_driving_licence(last_name, initials, gender, date_of_birth)
62
+ # @param last_name [String] The last name of the driving licence's owner.
63
+ # @param initials [String] The initials of the driving licence's owner.
64
+ # @param gender [String] The gender of the driving licence's owner.
65
+ # @param date_of_birth [String] The date of birth of the driving licence's owner.
66
+ # @overload uk_driving_licence()
67
+ # @return [String]
68
+ #
69
+ # @example
70
+ # Faker::DrivingLicence.uk_driving_licence #=> "OCARR815246J91HT"
71
+ # Faker::DrivingLicence.uk_driving_licence #=> "70702548"
72
+ #
73
+ # @faker.version 1.9.2
31
74
  def uk_driving_licence(*args)
32
75
  if Faker::Config.random.rand < NI_CHANCE
33
76
  northern_irish_driving_licence
@@ -36,6 +79,23 @@ module Faker
36
79
  end
37
80
  end
38
81
 
82
+ ##
83
+ # Produces a random USA driving licence number by state code passed.
84
+ #
85
+ # @return [String]
86
+ #
87
+ # @example
88
+ # Faker::DrivingLicence.usa_driving_licence #=> "V5598249"
89
+ # Faker::DrivingLicence.usa_driving_licence('new mexico') #=> "270692028"
90
+ # Faker::DrivingLicence.usa_driving_licence('New Mexico') #=> "68178637"
91
+ #
92
+ # @faker.version 2.14.0
93
+ def usa_driving_licence(state = 'California')
94
+ bothify(fetch("driving_licence.usa.#{state.to_s.strip.downcase.gsub(' ', '_')}"))
95
+ rescue I18n::MissingTranslationData => _e
96
+ raise InvalidStatePassed, "Invalid state code passed for USA, '#{state}'"
97
+ end
98
+
39
99
  private
40
100
 
41
101
  def random_gender
@@ -62,4 +122,10 @@ module Faker
62
122
  end
63
123
  end
64
124
  end
125
+
126
+ class InvalidStatePassed < StandardError
127
+ def initialize(msg = 'Invalid state code passed')
128
+ super
129
+ end
130
+ end
65
131
  end