fakerbot 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +4 -4
- data/lib/fakerbot/cli.rb +6 -2
- data/lib/fakerbot/command.rb +5 -30
- data/lib/fakerbot/commands/list.rb +2 -1
- data/lib/fakerbot/commands/search.rb +1 -2
- data/lib/fakerbot/{bot.rb → reflector.rb} +12 -10
- data/lib/fakerbot/renderer.rb +77 -0
- data/lib/fakerbot/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8085df33e12f4bd878c9189e56be6366d52d3fca
|
4
|
+
data.tar.gz: 034b971fc30137bd814f21bb07e059dc7b3ab251
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 946ccac66e20b766d9e66a4da666107d122992cdb248596bdc017d366dec36b99db1c142cd8a5cd422c1fd6c510b951187a9fb70e815cab80200ce9237683d0b
|
7
|
+
data.tar.gz: 23fca28de4270f36471c746ad630b976a5d35efdf0c4508b2207bb8f79b4ec28fb217e1681ead0ab5714d6e5d811905f9b81eb3ea8a9d78d30d8e2c325355ae4
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
fakerbot (0.
|
4
|
+
fakerbot (0.4.0)
|
5
5
|
faker
|
6
6
|
pastel (~> 0.7.2)
|
7
7
|
thor (~> 0.20.0)
|
@@ -67,8 +67,8 @@ GEM
|
|
67
67
|
json (>= 1.8, < 3)
|
68
68
|
simplecov-html (~> 0.10.0)
|
69
69
|
simplecov-html (0.10.2)
|
70
|
-
strings (0.1.
|
71
|
-
unicode-display_width (~> 1.
|
70
|
+
strings (0.1.2)
|
71
|
+
unicode-display_width (~> 1.4.0)
|
72
72
|
unicode_utils (~> 1.4.0)
|
73
73
|
term-ansicolor (1.6.0)
|
74
74
|
tins (~> 1.0)
|
@@ -85,7 +85,7 @@ GEM
|
|
85
85
|
unf (0.1.4)
|
86
86
|
unf_ext
|
87
87
|
unf_ext (0.0.7.5)
|
88
|
-
unicode-display_width (1.
|
88
|
+
unicode-display_width (1.4.0)
|
89
89
|
unicode_utils (1.4.0)
|
90
90
|
|
91
91
|
PLATFORMS
|
data/lib/fakerbot/cli.rb
CHANGED
@@ -20,8 +20,10 @@ module FakerBot
|
|
20
20
|
desc 'list', 'List all Faker constants'
|
21
21
|
method_option :help, aliases: '-h', type: :boolean,
|
22
22
|
desc: 'Display usage information'
|
23
|
+
method_option :show_methods, aliases: '-m', type: :boolean, default: true,
|
24
|
+
desc: 'Display Faker constants with methods'
|
23
25
|
method_option :verbose, aliases: '-v', type: :boolean,
|
24
|
-
desc: '
|
26
|
+
desc: 'Include sample Faker output'
|
25
27
|
def list(*)
|
26
28
|
if options[:help]
|
27
29
|
invoke :help, ['list']
|
@@ -33,8 +35,10 @@ module FakerBot
|
|
33
35
|
desc 'search [Faker]', 'Search Faker method(s)'
|
34
36
|
method_option :help, aliases: '-h', type: :boolean,
|
35
37
|
desc: 'Display usage information'
|
38
|
+
method_option :show_methods, aliases: '-m', type: :boolean, default: true,
|
39
|
+
desc: 'Display Faker constants with methods'
|
36
40
|
method_option :verbose, aliases: '-v', type: :boolean,
|
37
|
-
desc: '
|
41
|
+
desc: 'Include sample Faker output'
|
38
42
|
def search(query)
|
39
43
|
if options[:help]
|
40
44
|
invoke :help, ['search']
|
data/lib/fakerbot/command.rb
CHANGED
@@ -1,43 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'forwardable'
|
4
|
-
|
5
|
-
|
6
|
-
require 'tty/tree'
|
4
|
+
require_relative 'reflector'
|
5
|
+
require_relative 'renderer'
|
7
6
|
|
8
7
|
module FakerBot
|
9
8
|
class Command
|
10
9
|
extend Forwardable
|
11
10
|
|
12
11
|
def_delegators :command, :run
|
12
|
+
attr_reader :options
|
13
13
|
|
14
|
-
def
|
15
|
-
|
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
|
14
|
+
def render(result, output)
|
15
|
+
FakerBot::Renderer.call(result, options, output)
|
41
16
|
end
|
42
17
|
end
|
43
18
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'fakerbot/bot'
|
4
3
|
require_relative '../command'
|
5
4
|
|
6
5
|
module FakerBot
|
@@ -11,7 +10,7 @@ module FakerBot
|
|
11
10
|
end
|
12
11
|
|
13
12
|
def execute(input, output: $stdout)
|
14
|
-
render FakerBot::
|
13
|
+
render FakerBot::Reflector.find(input), output
|
15
14
|
end
|
16
15
|
|
17
16
|
private
|
@@ -3,20 +3,22 @@
|
|
3
3
|
require 'faker'
|
4
4
|
|
5
5
|
module FakerBot
|
6
|
-
|
6
|
+
# Exposes `Faker` reflection methods
|
7
|
+
# @api private
|
8
|
+
class Reflector
|
7
9
|
Faker::Base.class_eval do
|
10
|
+
# Select `Faker` subclasses
|
11
|
+
# @return [Array] `Faker::Base` sub classes
|
8
12
|
def self.descendants
|
9
13
|
@descendants ||= ObjectSpace.each_object(Class).select do |klass|
|
10
14
|
klass < self
|
11
15
|
end
|
12
16
|
end
|
13
17
|
|
18
|
+
# Select public class methods
|
19
|
+
# @return [Array] public methods
|
14
20
|
def self.my_singleton_methods
|
15
|
-
|
16
|
-
(singleton_methods - superclass.singleton_methods)
|
17
|
-
else
|
18
|
-
singleton_methods
|
19
|
-
end
|
21
|
+
singleton_methods(false).select { |m| respond_to?(m) }
|
20
22
|
end
|
21
23
|
end
|
22
24
|
|
@@ -32,8 +34,8 @@ module FakerBot
|
|
32
34
|
new(query).find
|
33
35
|
end
|
34
36
|
|
35
|
-
def list(
|
36
|
-
new.list(
|
37
|
+
def list(show_methods: false)
|
38
|
+
new.list(show_methods)
|
37
39
|
end
|
38
40
|
end
|
39
41
|
|
@@ -42,8 +44,8 @@ module FakerBot
|
|
42
44
|
descendants_with_methods
|
43
45
|
end
|
44
46
|
|
45
|
-
def list(
|
46
|
-
|
47
|
+
def list(show_methods)
|
48
|
+
show_methods ? all_descendants_with_methods : faker_descendants
|
47
49
|
end
|
48
50
|
|
49
51
|
private
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'pastel'
|
4
|
+
require 'tty/pager'
|
5
|
+
require 'tty/screen'
|
6
|
+
require 'tty/tree'
|
7
|
+
|
8
|
+
module FakerBot
|
9
|
+
class Renderer
|
10
|
+
def self.call(hash, options, output)
|
11
|
+
new(hash, options, output).call
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(hash, options, output)
|
15
|
+
@hash = hash
|
16
|
+
@options = options
|
17
|
+
@output = output
|
18
|
+
@crayon = Pastel.new(enabled: output.tty?)
|
19
|
+
@pager = TTY::Pager.new(command: 'less -R')
|
20
|
+
@screen = TTY::Screen
|
21
|
+
@tree = TTY::Tree
|
22
|
+
end
|
23
|
+
|
24
|
+
def call
|
25
|
+
data_tree = tree.new(build_tree)
|
26
|
+
view = data_tree.render
|
27
|
+
if gt_screen_height?(data_tree)
|
28
|
+
output.tty? ? pager.page(view) : output.puts(view)
|
29
|
+
else
|
30
|
+
output.puts view
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
attr_reader :crayon, :hash, :options, :output, :pager, :screen, :tree
|
37
|
+
|
38
|
+
def build_tree
|
39
|
+
hash.reduce({}) do |h, (faker, methods)|
|
40
|
+
h.merge! node(faker, methods)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def node(const, methods)
|
45
|
+
{
|
46
|
+
crayon.green(const.to_s) => leaf(const, methods)
|
47
|
+
}
|
48
|
+
end
|
49
|
+
|
50
|
+
def leaf(const, methods)
|
51
|
+
(methods || []).map do |m|
|
52
|
+
crayon.cyan(*leaf_args(m, const))
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def leaf_args(method, const)
|
57
|
+
[method.to_s].tap do |arr|
|
58
|
+
if verbose?
|
59
|
+
fake = begin
|
60
|
+
const.public_send(method)
|
61
|
+
rescue ArgumentError
|
62
|
+
'N/A'
|
63
|
+
end
|
64
|
+
arr << crayon.dim.white("=> #{fake.to_s}")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def gt_screen_height?(data_tree)
|
70
|
+
data_tree.nodes.size > screen.height
|
71
|
+
end
|
72
|
+
|
73
|
+
def verbose?
|
74
|
+
options[:verbose]
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
data/lib/fakerbot/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fakerbot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Austin Kabiru
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-08-
|
11
|
+
date: 2018-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faker
|
@@ -202,11 +202,12 @@ files:
|
|
202
202
|
- bin/setup
|
203
203
|
- fakerbot.gemspec
|
204
204
|
- lib/fakerbot.rb
|
205
|
-
- lib/fakerbot/bot.rb
|
206
205
|
- lib/fakerbot/cli.rb
|
207
206
|
- lib/fakerbot/command.rb
|
208
207
|
- lib/fakerbot/commands/list.rb
|
209
208
|
- lib/fakerbot/commands/search.rb
|
209
|
+
- lib/fakerbot/reflector.rb
|
210
|
+
- lib/fakerbot/renderer.rb
|
210
211
|
- lib/fakerbot/templates/list/.gitkeep
|
211
212
|
- lib/fakerbot/version.rb
|
212
213
|
homepage: https://github.com/akabiru/fakerbot
|