faker 2.12.0 → 2.16.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 (201) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +240 -0
  3. data/History.md +4 -4
  4. data/README.md +18 -1
  5. data/lib/faker.rb +14 -14
  6. data/lib/faker/blockchain/aeternity.rb +4 -4
  7. data/lib/faker/blockchain/tezos.rb +28 -0
  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 +34 -4
  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 +4 -6
  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 +3 -3
  17. data/lib/faker/default/camera.rb +46 -0
  18. data/lib/faker/default/cannabis.rb +10 -0
  19. data/lib/faker/default/chile_rut.rb +47 -3
  20. data/lib/faker/default/chuck_norris.rb +1 -0
  21. data/lib/faker/default/code.rb +98 -17
  22. data/lib/faker/default/commerce.rb +1 -1
  23. data/lib/faker/default/company.rb +57 -11
  24. data/lib/faker/default/computer.rb +4 -4
  25. data/lib/faker/default/date.rb +16 -12
  26. data/lib/faker/default/driving_licence.rb +26 -2
  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 +6 -4
  30. data/lib/faker/default/finance.rb +21 -0
  31. data/lib/faker/default/food.rb +1 -1
  32. data/lib/faker/default/gender.rb +1 -1
  33. data/lib/faker/default/hipster.rb +14 -11
  34. data/lib/faker/default/id_number.rb +88 -2
  35. data/lib/faker/default/internet.rb +266 -12
  36. data/lib/faker/default/internet_http.rb +48 -0
  37. data/lib/faker/default/invoice.rb +1 -1
  38. data/lib/faker/default/json.rb +7 -6
  39. data/lib/faker/default/lorem.rb +160 -5
  40. data/lib/faker/default/lorem_flickr.rb +67 -7
  41. data/lib/faker/default/lorem_pixel.rb +23 -0
  42. data/lib/faker/default/markdown.rb +91 -0
  43. data/lib/faker/default/measurement.rb +3 -2
  44. data/lib/faker/default/military.rb +26 -0
  45. data/lib/faker/default/mountain.rb +33 -0
  46. data/lib/faker/default/name.rb +15 -0
  47. data/lib/faker/default/nhs.rb +19 -0
  48. data/lib/faker/default/number.rb +6 -8
  49. data/lib/faker/default/omniauth.rb +62 -14
  50. data/lib/faker/default/placeholdit.rb +3 -2
  51. data/lib/faker/default/relationship.rb +1 -1
  52. data/lib/faker/default/space.rb +1 -1
  53. data/lib/faker/default/string.rb +3 -2
  54. data/lib/faker/default/stripe.rb +3 -3
  55. data/lib/faker/default/vehicle.rb +1 -1
  56. data/lib/faker/default/world_cup.rb +4 -4
  57. data/lib/faker/fantasy/tolkien.rb +67 -0
  58. data/lib/faker/games/clash_of_clans.rb +48 -0
  59. data/lib/faker/games/control.rb +9 -9
  60. data/lib/faker/games/dnd.rb +91 -16
  61. data/lib/faker/games/elder_scrolls.rb +26 -0
  62. data/lib/faker/games/heroes.rb +13 -0
  63. data/lib/faker/games/heroes_of_the_storm.rb +16 -5
  64. data/lib/faker/games/minecraft.rb +113 -0
  65. data/lib/faker/games/street_fighter.rb +61 -0
  66. data/lib/faker/games/super_mario.rb +48 -0
  67. data/lib/faker/games/touhou.rb +75 -0
  68. data/lib/faker/games/warhammer_fantasy.rb +5 -5
  69. data/lib/faker/games/world_of_warcraft.rb +26 -1
  70. data/lib/faker/japanese_media/conan.rb +48 -0
  71. data/lib/faker/japanese_media/doraemon.rb +48 -0
  72. data/lib/faker/japanese_media/dragon_ball.rb +26 -0
  73. data/lib/faker/japanese_media/naruto.rb +61 -0
  74. data/lib/faker/japanese_media/studio_ghibli.rb +48 -0
  75. data/lib/faker/movies/departed.rb +3 -3
  76. data/lib/faker/movies/hobbit.rb +4 -4
  77. data/lib/faker/movies/how_to_train_your_dragon.rb +48 -0
  78. data/lib/faker/movies/lord_of_the_rings.rb +3 -3
  79. data/lib/faker/movies/movie.rb +13 -0
  80. data/lib/faker/movies/room.rb +63 -0
  81. data/lib/faker/movies/star_wars.rb +74 -2
  82. data/lib/faker/music/hiphop.rb +48 -0
  83. data/lib/faker/music/opera.rb +237 -1
  84. data/lib/faker/music/pearl_jam.rb +3 -3
  85. data/lib/faker/music/phish.rb +2 -2
  86. data/lib/faker/music/prince.rb +64 -0
  87. data/lib/faker/music/rock_band.rb +12 -0
  88. data/lib/faker/music/rush.rb +37 -0
  89. data/lib/faker/music/show.rb +3 -3
  90. data/lib/faker/quotes/quote.rb +26 -0
  91. data/lib/faker/quotes/rajnikanth.rb +1 -0
  92. data/lib/faker/quotes/shakespeare.rb +34 -0
  93. data/lib/faker/sports/volleyball.rb +74 -0
  94. data/lib/faker/tv_shows/aqua_teen_hunger_force.rb +13 -0
  95. data/lib/faker/tv_shows/big_bang_theory.rb +37 -0
  96. data/lib/faker/tv_shows/buffy.rb +17 -4
  97. data/lib/faker/tv_shows/dr_who.rb +1 -1
  98. data/lib/faker/tv_shows/final_space.rb +51 -0
  99. data/lib/faker/tv_shows/futurama.rb +65 -0
  100. data/lib/faker/tv_shows/simpsons.rb +14 -0
  101. data/lib/faker/tv_shows/suits.rb +3 -3
  102. data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +17 -4
  103. data/lib/faker/version.rb +1 -1
  104. data/lib/helpers/base58.rb +1 -1
  105. data/lib/helpers/char.rb +20 -26
  106. data/lib/helpers/unique_generator.rb +3 -2
  107. data/lib/locales/de-AT.yml +4 -2
  108. data/lib/locales/de-CH.yml +3 -1
  109. data/lib/locales/de.yml +4 -2
  110. data/lib/locales/en-AU.yml +8 -2
  111. data/lib/locales/en-GB.yml +1 -1
  112. data/lib/locales/en-IND.yml +2 -1
  113. data/lib/locales/en-MS.yml +2 -1
  114. data/lib/locales/en-NEP.yml +4 -1
  115. data/lib/locales/en-NZ.yml +3 -1
  116. data/lib/locales/en-PAK.yml +2 -1
  117. data/lib/locales/en-SG.yml +2 -1
  118. data/lib/locales/en-US.yml +10 -10
  119. data/lib/locales/en-au-ocker.yml +2 -1
  120. data/lib/locales/en.yml +0 -3
  121. data/lib/locales/en/adjective.yml +179 -0
  122. data/lib/locales/en/animal.yml +1 -1
  123. data/lib/locales/en/aqua_teen_hunger_force.yml +33 -1
  124. data/lib/locales/en/bank.yml +1 -1
  125. data/lib/locales/en/barcode.yml +24 -0
  126. data/lib/locales/en/big_bang_theory.yml +38 -0
  127. data/lib/locales/en/buffy.yml +1 -1
  128. data/lib/locales/en/camera.yml +611 -0
  129. data/lib/locales/en/clash_of_clan.yml +101 -0
  130. data/lib/locales/en/company.yml +2 -2
  131. data/lib/locales/en/conan.yml +171 -0
  132. data/lib/locales/en/demographic.yml +218 -5
  133. data/lib/locales/en/dnd.yml +430 -33
  134. data/lib/locales/en/doraemon.yml +286 -0
  135. data/lib/locales/en/dota.yml +531 -63
  136. data/lib/locales/en/dragon_ball.yml +243 -1
  137. data/lib/locales/en/driving_license.yml +181 -0
  138. data/lib/locales/en/drone.yml +95 -0
  139. data/lib/locales/en/dune.yml +401 -131
  140. data/lib/locales/en/elder_scrolls.yml +583 -9
  141. data/lib/locales/en/fallout.yml +311 -133
  142. data/lib/locales/en/final_space.yml +37 -0
  143. data/lib/locales/en/finance.yml +53 -0
  144. data/lib/locales/en/football.yml +3 -3
  145. data/lib/locales/en/fresh_prince_of_bel_air.yml +1 -1
  146. data/lib/locales/en/futurama.yml +344 -0
  147. data/lib/locales/en/half_life.yml +84 -3
  148. data/lib/locales/en/heroes.yml +408 -3
  149. data/lib/locales/en/heroes_of_the_storm.yml +131 -4
  150. data/lib/locales/en/how_to_train_your_dragon.yml +174 -0
  151. data/lib/locales/en/jack_handey.yml +54 -0
  152. data/lib/locales/en/league_of_legends.yml +285 -6
  153. data/lib/locales/en/lebowski.yml +1 -1
  154. data/lib/locales/en/military.yml +179 -5
  155. data/lib/locales/en/minecraft.yml +663 -0
  156. data/lib/locales/en/mountain.yml +158 -0
  157. data/lib/locales/en/movie.yml +192 -1
  158. data/lib/locales/en/music.yml +451 -29
  159. data/lib/locales/en/myst.yml +87 -31
  160. data/lib/locales/en/name.yml +5 -4
  161. data/lib/locales/en/naruto.yml +231 -0
  162. data/lib/locales/en/opera.yml +168 -0
  163. data/lib/locales/en/overwatch.yml +2650 -2622
  164. data/lib/locales/en/pokemon.yml +417 -4
  165. data/lib/locales/en/prince.yml +227 -0
  166. data/lib/locales/en/quote.yml +692 -163
  167. data/lib/locales/en/rock_band.yml +1 -0
  168. data/lib/locales/en/room.yml +68 -0
  169. data/lib/locales/en/rush.yml +32 -0
  170. data/lib/locales/en/simpsons.yml +668 -0
  171. data/lib/locales/en/source.yml +30 -0
  172. data/lib/locales/en/star_trek.yml +1 -1
  173. data/lib/locales/en/star_wars.yml +1 -0
  174. data/lib/locales/en/street_fighter.yml +1524 -0
  175. data/lib/locales/en/studio_ghibli.yml +107 -0
  176. data/lib/locales/en/super_mario.yml +58 -0
  177. data/lib/locales/en/super_smash_bros.yml +18 -4
  178. data/lib/locales/en/tolkien.yml +2453 -0
  179. data/lib/locales/en/touhou.yml +839 -0
  180. data/lib/locales/en/volleyball.yml +501 -0
  181. data/lib/locales/en/witcher.yml +389 -7
  182. data/lib/locales/en/world_of_warcraft.yml +122 -4
  183. data/lib/locales/en/zelda.yml +962 -4
  184. data/lib/locales/es.yml +56 -0
  185. data/lib/locales/fi-FI.yml +1 -1
  186. data/lib/locales/fr-CA.yml +19 -5
  187. data/lib/locales/fr-CH.yml +2 -2
  188. data/lib/locales/fr.yml +12 -6
  189. data/lib/locales/id.yml +3 -1
  190. data/lib/locales/it.yml +2 -1
  191. data/lib/locales/ja.yml +10 -1
  192. data/lib/locales/ko.yml +34 -24
  193. data/lib/locales/nb-NO.yml +4 -2
  194. data/lib/locales/pt-BR.yml +1 -1
  195. data/lib/locales/pt.yml +3 -1
  196. data/lib/locales/ru.yml +3 -1
  197. data/lib/locales/sk.yml +4 -2
  198. data/lib/locales/uk.yml +2 -0
  199. metadata +66 -18
  200. data/lib/locales/en/hobbit.yml +0 -19
  201. data/lib/locales/en/lord_of_the_rings.yml +0 -6
@@ -121,7 +121,7 @@ module Faker
121
121
  price = (rand(range) * 100).floor / 100.0
122
122
  if as_string
123
123
  price_parts = price.to_s.split('.')
124
- price = price_parts[0] + '.' + price_parts[-1].ljust(2, '0')
124
+ price = "#{price_parts[0]}.#{price_parts[-1].ljust(2, '0')}"
125
125
  end
126
126
  price
127
127
  end
@@ -162,12 +162,17 @@ module Faker
162
162
  # @faker.version 1.8.5
163
163
  #
164
164
  # Get a random Spanish organization number. See more here https://es.wikipedia.org/wiki/N%C3%BAmero_de_identificaci%C3%B3n_fiscal
165
- def spanish_organisation_number
165
+ def spanish_organisation_number(organization_type: nil)
166
166
  # Valid leading character: A, B, C, D, E, F, G, H, J, N, P, Q, R, S, U, V, W
167
- # 7 digit numbers
167
+ # format: 1 digit letter (organization type) + 7 digit numbers + 1 digit control (letter or number based on
168
+ # organization type)
168
169
  letters = %w[A B C D E F G H J N P Q R S U V W]
169
- base = [sample(letters), format('%07d', rand(10**7))].join
170
- base
170
+
171
+ organization_type = sample(letters) unless letters.include?(organization_type)
172
+ code = format('%07d', rand(10**7))
173
+ control = spanish_cif_control_digit(organization_type, code)
174
+
175
+ [organization_type, code, control].join
171
176
  end
