fakerbot 0.2.4 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b5088f42e2b2ebe474794900ef68c9c82082577f
4
- data.tar.gz: e2c0b519a845ad6060aded36dccae8550fd4675f
3
+ metadata.gz: 837cc2d92e1c31ad78fd7adc057fb11178d89bea
4
+ data.tar.gz: 02e139d11db43948282be5cf4694cdc1cdda9db2
5
5
  SHA512:
6
- metadata.gz: ddcbc76eb1255fbcc9eab56f68da1e16df9f988c6a03061e524aba571dc41da5ea235adcad6de839eb60c59fe987843eb49307ccd3ac02713b6ae1363febf9d5
7
- data.tar.gz: a1595e16fba24d51b280fc5a14d044c7288a26633d38143f6f97afe86184bc62ec05791c5c27c6e39c660477d74ff7c514390a60294b2673c58147f3bda8b2ff
6
+ metadata.gz: 82e8003271e1e494021551910a83b8c252a41f0aae71fb77b01c067ac2efafda4b456a8d56714544dde8d7f888d0161ee2966ce14efb75534f043ce8faf8d465
7
+ data.tar.gz: bca6bd5310bf359267b52ad0ea2ac454dfc0432e59bd023d13e54e2857e645e939eb8d52e900a4758b93e04b623ac9b6b55605083415beff49c82c0770426f9d
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fakerbot (0.2.4)
4
+ fakerbot (0.3.0)
5
5
  faker
6
6
  pastel (~> 0.7.2)
7
7
  thor (~> 0.20.0)
@@ -20,10 +20,10 @@ module FakerBot
20
20
  end
21
21
  end
22
22
 
23
- attr_reader :matching_descendants, :query
23
+ attr_reader :descendants_with_methods, :query
24
24
 
25
- def initialize(query)
26
- @matching_descendants = Hash.new { |h, k| h[k] = [] }
25
+ def initialize(query = nil)
26
+ @descendants_with_methods = Hash.new { |h, k| h[k] = [] }
27
27
  @query = query
28
28
  end
29
29
 
@@ -31,26 +31,41 @@ module FakerBot
31
31
  def find(query)
32
32
  new(query).find
33
33
  end
34
+
35
+ def list(verbose: false)
36
+ new.list(verbose)
37
+ end
34
38
  end
35
39
 
36
40
  def find
37
41
  search_descendants_matching_query
38
- matching_descendants
42
+ descendants_with_methods
43
+ end
44
+
45
+ def list(verbose)
46
+ verbose ? all_descendants_with_methods : faker_descendants
39
47
  end
40
48
 
41
49
  private
42
50
 
51
+ def all_descendants_with_methods
52
+ faker_descendants.each do |faker|
53
+ store(faker, faker.my_singleton_methods)
54
+ end
55
+ descendants_with_methods
56
+ end
57
+
43
58
  def search_descendants_matching_query
44
59
  faker_descendants.each do |faker|
45
60
  methods = faker.my_singleton_methods
