faker 1.9.3 → 1.9.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +66 -1
  3. data/README.md +30 -10
  4. data/bin/faker +19 -0
  5. data/lib/cli.rb +53 -0
  6. data/lib/cli/README.md +55 -0
  7. data/lib/cli/command.rb +24 -0
  8. data/lib/cli/commands/list.rb +17 -0
  9. data/lib/cli/commands/search.rb +29 -0
  10. data/lib/cli/reflector.rb +48 -0
  11. data/lib/cli/reflectors/list.rb +39 -0
  12. data/lib/cli/reflectors/search.rb +46 -0
  13. data/lib/cli/renderer.rb +93 -0
  14. data/lib/faker/blockchain/tezos.rb +10 -5
  15. data/lib/faker/creature/horse.rb +19 -0
  16. data/lib/faker/default/coffee.rb +2 -0
  17. data/lib/faker/default/company.rb +4 -0
  18. data/lib/faker/default/internet.rb +14 -2
  19. data/lib/faker/default/json.rb +4 -4
  20. data/lib/faker/deprecate/unreleased/football.rb +35 -0
  21. data/lib/faker/deprecate/unreleased/movies/grateful_dead.rb +22 -0
  22. data/lib/faker/games/game.rb +21 -0
  23. data/lib/faker/{movies → music}/grateful_dead.rb +3 -1
  24. data/lib/faker/music/opera.rb +26 -0
  25. data/lib/faker/sports/basketball.rb +25 -0
  26. data/lib/faker/sports/football.rb +29 -0
  27. data/lib/faker/version.rb +1 -1
  28. data/lib/locales/en-AU.yml +1 -1
  29. data/lib/locales/en/animal.yml +2 -2
  30. data/lib/locales/en/basketball.yml +99 -0
  31. data/lib/locales/en/company.yml +1 -0
  32. data/lib/locales/en/crypto_coin.yml +22 -6
  33. data/lib/locales/en/dc_comics.yml +5 -5
  34. data/lib/locales/en/dota.yml +3 -1
  35. data/lib/locales/en/food.yml +1 -1
  36. data/lib/locales/en/game.yml +283 -0
  37. data/lib/locales/en/grateful_dead.yml +2 -1
  38. data/lib/locales/en/heroes_of_the_storm.yml +2 -2
  39. data/lib/locales/en/horse.yml +6 -0
  40. data/lib/locales/en/kpop.yml +1 -1
  41. data/lib/locales/en/league_of_legends.yml +2 -2
  42. data/lib/locales/en/music.yml +1 -1
  43. data/lib/locales/en/nation.yml +1 -1
  44. data/lib/locales/en/opera.yml +172 -0
  45. data/lib/locales/en/phish.yml +1 -1
  46. data/lib/locales/en/rupaul.yml +51 -21
  47. data/lib/locales/en/space.yml +1 -1
  48. data/lib/locales/en/stargate.yml +1 -2
  49. data/lib/locales/en/subscription.yml +1 -1
  50. data/lib/locales/en/super_smash_bros.yml +4 -0
  51. data/lib/locales/fr-CA.yml +0 -5
  52. data/lib/locales/fr-CH.yml +0 -1
  53. data/lib/locales/fr.yml +1 -1
  54. data/lib/locales/hy.yml +47 -2
  55. data/lib/locales/ja.yml +16 -0
  56. data/lib/locales/pt-BR.yml +4 -1
  57. data/lib/locales/zh-CN.yml +3 -6
  58. data/lib/locales/zh-TW.yml +2 -2
  59. metadata +137 -98
  60. data/lib/faker/default/football.rb +0 -27
  61. data/lib/faker/deprecate/aqua_teen_hunger_force.rb +0 -15
  62. data/lib/faker/deprecate/back_to_the_future.rb +0 -25
  63. data/lib/faker/deprecate/bitcoin.rb +0 -20
  64. data/lib/faker/deprecate/bojack_horseman.rb +0 -25
  65. data/lib/faker/deprecate/breaking_bad.rb +0 -20
  66. data/lib/faker/deprecate/buffy.rb +0 -35
  67. data/lib/faker/deprecate/cat.rb +0 -25
  68. data/lib/faker/deprecate/community.rb +0 -20
  69. data/lib/faker/deprecate/dog.rb +0 -50
  70. data/lib/faker/deprecate/dota.rb +0 -35
  71. data/lib/faker/deprecate/dr_who.rb +0 -45
  72. data/lib/faker/deprecate/dragon_ball.rb +0 -15
  73. data/lib/faker/deprecate/dumb_and_dumber.rb +0 -25
  74. data/lib/faker/deprecate/dune.rb +0 -35
  75. data/lib/faker/deprecate/elder_scrolls.rb +0 -50
  76. data/lib/faker/deprecate/ethereum.rb +0 -15
  77. data/lib/faker/deprecate/fallout.rb +0 -30
  78. data/lib/faker/deprecate/family_guy.rb +0 -25
  79. data/lib/faker/deprecate/famous_last_words.rb +0 -15
  80. data/lib/faker/deprecate/friends.rb +0 -25
  81. data/lib/faker/deprecate/game_of_thrones.rb +0 -35
  82. data/lib/faker/deprecate/harry_potter.rb +0 -40
  83. data/lib/faker/deprecate/heroes_of_the_storm.rb +0 -30
  84. data/lib/faker/deprecate/hey_arnold.rb +0 -25
  85. data/lib/faker/deprecate/hitchhikers_guide_to_the_galaxy.rb +0 -44
  86. data/lib/faker/deprecate/hobbit.rb +0 -30
  87. data/lib/faker/deprecate/how_i_met_your_mother.rb +0 -30
  88. data/lib/faker/deprecate/league_of_legends.rb +0 -40
  89. data/lib/faker/deprecate/lebowski.rb +0 -25
  90. data/lib/faker/deprecate/lord_of_the_rings.rb +0 -25
  91. data/lib/faker/deprecate/lovecraft.rb +0 -65
  92. data/lib/faker/deprecate/matz.rb +0 -15
  93. data/lib/faker/deprecate/michael_scott.rb +0 -15
  94. data/lib/faker/deprecate/most_interesting_man_in_the_world.rb +0 -15
  95. data/lib/faker/deprecate/myst.rb +0 -35
  96. data/lib/faker/deprecate/new_girl.rb +0 -20
  97. data/lib/faker/deprecate/one_piece.rb +0 -40
  98. data/lib/faker/deprecate/overwatch.rb +0 -25
  99. data/lib/faker/deprecate/parks_and_rec.rb +0 -20
  100. data/lib/faker/deprecate/pokemon.rb +0 -25
  101. data/lib/faker/deprecate/princess_bride.rb +0 -20
  102. data/lib/faker/deprecate/rick_and_morty.rb +0 -25
  103. data/lib/faker/deprecate/robin.rb +0 -15
  104. data/lib/faker/deprecate/rock_band.rb +0 -15
  105. data/lib/faker/deprecate/ru_paul.rb +0 -20
  106. data/lib/faker/deprecate/seinfeld.rb +0 -25
  107. data/lib/faker/deprecate/shakespeare.rb +0 -50
  108. data/lib/faker/deprecate/silicon_valley.rb +0 -50
  109. data/lib/faker/deprecate/simpsons.rb +0 -25
  110. data/lib/faker/deprecate/singular_siegler.rb +0 -15
  111. data/lib/faker/deprecate/south_park.rb +0 -20
  112. data/lib/faker/deprecate/star_trek.rb +0 -30
  113. data/lib/faker/deprecate/star_wars.rb +0 -95
  114. data/lib/faker/deprecate/stargate.rb +0 -25
  115. data/lib/faker/deprecate/stranger_things.rb +0 -20
  116. data/lib/faker/deprecate/sword_art_online.rb +0 -30
  117. data/lib/faker/deprecate/tezos.rb +0 -33
  118. data/lib/faker/deprecate/the_fresh_prince_of_bel_air.rb +0 -25
  119. data/lib/faker/deprecate/the_it_crowd.rb +0 -30
  120. data/lib/faker/deprecate/the_thick_of_it.rb +0 -25
  121. data/lib/faker/deprecate/twin_peaks.rb +0 -25
  122. data/lib/faker/deprecate/umphreys_mcgee.rb +0 -15
  123. data/lib/faker/deprecate/v_for_vendetta.rb +0 -25
  124. data/lib/faker/deprecate/venture_bros.rb +0 -30
  125. data/lib/faker/deprecate/witcher.rb +0 -40
  126. data/lib/faker/deprecate/world_of_warcraft.rb +0 -20
  127. data/lib/faker/deprecate/yoda.rb +0 -16
  128. data/lib/faker/deprecate/zelda.rb +0 -30
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../reflector'
4
+
5
+ module Faker
6
+ module CLI
7
+ module Reflectors
8
+ # List command reflector
9
+ # @api private
10
+ #
11
+ class List < Reflector
12
+ attr_reader :show_methods
13
+
14
+ def self.call(options)
15
+ new(options).call
16
+ end
17
+
18
+ def initialize(options = {})
19
+ @show_methods = options[:show_methods]
20
+
21
+ super
22
+ end
23
+
24
+ def call
25
+ show_methods ? all_descendants_with_methods : faker_descendants
26
+ end
27
+
28
+ private
29
+
30
+ def all_descendants_with_methods
31
+ faker_descendants.each do |descendant|
32
+ store(descendant, descendant.my_singleton_methods)
33
+ end
34
+ descendants_with_methods
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../reflector'
4
+
5
+ module Faker
6
+ module CLI
7
+ module Reflectors
8
+ # Find command reflector
9
+ # @api private
10
+ #
11
+ class Search < Reflector
12
+ attr_reader :query
13
+
14
+ def self.call(query)
15
+ new(query).call
16
+ end
17
+
18
+ def initialize(query)
19
+ @query = query
20
+
21
+ super
22
+ end
23
+
24
+ def call
25
+ search_descendants_matching_query
26
+ descendants_with_methods
27
+ end
28
+
29
+ private
30
+
31
+ def search_descendants_matching_query
32
+ faker_descendants.each do |descendant|
33
+ methods = descendant.my_singleton_methods
34
+ matching = methods.select { |method| query_matches?(method.to_s) }
35
+ store(descendant, matching)
36
+ end
37
+ end
38
+
39
+ def query_matches?(method_name)
40
+ method_name_parts = method_name.split(/_/).reject(&:empty?)
41
+ query.match(/#{method_name_parts.join('|')}/)
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pastel'
4
+ require 'tty/pager'
5
+ require 'tty/screen'
6
+ require 'tty/tree'
7
+
8
+ module Faker
9
+ module CLI
10
+ class Renderer
11
+ attr_reader :crayon, :hash, :options, :output, :pager
12
+
13
+ def self.call(*args)
14
+ new(*args).call
15
+ end
16
+
17
+ def initialize(hash, options, output)
18
+ @hash = hash
19
+ @options = options
20
+ @output = output
21
+ @crayon = Pastel.new(enabled: output.tty?)
22
+ @pager = TTY::Pager.new(command: 'less -R')
23
+ end
24
+
25
+ def call
26
+ if paginable?
27
+ pager.page(render)
28
+ else
29
+ output.puts(render)
30
+ end
31
+ end
32
+
33
+ def render
34
+ tree.render
35
+ end
36
+
37
+ def tree
38
+ @tree ||= TTY::Tree.new(build_tree)
39
+ end
40
+
41
+ def paginable?
42
+ gt_screen_height? && output.tty?
43
+ end
44
+
45
+ def gt_screen_height?
46
+ tree.nodes.size > TTY::Screen.height
47
+ end
48
+
49
+ private
50
+
51
+ def build_tree
52
+ results = hash.reduce({}) do |h, (const, methods)|
53
+ h.merge! node(const, methods&.sort)
54
+ end
55
+
56
+ results.sort_by(&:to_s).to_h
57
+ end
58
+
59
+ def node(const, methods)
60
+ {
61
+ crayon.green(const.to_s) => leaf(const, methods)
62
+ }
63
+ end
64
+
65
+ def leaf(const, methods)
66
+ (methods || []).map { |m| crayon.cyan(*leaf_args(m, const)) }
67
+ end
68
+
69
+ def leaf_args(method, const)
70
+ [method.to_s].tap { |arr| verbose_output(method, const, arr) if verbose? }
71
+ end
72
+
73
+ def verbose?
74
+ options[:verbose]
75
+ end
76
+
77
+ def verbose_output(method, const, arr)
78
+ fake, message = faker_method(method, const)
79
+ arr << crayon.dim.white("=> #{fake}") << crayon.dim.magenta.bold(message.to_s)
80
+ end
81
+
82
+ def faker_method(method, const)
83
+ [const.public_send(method), ensure_method_is_supported(method, const)]
84
+ rescue ArgumentError => _exception
85
+ ['N/A', '']
86
+ end
87
+
88
+ def ensure_method_is_supported(method, const)
89
+ const.respond_to?(:"_deprecated_#{method}") ? ' ( WILL BE DEPRECATED )' : ''
90
+ end
91
+ end
92
+ end
93
+ end
@@ -8,12 +8,13 @@ module Faker
8
8
  class Tezos < Base
9
9
  class << self
10
10
  PREFIXES = {
11
- tz1: [6, 161, 159],
12
- KT1: [2, 90, 121],
13
- edpk: [13, 15, 37, 217],
11
+ tz1: [6, 161, 159],
12
+ KT1: [2, 90, 121],
13
+ edpk: [13, 15, 37, 217],
14
14
  edsk: [13, 15, 58, 7],
15
- edsig: [9, 245, 205, 134, 18],
16
- o: [5, 116]
15
+ edsig: [9, 245, 205, 134, 18],
16
+ B: [1, 52],
17
+ o: [5, 116]
17
18
  }.freeze
18
19
 
19
20
  def account
@@ -28,6 +29,10 @@ module Faker
28
29
  encode_tz(:o, 32)
29
30
  end
30
31
 
32
+ def block
33
+ encode_tz(:B, 32)
34
+ end
35
+
31
36
  def signature
32
37
  encode_tz(:edsig, 64)
33
38
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ module Creature
5
+ class Horse < Base
6
+ flexible :horse
7
+
8
+ class << self
9
+ def name
10
+ fetch('creature.horse.name')
11
+ end
12
+
13
+ def breed
14
+ fetch('creature.horse.breed')
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Faker
4
4
  class Coffee < Base
5
+ flexible :coffee
6
+
5
7
  class << self
6
8
  def blend_name
7
9
  parse('coffee.blend_name')
@@ -168,6 +168,10 @@ module Faker
168
168
  formatted ? format('%s.%s.%s/%s-%s', *number.scan(/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/).flatten) : number
169
169
  end
170
170
 
171
+ def sic_code
172
+ fetch('company.sic_code')
173
+ end
174
+
171
175
  private
172
176
 
173
177
  # Mod11 functionality from https://github.com/badmanski/mod11/blob/master/lib/mod11.rb
@@ -79,8 +79,12 @@ module Faker
79
79
  temp
80
80
  end
81
81
 
82
- def domain_name
83
- with_locale(:en) { [Char.prepare(domain_word), domain_suffix].join('.') }
82
+ def domain_name(subdomain = false)
83
+ with_locale(:en) do
84
+ domain_elements = [Char.prepare(domain_word), domain_suffix]
85
+ domain_elements.unshift(Char.prepare(domain_word)) if subdomain
86
+ domain_elements.join('.')
87
+ end
84
88
  end
85
89
 
86
90
  def fix_umlauts(string = '')
@@ -188,6 +192,14 @@ module Faker
188
192
  sample(agents)
189
193
  end
190
194
 
195
+ def uuid
196
+ # borrowed from: https://github.com/ruby/ruby/blob/d48783bb0236db505fe1205d1d9822309de53a36/lib/securerandom.rb#L250
197
+ ary = Faker::Config.random.bytes(16).unpack('NnnnnN')
198
+ ary[2] = (ary[2] & 0x0fff) | 0x4000
199
+ ary[3] = (ary[3] & 0x3fff) | 0x8000
200
+ '%08x-%04x-%04x-%04x-%04x%08x' % ary # rubocop:disable Style/FormatString
201
+ end
202
+
191
203
  alias user_name username
192
204
  end
193
205
  end
@@ -4,16 +4,16 @@ module Faker
4
4
 
5
5
  class << self
6
6
  def shallow_json(width = 3, options = { key: 'Name.first_name', value: 'Name.first_name' })
7
- options[:key] = options[:key].prepend('Faker::')
8
- options[:value] = options[:value].prepend('Faker::')
7
+ options[:key] = 'Faker::' + options[:key]
8
+ options[:value] = 'Faker::' + options[:value]
9
9
 
10
10
  hash = build_shallow_hash(width, options)
11
11
  JSON.generate(hash)
12
12
  end
13
13
 
14
14
  def add_depth_to_json(json = shallow_json, width = 3, options = { key: 'Name.first_name', value: 'Name.first_name' })
15
- options[:key] = options[:key].prepend('Faker::')
16
- options[:value] = options[:value].prepend('Faker::')
15
+ options[:key] = 'Faker::' + options[:key]
16
+ options[:value] = 'Faker::' + options[:value]
17
17
 
18
18
  hash = JSON.parse(json)
19
19
  hash.each do |key, _|
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Football
5
+ class << self
6
+ extend Gem::Deprecate
7
+
8
+ def team
9
+ Faker::Sports::Football.team
10
+ end
11
+
12
+ def player
13
+ Faker::Sports::Football.player
14
+ end
15
+
16
+ def coach
17
+ Faker::Sports::Football.coach
18
+ end
19
+
20
+ def competition
21
+ Faker::Sports::Football.competition
22
+ end
23
+
24
+ def position
25
+ Faker::Sports::Football.position
26
+ end
27
+
28
+ deprecate :team, 'Faker::Sports::Football.team', 2019, 04
29
+ deprecate :player, 'Faker::Sports::Football.player', 2019, 04
30
+ deprecate :coach, 'Faker::Sports::Football.coach', 2019, 04
31
+ deprecate :competition, 'Faker::Sports::Football.competition', 2019, 04
32
+ deprecate :position, 'Faker::Sports::Football.position', 2019, 04
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ module Movies
5
+ class GratefulDead < Base
6
+ class << self
7
+ extend Gem::Deprecate
8
+
9
+ def player
10
+ Faker::Music::GratefulDead.player
11
+ end
12
+
13
+ def song
14
+ Faker::Music::GratefulDead.song
15
+ end
16
+
17
+ deprecate :player, 'Faker::Music::GratefulDead.player', 2019, 04
18
+ deprecate :song, 'Faker::Music::GratefulDead.song', 2019, 04
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Game < Base
5
+ flexible :game
6
+
7
+ class << self
8
+ def title
9
+ fetch('game.title')
10
+ end
11
+
12
+ def genre
13
+ fetch('game.genre')
14
+ end
15
+
16
+ def platform
17
+ fetch('game.platform')
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'music'
4
+
3
5
  module Faker
4
- module Movies
6
+ class Music
5
7
  class GratefulDead < Base
6
8
  class << self
7
9
  def player
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ # A generator of titles of operas by Verdi, Rossini, Donizetti and Bellini
5
+ class Music
6
+ class Opera < Base
7
+ class << self
8
+ def verdi
9
+ fetch('opera.italian.by_giuseppe_verdi')
10
+ end
11
+
12
+ def rossini
13
+ fetch('opera.italian.by_gioacchino_rossini')
14
+ end
15
+
16
+ def donizetti
17
+ fetch('opera.italian.by_gaetano_donizetti')
18
+ end
19
+
20
+ def bellini
21
+ fetch('opera.italian.by_vincenzo_bellini')
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Faker
4
+ class Sports
5
+ class Basketball < Base
6
+ class << self
7
+ def team
8
+ fetch('basketball.teams')
9
+ end
10
+
11
+ def player
12
+ fetch('basketball.players')
13
+ end
14
+
15
+ def coach
16
+ fetch('basketball.coaches')
17
+ end
18
+
19
+ def position
20
+ fetch('basketball.positions')
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end