172
177
 
173
178
  ##
@@ -399,7 +404,18 @@ module Faker
399
404
  formatted ? format('%s.%s.%s/%s-%s', *number.scan(/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/).flatten) : number
400
405
  end
401
406
 
407
+ ##
402
408
  # Get a random Russian tax number.
409
+ # @param region [String] Any region string
410
+ # @param type [Symbol] Legeal or not, defaults to :legal
411
+ #
412
+ # @return [String]
413
+ # @example
414
+ # Faker::Company.russian_tax_number #=> "0415584064"
415
+ # Faker::Company.russian_tax_number(region: 'AZ') #=> "AZ50124562"
416
+ # Faker::Company.russian_tax_number(region: 'AZ', type: false) #=> "AZ8802315465"
417
+ #
418
+ # @faker.version 1.9.4
403
419
  def russian_tax_number(region: nil, type: :legal)
404
420
  inn_number(region, type)
405
421
  end
@@ -459,13 +475,11 @@ module Faker
459
475
  end
460
476
  end
461
477
 
462
- control_digit = if (sum % 10).zero?
463
- 0
464
- else
465
- (sum / 10 + 1) * 10 - sum
466
- end
467
-
468
- control_digit
478
+ if (sum % 10).zero?
479
+ 0
480
+ else
481
+ (sum / 10 + 1) * 10 - sum
482
+ end
469
483
  end
470
484
 
471
485
  def abn_checksum(abn)
@@ -504,7 +518,14 @@ module Faker
504
518
  #
505
519
  # Range of regions:
506
520
  # https://ru.wikipedia.org/wiki/Коды_субъектов_Российской_Федерации
521
+ # region [String] Any region string
522
+ # @param type [Symbol] Legeal or not, defaults to :legal
507
523
  #
524
+ # @return [String]
525
+ # @example
526
+ # Faker::Comnpany.russian_tax_number
527
+ # Faker::Comnpany.russian_tax_number(region: 'AZ')
528
+ # Faker::Comnpany.russian_tax_number(region: 'AZ', type: false)
508
529
  # rubocop:enable Style/AsciiComments
509
530
  def inn_number(region, type)
510
531
  n10 = [2, 4, 10, 3, 5, 9, 4, 6, 8]
@@ -530,6 +551,31 @@ module Faker
530
551
  end % 11 % 10
531
552
  ).to_s
532
553
  end
554
+
555
+ def spanish_cif_control_digit(organization_type, code)
556
+ letters = %w[J A B C D E F G H]
557
+
558
+ control = code.split('').each_with_index.inject(0) do |sum, (value, index)|
559
+ if (index + 1).even?
560
+ sum + value.to_i
561
+ else
562
+ sum + spanish_b_algorithm(value.to_i)
563
+ end
564
+ end
565
+
566
+ control = control.to_s[-1].to_i
567
+ control = control.zero? ? control : 10 - control
568
+
569
+ %w[A B C D E F G H J U V].include?(organization_type) ? control : letters[control]
570
+ end
571
+
572
+ def spanish_b_algorithm(value)
573
+ result = value.to_i * 2
574
+
575
+ return result if result < 10
576
+
577
+ result.to_s[0].to_i + result.to_s[1].to_i
578
+ end
533
579
  end
534
580
  end
535
581
  end
@@ -11,7 +11,7 @@ module Faker
11
11
  # @example
12
12
  # Faker::Computer.platform #=> "Linux"
13
13
  #
14
- # @faker.version next
14
+ # @faker.version 2.12.0
15
15
  def platform
16
16
  fetch('computer.platform')
17
17
  end
@@ -24,7 +24,7 @@ module Faker
24
24
  # @example
25
25
  # Faker::Computer.type #=> "server"
26
26
  #
27
- # @faker.version next
27
+ # @faker.version 2.12.0
28
28
  def type
29
29
  fetch('computer.type')
30
30
  end
@@ -38,7 +38,7 @@ module Faker
38
38
  # @example
39
39
  # Faker::Computer.os #=> "RHEL 6.10"
40
40
  #
41
- # @faker.version next
41
+ # @faker.version 2.12.0
42
42
  def os(platform: self.platform)
43
43
  platform = self.platform unless fetch_all('computer.platform').include?(platform)
44
44
  fetch("computer.os.#{platform.downcase}")
@@ -52,7 +52,7 @@ module Faker
52
52
  # @example
53
53
  # Faker::Computer.stack #=> "Linux, RHEL 6.10"
54
54
  #
55
- # @faker.version next
55
+ # @faker.version 2.12.0
56
56
  def stack
57
57
  platform = self.platform
58
58
  os = fetch("computer.os.#{platform.downcase}")
@@ -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,8 @@ module Faker
6
6
  NI_CHANCE = 0.03 # NI Pop is about 3% of total UK population
7
7
 
8
8
  class << self
9
+ # rubocop:disable Metrics/ParameterLists
10
+
9
11
  ##
10
12
  # Produces a random British driving licence number.
11
13
  #
@@ -23,9 +25,7 @@ module Faker
23
25
  # date_of_birth: Date.parse("1986-10-24")) #=> "OCARR815246J91HT"
24
26
  #
25
27
  # @faker.version 1.9.2
26
- # rubocop:disable Metrics/ParameterLists
27
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))
28
- # rubocop:enable Metrics/ParameterLists
29
29
  warn_for_deprecated_arguments do |keywords|
30
30
  keywords << :last_name if legacy_last_name != NOT_GIVEN
31
31
  keywords << :initials if legacy_initials != NOT_GIVEN
@@ -40,6 +40,7 @@ module Faker
40
40
  gb_licence_checksum
41
41
  ].join
42
42
  end
43
+ # rubocop:enable Metrics/ParameterLists
43
44
 
44
45
  ##
45
46
  # Produces a random Northern Irish licence number.
@@ -78,6 +79,23 @@ module Faker
78
79
  end
79
80
  end
80
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
+
81
99
  private
82
100
 
83
101
  def random_gender
@@ -104,4 +122,10 @@ module Faker
104
122
  end
105
123
  end
106
124
  end
125
+
126
+ class InvalidStatePassed < StandardError
127
+ def initialize(msg = 'Invalid state code passed')
128
+ super
129
+ end
130
+ end
107
131
  end