46
61
  matching = methods.select { |m| m.match?(/#{query}/i) }
47
- save_matching(faker, matching)
62
+ store(faker, matching)
48
63
  end
49
64
  end
50
65
 
51
- def save_matching(descendant, matching)
52
- return if matching.empty?
53
- matching_descendants[descendant].concat(matching)
66
+ def store(descendant, methods)
67
+ return if methods.empty?
68
+ descendants_with_methods[descendant].concat(methods)
54
69
  end
55
70
 
56
71
  def faker_descendants
@@ -3,6 +3,7 @@
3
3
  require 'thor'
4
4
  require 'fakerbot/cli'
5
5
  require 'fakerbot/version'
6
+ require 'fakerbot/commands/list'
6
7
  require 'fakerbot/commands/search'
7
8
 
8
9
  module FakerBot
@@ -16,11 +17,24 @@ module FakerBot
16
17
  end
17
18
  map %w[--version -v] => :version
18
19
 
20
+ desc 'list', 'List all Faker constants'
21
+ method_option :help, aliases: '-h', type: :boolean,
22
+ desc: 'Display usage information'
23
+ method_option :verbose, aliases: '-v', type: :boolean,
24
+ desc: 'Display Faker constants with methods'
25
+ def list(*)
26
+ if options[:help]
27
+ invoke :help, ['list']
28
+ else
29
+ FakerBot::Commands::List.new(options).execute
30
+ end
31
+ end
32
+
19
33
  desc 'search [Faker]', 'Search Faker method(s)'
20
34
  method_option :help, aliases: '-h', type: :boolean,
21
35
  desc: 'Display usage information'
22
36
  method_option :verbose, aliases: '-v', type: :boolean,
23
- desc: 'Display Faker classes with methods'
37
+ desc: 'Display Faker constants methods with examples'
24
38
  def search(query)
25
39
  if options[:help]
26
40
  invoke :help, ['search']
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'forwardable'
4
+ require 'pastel'
5
+ require 'tty/pager'
6
+ require 'tty/tree'
7
+
8
+ module FakerBot
9
+ class Command
10
+ extend Forwardable
11
+
12
+ def_delegators :command, :run
13
+
14
+ def pager
15
+ TTY::Pager.new(command: 'less -R')
16
+ end
17
+
18
+ def screen
19
+ TTY::Screen
20
+ end
21
+
22
+ def tree(input)
23
+ TTY::Tree.new do
24
+ input.each do |faker, methods|
25
+ node Pastel.new.green(faker.to_s) do
26
+ methods&.each { |m| leaf Pastel.new.cyan(m.to_s) }
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ def render(result, output = $stdout)
33
+ result_tree = tree(result)
34
+ view = result_tree.render
35
+ if screen.height < result_tree.nodes.size
36
+ # paginate when attached to terminal
37
+ output.tty? ? pager.page(view) : output.puts(view)
38
+ else
39
+ output.puts view
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../command'
4
+
5
+ module FakerBot
6
+ module Commands
7
+ class List < FakerBot::Command
8
+ def initialize(options)
9
+ @options = options
10
+ end
11
+
12
+ def execute(output: $stdout)
13
+ render FakerBot::Bot.list(verbose: @options[:verbose]), output
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,45 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'pastel'
4
- require 'tty/pager'
5
- require 'tty/tree'
6
3
  require 'fakerbot/bot'
4
+ require_relative '../command'
7
5
 
8
6
  module FakerBot
9
7
  module Commands
10
- class Search
8
+ class Search < FakerBot::Command
11
9
  def initialize(options)
12
10
  @options = options
13
- @pager = TTY::Pager.new(command: 'less -R')
14
- @screen = TTY::Screen
15
11
  end
16
12
 
17
- def execute(input)
18
- render FakerBot::Bot.find(input)
13
+ def execute(input, output: $stdout)
14
+ render FakerBot::Bot.find(input), output
19
15
  end
20
16
 
21
17
  private
22
18
 
23
- attr_reader :screen, :pager
24
-
25
- def render(result)
19
+ def render(result, output)
26
20
  return not_found if result.empty?
27
- output = tree(result)
28
- if screen.height < output.nodes.size
29
- pager.page output.render
30
- else
31
- puts output.render
32
- end
33
- end
34
-
35
- def tree(input)
36
- TTY::Tree.new do
37
- input.each do |faker, methods|
38
- node Pastel.new.green(faker.to_s) do
39
- methods.each { |m| leaf Pastel.new.cyan(m.to_s) }
40
- end
41
- end
42
- end
21
+ super(result, output)
43
22
  end
44
23
 
45
24
  def not_found
@@ -1,3 +1,3 @@
1
1
  module FakerBot
2
- VERSION = '0.2.4'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fakerbot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Austin Kabiru
@@ -204,7 +204,10 @@ files:
204
204
  - lib/fakerbot.rb
205
205
  - lib/fakerbot/bot.rb
206
206
  - lib/fakerbot/cli.rb
207
+ - lib/fakerbot/command.rb
208
+ - lib/fakerbot/commands/list.rb
207
209
  - lib/fakerbot/commands/search.rb
210
+ - lib/fakerbot/templates/list/.gitkeep
208
211
  - lib/fakerbot/version.rb
209
212
  homepage: https://github.com/akabiru/fakerbot
210
213
  licenses: