faker 1.9.3 → 1.9.4

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 (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