@@ -0,0 +1,332 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Drone < Base
5
+ class << self
6
+ ##
7
+ # Returns random drone name with company
8
+ #
9
+ # @return [string]
10
+ #
11
+ # @example
12
+ # Faker::Drone.name #=> "DJI Mavic Air 2"
13
+ #
14
+ # @faker.version 2.14.0
15
+ def name
16
+ fetch('drone.name')
17
+ end
18
+
19
+ ##
20
+ # Returns total drone weight in grams
21
+ #
22
+ # @return [String]
23
+ #
24
+ # @example
25
+ # Faker::Drone.weight #=> "570 g"
26
+ #
27
+ # @faker.version 2.14.0
28
+ def weight
29
+ parse('drone.weight')
30
+ end
31
+
32
+ ##
33
+ # Returns maximum ascent speed for drone in m/s
34
+ #
35
+ # @return [String]
36
+ #
37
+ # @example
38
+ # Faker::Drone.max_ascent_speed #=> "4 m/s"
39
+ #
40
+ # @faker.version 2.14.0
41
+ def max_ascent_speed
42
+ parse('drone.max_ascent_speed')
43
+ end
44
+
45
+ ##
46
+ # Returns maximum descent speed for drone in m/s
47
+ #
48
+ # @return [String]
49
+ #
50
+ # @example
51
+ # Faker::Drone.max_descent_speed #=> "4 m/s"
52
+ #
53
+ # @faker.version 2.14.0
54
+ def max_descent_speed
55
+ parse('drone.max_descent_speed')
56
+ end
57
+
58
+ ##
59
+ # Returns max flight time for drone in optimal conditions
60
+ #
61
+ # @return [String]
62
+ #
63
+ # @example
64
+ # Faker::Drone.flight_time #=> "34 min"
65
+ #
66
+ # @faker.version 2.14.0
67
+ def flight_time
68
+ parse('drone.flight_time')
69
+ end
70
+
71
+ ##
72
+ # Returns max altitude drone can go above sea level in meters
73
+ #
74
+ # @return [String]
75
+ #
76
+ # @example
77
+ # Faker::Drone.max_altitude #=> "5000 m"
78
+ #
79
+ # @faker.version 2.14.0
80
+ def max_altitude
81
+ parse('drone.max_altitude')
82
+ end
83
+
84
+ ##
85
+ # Returns how far drone can go in optimal condition when full charged in meters
86
+ #
87
+ # @return [String]
88
+ #
89
+ # @example
90
+ # Faker::Drone.max_flight_distance #=> "18500 m"
91
+ #
92
+ # @faker.version 2.14.0
93
+ def max_flight_distance
94
+ parse('drone.max_flight_distance')
95
+ end
96
+
97
+ ##
98
+ # Returns max horizontal speed by drone in m/s
99
+ #
100
+ # @return [String]
101
+ #
102
+ # @example
103
+ # Faker::Drone.max_speed #=> "19 m/s"
104
+ #
105
+ # @faker.version 2.14.0
106
+ def max_speed
107
+ parse('drone.max_speed')
108
+ end
109
+
110
+ ##
111
+ # Returns max wind resistance by drone in m/s
112
+ #
113
+ # @return [String]
114
+ #
115
+ # @example
116
+ # Faker::Drone.max_wind_resistance #=> "10.5 m/s"
117
+ #
118
+ # @faker.version 2.14.0
119
+ def max_wind_resistance
120
+ parse('drone.max_wind_resistance')
121
+ end
122
+
123
+ ##
124
+ # Returns max angular velocity of drone in degrees/s
125
+ #
126
+ # @return [String]
127
+ #
128
+ # @example
129
+ # Faker::Drone.max_angular_velocity #=> "250 degree/s"
130
+ #
131
+ # @faker.version 2.14.0
132
+ def max_angular_velocity
133
+ parse('drone.max_angular_velocity')
134
+ end
135
+
136
+ ##
137
+ # Returns max tilt angle drone can go in degrees
138
+ #
139
+ # @return [String]
140
+ #
141
+ # @example
142
+ # Faker::Drone.max_tilt_angle #=> "35 degrees"
143
+ #
144
+ # @faker.version 2.14.0
145
+ def max_tilt_angle
146
+ parse('drone.max_tilt_angle')
147
+ end
148
+
149
+ ##
150
+ # Returns operating temprature for drone in Fahrenheit
151
+ #
152
+ # @return [String]
153
+ #
154
+ # @example
155
+ # Faker::Drone.operating_temperature #=> "14-104F"
156
+ #
157
+ # @faker.version 2.14.0
158
+ def operating_temperature
159
+ parse('drone.operating_temperature')
160
+ end
161
+
162
+ ##
163
+ # Returns the drone battery capacity
164
+ #
165
+ # @return [String]
166
+ #
167
+ # @example
168
+ # Faker::Drone.battery_capacity #=> "3500 mAh"
169
+ #
170
+ # @faker.version 2.14.0
171
+ def battery_capacity
172
+ parse('drone.battery_capacity')
173
+ end
174
+
175
+ ##
176
+ # Returns battery voltage
177
+ #
178
+ # @return [String]
179
+ #
180
+ # @example
181
+ # Faker::Drone.battery_voltage #=> "13.2V"
182
+ #
183
+ # @faker.version 2.14.0
184
+ def battery_voltage
185
+ parse('drone.battery_voltage')
186
+ end
187
+
188
+ ##
189
+ # Returns the battery type
190
+ #
191
+ # @return [String]
192
+ #
193
+ # @example
194
+ # Faker::Drone.battery_type #=> "LiPo 4S"
195
+ #
196
+ # @faker.version 2.14.0
197
+ def battery_type
198
+ parse('drone.battery_type')
199
+ end
200
+
201
+ ##
202
+ # Returns total battery weight in grams
203
+ #
204
+ # @return [String]
205
+ #
206
+ # @example
207
+ # Faker::Drone.battery_weight #=> "198 g"
208
+ #
209
+ # @faker.version 2.14.0
210
+ def battery_weight
211
+ parse('drone.battery_weight')
212
+ end
213
+
214
+ ##
215
+ # Returns charging temperature for battery in Fahrenheit
216
+ #
217
+ # @return [String]
218
+ #
219
+ # @example
220
+ # Faker::Drone.charging_temperature #=> "41-104F"
221
+ #
222
+ # @faker.version 2.14.0
223
+ def charging_temperature
224
+ parse('drone.charging_temperature')
225
+ end
226
+
227
+ ##
228
+ # Returns max chargin power required for battery
229
+ #
230
+ # @return [String]
231
+ #
232
+ # @example
233
+ # Faker::Drone.max_charging_power #=> "38W"
234
+ #
235
+ # @faker.version 2.14.0
236
+ def max_charging_power
237
+ parse('drone.max_charging_power')
238
+ end
239
+
240
+ ##
241
+ # Returns camera ISO range for drone
242
+ #
243
+ # @return [String]
244
+ #
245
+ # @example
246
+ # Faker::Drone.iso #=> "100-3200"
247
+ #
248
+ # @faker.version 2.14.0
249
+ def iso
250
+ parse('drone.iso')
251
+ end
252
+
253
+ ##
254
+ # Returns max camera resolution in MP"
255
+ #
256
+ # @return [String]
257
+ #
258
+ # @example
259
+ # Faker::Drone.max_resolution #=> "48MP"
260
+ #
261
+ # @faker.version 2.14.0
262
+ def max_resolution
263
+ parse('drone.max_resolution')
264
+ end
265
+
266
+ ##
267
+ # Returns photo format for drone
268
+ #
269
+ # @return [String]
270
+ #
271
+ # @example
272
+ # Faker::Drone.photo_format #=> "JPEG"
273
+ #
274
+ # @faker.version 2.14.0
275
+ def photo_format
276
+ parse('drone.photo_format')
277
+ end
278
+
279
+ ##
280
+ # Returns video format
281
+ #
282
+ # @return [String]
283
+ #
284
+ # @example
285
+ # Faker::Drone.video_format #=> "MP4"
286
+ #
287
+ # @faker.version 2.14.0
288
+ def video_format
289
+ parse('drone.video_format')
290
+ end
291
+
292
+ ##
293
+ # Returns max and min shutter speed for camera
294
+ #
295
+ # @return [String]
296
+ #
297
+ # @example
298
+ # Faker::Drone.shutter_speed_range #=> "8-1/8000s"
299
+ #
300
+ # @faker.version 2.14.0
301
+ def shutter_speed_range
302
+ "#{fetch('drone.max_shutter_speed')}-#{fetch('drone.min_shutter_speed')}#{fetch('drone.shutter_speed_units')}"
303
+ end
304
+
305
+ ##
306
+ # Returns max shutter speed for camera
307
+ #
308
+ # @return [String]
309
+ #
310
+ # @example
311
+ # Faker::Drone.max_shutter_speed #=> "60s"
312
+ #
313
+ # @faker.version 2.14.0
314
+ def max_shutter_speed
315
+ "#{fetch('drone.max_shutter_speed')}#{fetch('drone.shutter_speed_units')}"
316
+ end
317
+
318
+ ##
319
+ # Returns min shutter speed for camera
320
+ #
321
+ # @return [String]
322
+ #
323
+ # @example
324
+ # Faker::Drone.min_shutter_speed #=> "1/8000s"
325
+ #
326
+ # @faker.version 2.14.0
327
+ def min_shutter_speed
328
+ "#{fetch('drone.min_shutter_speed')}#{fetch('drone.shutter_speed_units')}"
329
+ end
330
+ end
331
+ end
332
+ end