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
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Computer < Base
5
+ class << self
6
+ ##
7
+ # Produces the name of a computer platform.
8
+ #
9
+ # @return [String]
10
+ #
11
+ # @example
12
+ # Faker::Computer.platform #=> "Linux"
13
+ #
14
+ # @faker.version 2.12.0
15
+ def platform
16
+ fetch('computer.platform')
17
+ end
18
+
19
+ ##
20
+ # Produces the name of a computer type.
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::Computer.type #=> "server"
26
+ #
27
+ # @faker.version 2.12.0
28
+ def type
29
+ fetch('computer.type')
30
+ end
31
+
32
+ ##
33
+ # Produces the name of a computer os.
34
+ #
35
+ # @param platform [String] optionally specify the platform `linux`, `macos`, or `windows`.
36
+ # @return [String]
37
+ #
38
+ # @example
39
+ # Faker::Computer.os #=> "RHEL 6.10"
40
+ #
41
+ # @faker.version 2.12.0
42
+ def os(platform: self.platform)
43
+ platform = self.platform unless fetch_all('computer.platform').include?(platform)
44
+ fetch("computer.os.#{platform.downcase}")
45
+ end
46
+
47
+ ##
48
+ # Produces a string with computer platform and os
49
+ #
50
+ # @return [String]
51
+ #
52
+ # @example
53
+ # Faker::Computer.stack #=> "Linux, RHEL 6.10"
54
+ #
55
+ # @faker.version 2.12.0
56
+ def stack
57
+ platform = self.platform
58
+ os = fetch("computer.os.#{platform.downcase}")
59
+ "#{platform}, #{os}"
60
+ end
61
+ end
62
+ end
63
+ end
@@ -2,26 +2,80 @@
2
2
 
3
3
  module Faker
4
4
  class Construction < Base
5
+ ##
6
+ # Produces a random material.
7
+ #
8
+ # @return [String]
9
+ #
10
+ # @example
11
+ # Faker::Construction.material #=> "Wood"
12
+ #
13
+ # @faker.version 1.9.2
5
14
  def self.material
6
15
  fetch('construction.materials')
7
16
  end
8
17
 
18
+ ##
19
+ # Produces a random heavy equipment.
20
+ #
21
+ # @return [String]
22
+ #
23
+ # @example
24
+ # Faker::Construction.heavy_equipment #=> "Excavator"
25
+ #
26
+ # @faker.version 1.9.2
9
27
  def self.heavy_equipment
10
28
  fetch('construction.heavy_equipment')
11
29
  end
12
30
 
31
+ ##
32
+ # Produces a random trade.
33
+ #
34
+ # @return [String]
35
+ #
36
+ # @example
37
+ # Faker::Construction.trade #=> "Carpenter"
38
+ #
39
+ # @faker.version 1.9.2
13
40
  def self.trade
14
41
  fetch('construction.trades')
15
42
  end
16
43
 
44
+ ##
45
+ # Produces a random subcontract category.
46
+ #
47
+ # @return [String]
48
+ #
49
+ # @example
50
+ # Faker::Construction.subcontract_category #=> "Curb & Gutter"
51
+ #
52
+ # @faker.version 1.9.2
17
53
  def self.subcontract_category
18
54
  fetch('construction.subcontract_categories')
19
55
  end
20
56
 
57
+ ##
58
+ # Produces a random standard cost code.
59
+ #
60
+ # @return [String]
61
+ #
62
+ # @example
63
+ # Faker::Construction.standard_cost_code #=> "1-000 - Purpose"
64
+ #
65
+ # @faker.version 1.9.2
21
66
  def self.standard_cost_code
22
67
  fetch('construction.standard_cost_codes')
23
68
  end
24
69
 
70
+ ##
71
+ # Produces a random role.
72
+ #
73
+ # @return [String]
74
+ #
75
+ # @example
76
+ # Faker::Construction.role #=> "Engineer"
77
+ #
78
+ # @faker.version 1.9.2
25
79
  def self.role
26
80
  fetch('construction.roles')
27
81
  end
@@ -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
@@ -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)
@@ -6,6 +6,23 @@ module Faker
6
6
  NI_CHANCE = 0.03 # NI Pop is about 3% of total UK population
7
7
 
8
8
  class << self
9
+ ##
10
+ # Produces a random British driving licence number.
11
+ #
12
+ # @param last_name [String] The last name of the driving licence's owner.
13
+ # @param initials [String] The initials of the driving licence's owner.
14
+ # @param gender [String] The gender of the driving licence's owner.
15
+ # @param date_of_birth [String] The date of birth of the driving licence's owner.
16
+ # @return [String]
17
+ #
18
+ # @example
19
+ # Faker::DrivingLicence.british_driving_licence #=> "MCDER712081VF7EK"
20
+ # Faker::DrivingLicence.british_driving_licence(last_name: "O'Carroll",
21
+ # initials: "J",
22
+ # gender: :female,
23
+ # date_of_birth: Date.parse("1986-10-24")) #=> "OCARR815246J91HT"
24
+ #
25
+ # @faker.version 1.9.2
9
26
  # rubocop:disable Metrics/ParameterLists
10
27
  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
28
  # rubocop:enable Metrics/ParameterLists
@@ -24,10 +41,35 @@ module Faker
24
41
  ].join
25
42
  end
26
43
 
44
+ ##
45
+ # Produces a random Northern Irish licence number.
46
+ #
47
+ # @return [String]
48
+ #
49
+ # @example
50
+ # Faker::DrivingLicence.northern_irish_driving_licence #=> "70702548"
51
+ #
52
+ # @faker.version 1.9.2
27
53
  def northern_irish_driving_licence
28
54
  Faker::Number.number(digits: 8).to_s
29
55
  end
30
56
 
57
+ ##
58
+ # Produces a random UK driving licence number in either GB or NI format, at a rate consistent with their relative populations
59
+ #
60
+ # @overload uk_driving_licence(last_name, initials, gender, date_of_birth)
61
+ # @param last_name [String] The last name of the driving licence's owner.
62
+ # @param initials [String] The initials of the driving licence's owner.
63
+ # @param gender [String] The gender of the driving licence's owner.
64
+ # @param date_of_birth [String] The date of birth of the driving licence's owner.
65
+ # @overload uk_driving_licence()
66
+ # @return [String]
67
+ #
68
+ # @example
69
+ # Faker::DrivingLicence.uk_driving_licence #=> "OCARR815246J91HT"
70
+ # Faker::DrivingLicence.uk_driving_licence #=> "70702548"
71
+ #
72
+ # @faker.version 1.9.2
31
73
  def uk_driving_licence(*args)
32
74
  if Faker::Config.random.rand < NI_CHANCE
33
75
  northern_irish_driving_licence
@@ -36,6 +78,23 @@ module Faker
36
78
  end
37
79
  end
38
80
 
81
+ ##
82
+ # Produces a random USA driving licence number by state code passed.
83
+ #
84
+ # @return [String]
85
+ #
86
+ # @example
87
+ # Faker::DrivingLicence.usa_driving_licence #=> "V5598249"
88
+ # Faker::DrivingLicence.usa_driving_licence('new mexico') #=> "270692028"
89
+ # Faker::DrivingLicence.usa_driving_licence('New Mexico') #=> "68178637"
90
+ #
91
+ # @faker.version 2.14.0
92
+ def usa_driving_licence(state = 'California')
93
+ bothify(fetch("driving_licence.usa.#{state.to_s.strip.downcase.gsub(' ', '_')}"))
94
+ rescue I18n::MissingTranslationData => _e
95
+ raise InvalidStatePassed, "Invalid state code passed for USA, '#{state}'"
96
+ end
97
+
39
98
  private
40
99
 
41
100
  def random_gender
@@ -62,4 +121,10 @@ module Faker
62
121
  end
63
122
  end
64
123
  end
124
+
125
+ class InvalidStatePassed < StandardError
126
+ def initialize(msg = 'Invalid state code passed')
127
+ super
128
+ end
129
+ end
65
130
  end