inch 0.0.1 → 0.1.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.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/README.md +335 -3
- data/Rakefile +8 -0
- data/TODOS.md +12 -0
- data/bin/inch +17 -0
- data/inch.gemspec +7 -2
- data/lib/inch.rb +6 -1
- data/lib/inch/cli.rb +24 -0
- data/lib/inch/cli/arguments.rb +45 -0
- data/lib/inch/cli/command.rb +29 -0
- data/lib/inch/cli/command/base.rb +62 -0
- data/lib/inch/cli/command/base_list.rb +75 -0
- data/lib/inch/cli/command/base_object.rb +40 -0
- data/lib/inch/cli/command/console.rb +22 -0
- data/lib/inch/cli/command/inspect.rb +20 -0
- data/lib/inch/cli/command/list.rb +25 -0
- data/lib/inch/cli/command/options/base.rb +137 -0
- data/lib/inch/cli/command/options/base_list.rb +84 -0
- data/lib/inch/cli/command/options/base_object.rb +47 -0
- data/lib/inch/cli/command/options/console.rb +26 -0
- data/lib/inch/cli/command/options/inspect.rb +25 -0
- data/lib/inch/cli/command/options/list.rb +30 -0
- data/lib/inch/cli/command/options/show.rb +27 -0
- data/lib/inch/cli/command/options/stats.rb +20 -0
- data/lib/inch/cli/command/options/suggest.rb +61 -0
- data/lib/inch/cli/command/output/base.rb +32 -0
- data/lib/inch/cli/command/output/console.rb +45 -0
- data/lib/inch/cli/command/output/inspect.rb +129 -0
- data/lib/inch/cli/command/output/list.rb +87 -0
- data/lib/inch/cli/command/output/show.rb +79 -0
- data/lib/inch/cli/command/output/stats.rb +111 -0
- data/lib/inch/cli/command/output/suggest.rb +104 -0
- data/lib/inch/cli/command/show.rb +20 -0
- data/lib/inch/cli/command/stats.rb +20 -0
- data/lib/inch/cli/command/suggest.rb +104 -0
- data/lib/inch/cli/command_parser.rb +82 -0
- data/lib/inch/cli/sparkline_helper.rb +31 -0
- data/lib/inch/cli/trace_helper.rb +42 -0
- data/lib/inch/cli/yardopts_helper.rb +49 -0
- data/lib/inch/code_object.rb +8 -0
- data/lib/inch/code_object/docstring.rb +97 -0
- data/lib/inch/code_object/nodoc_helper.rb +84 -0
- data/lib/inch/code_object/proxy.rb +37 -0
- data/lib/inch/code_object/proxy/base.rb +194 -0
- data/lib/inch/code_object/proxy/class_object.rb +9 -0
- data/lib/inch/code_object/proxy/constant_object.rb +8 -0
- data/lib/inch/code_object/proxy/method_object.rb +118 -0
- data/lib/inch/code_object/proxy/method_parameter_object.rb +81 -0
- data/lib/inch/code_object/proxy/module_object.rb +8 -0
- data/lib/inch/code_object/proxy/namespace_object.rb +38 -0
- data/lib/inch/core_ext.rb +2 -0
- data/lib/inch/core_ext/string.rb +3 -0
- data/lib/inch/core_ext/yard.rb +4 -0
- data/lib/inch/evaluation.rb +35 -0
- data/lib/inch/evaluation/base.rb +60 -0
- data/lib/inch/evaluation/class_object.rb +6 -0
- data/lib/inch/evaluation/constant_object.rb +34 -0
- data/lib/inch/evaluation/file.rb +66 -0
- data/lib/inch/evaluation/method_object.rb +127 -0
- data/lib/inch/evaluation/module_object.rb +6 -0
- data/lib/inch/evaluation/namespace_object.rb +94 -0
- data/lib/inch/evaluation/role/base.rb +49 -0
- data/lib/inch/evaluation/role/constant.rb +43 -0
- data/lib/inch/evaluation/role/method.rb +60 -0
- data/lib/inch/evaluation/role/method_parameter.rb +46 -0
- data/lib/inch/evaluation/role/missing.rb +20 -0
- data/lib/inch/evaluation/role/namespace.rb +58 -0
- data/lib/inch/evaluation/role/object.rb +64 -0
- data/lib/inch/evaluation/score_range.rb +26 -0
- data/lib/inch/rake.rb +1 -0
- data/lib/inch/rake/suggest.rb +26 -0
- data/lib/inch/source_parser.rb +36 -0
- data/lib/inch/version.rb +1 -1
- data/test/fixtures/code_examples/lib/foo.rb +87 -0
- data/test/fixtures/readme/lib/foo.rb +17 -0
- data/test/fixtures/simple/README +25 -0
- data/test/fixtures/simple/lib/broken.rb +10 -0
- data/test/fixtures/simple/lib/foo.rb +214 -0
- data/test/fixtures/simple/lib/role_methods.rb +78 -0
- data/test/fixtures/simple/lib/role_namespaces.rb +68 -0
- data/test/fixtures/visibility/lib/foo.rb +18 -0
- data/test/fixtures/yardopts/.yardopts +1 -0
- data/test/fixtures/yardopts/foo/bar.rb +6 -0
- data/test/inch/cli/arguments_test.rb +70 -0
- data/test/inch/cli/command/console_test.rb +59 -0
- data/test/inch/cli/command/inspect_test.rb +59 -0
- data/test/inch/cli/command/list_test.rb +61 -0
- data/test/inch/cli/command/show_test.rb +59 -0
- data/test/inch/cli/command/stats_test.rb +57 -0
- data/test/inch/cli/command/suggest_test.rb +57 -0
- data/test/inch/cli/command_parser_test.rb +33 -0
- data/test/inch/cli/yardopts_helper_test.rb +84 -0
- data/test/inch/code_object/docstring_test.rb +204 -0
- data/test/inch/code_object/nodoc_helper_test.rb +38 -0
- data/test/inch/code_object/proxy_test.rb +188 -0
- data/test/inch/source_parser_test.rb +23 -0
- data/test/integration/stats_options_test.rb +34 -0
- data/test/integration/visibility_options_test.rb +79 -0
- data/test/test_helper.rb +21 -0
- metadata +184 -7
@@ -0,0 +1,84 @@
|
|
1
|
+
module Inch
|
2
|
+
module CLI
|
3
|
+
module Command
|
4
|
+
module Options
|
5
|
+
class BaseList < Base
|
6
|
+
attribute :full, false
|
7
|
+
attribute :visibility, [:public, :protected]
|
8
|
+
attribute :namespaces
|
9
|
+
attribute :undocumented
|
10
|
+
attribute :depth
|
11
|
+
|
12
|
+
def parse(args)
|
13
|
+
opts = OptionParser.new
|
14
|
+
opts.banner = usage
|
15
|
+
|
16
|
+
descriptions.each do |text|
|
17
|
+
opts.separator " " + text
|
18
|
+
end
|
19
|
+
|
20
|
+
set_options(opts)
|
21
|
+
parse_yardopts_options(opts, args)
|
22
|
+
parse_options(opts, args)
|
23
|
+
|
24
|
+
@paths = get_paths(args)
|
25
|
+
end
|
26
|
+
|
27
|
+
def set_options(opts)
|
28
|
+
list_options(opts)
|
29
|
+
common_options(opts)
|
30
|
+
|
31
|
+
yardopts_options(opts)
|
32
|
+
end
|
33
|
+
|
34
|
+
protected
|
35
|
+
|
36
|
+
def list_options(opts)
|
37
|
+
opts.separator ""
|
38
|
+
opts.separator "List options:"
|
39
|
+
|
40
|
+
opts.on("--all", "Show all objects in the output") do
|
41
|
+
@full = true
|
42
|
+
end
|
43
|
+
|
44
|
+
opts.on("--only-namespaces", "Only show namespaces (classes, modules)") do
|
45
|
+
@namespaces = :only
|
46
|
+
end
|
47
|
+
opts.on("--no-namespaces", "Only show namespace children (methods, constants, attributes)") do
|
48
|
+
@namespaces = :none
|
49
|
+
end
|
50
|
+
|
51
|
+
opts.on("--no-public", "Do not show public objects") do
|
52
|
+
set_visibility :public, false
|
53
|
+
end
|
54
|
+
opts.on("--no-protected", "Do not show protected objects") do
|
55
|
+
set_visibility :protected, false
|
56
|
+
end
|
57
|
+
opts.on("--private", "Show private objects") do
|
58
|
+
set_visibility :private, true
|
59
|
+
end
|
60
|
+
|
61
|
+
opts.on("--only-undocumented", "Only show undocumented objects") do
|
62
|
+
@undocumented = :only
|
63
|
+
end
|
64
|
+
opts.on("--no-undocumented", "Only show documented objects") do
|
65
|
+
@undocumented = :none
|
66
|
+
end
|
67
|
+
|
68
|
+
opts.on("--depth [DEPTH]", "Only show objects up to a given DEPTH in the class tree") do |depth|
|
69
|
+
@depth = depth.to_i
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def set_visibility(_visibility, true_or_false)
|
74
|
+
if true_or_false
|
75
|
+
visibility.push(_visibility)
|
76
|
+
else
|
77
|
+
visibility.delete(_visibility)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Inch
|
2
|
+
module CLI
|
3
|
+
module Command
|
4
|
+
module Options
|
5
|
+
class BaseObject < Base
|
6
|
+
attribute :object_names, []
|
7
|
+
|
8
|
+
def parse(args)
|
9
|
+
opts = OptionParser.new
|
10
|
+
opts.banner = usage
|
11
|
+
|
12
|
+
descriptions.each do |text|
|
13
|
+
opts.separator " " + text
|
14
|
+
end
|
15
|
+
|
16
|
+
set_options(opts)
|
17
|
+
parse_yardopts_options(opts, args)
|
18
|
+
parse_options(opts, args)
|
19
|
+
|
20
|
+
@object_names = parse_object_names(args)
|
21
|
+
@paths = get_paths(args)
|
22
|
+
end
|
23
|
+
|
24
|
+
def set_options(opts)
|
25
|
+
common_options(opts)
|
26
|
+
|
27
|
+
yardopts_options(opts)
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
# TODO: really check the last parameters if they are globs, files
|
33
|
+
# or switches and find the object_name(s) that way
|
34
|
+
def parse_object_names(args)
|
35
|
+
arguments = Arguments.new(args)
|
36
|
+
object_names = arguments.object_names
|
37
|
+
object_names.each do |n|
|
38
|
+
@yard_files.delete(n)
|
39
|
+
args.delete(n)
|
40
|
+
end
|
41
|
+
object_names
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Inch
|
2
|
+
module CLI
|
3
|
+
module Command
|
4
|
+
module Options
|
5
|
+
class Console < BaseObject
|
6
|
+
def descriptions
|
7
|
+
[
|
8
|
+
"",
|
9
|
+
"Provides a PRY based REPL to inspect objects.",
|
10
|
+
"",
|
11
|
+
"Example: " + "$ inch console lib/**/*.rb Foo::Bar#initialize".cyan,
|
12
|
+
"",
|
13
|
+
"Shortcut commands on the prompt are:",
|
14
|
+
"",
|
15
|
+
"all".ljust(5) + " returns all code objects",
|
16
|
+
"f".ljust(5) + " finds an object by its path",
|
17
|
+
"ff".ljust(5) + " finds all objects given a partial path",
|
18
|
+
"o".ljust(5) + " returns the code object for OBJECT_NAME (if present)",
|
19
|
+
]
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Inch
|
2
|
+
module CLI
|
3
|
+
module Command
|
4
|
+
module Options
|
5
|
+
class Inspect < BaseObject
|
6
|
+
|
7
|
+
def descriptions
|
8
|
+
[
|
9
|
+
"",
|
10
|
+
"Example: " + "$ inch inspect lib/**/*.rb Foo::Bar#initialize".cyan,
|
11
|
+
"",
|
12
|
+
"Shows one or more objects in detail."
|
13
|
+
]
|
14
|
+
end
|
15
|
+
|
16
|
+
def verify
|
17
|
+
if object_names.empty?
|
18
|
+
kill # "Provide a name to an object to show it's evaluation."
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Inch
|
2
|
+
module CLI
|
3
|
+
module Command
|
4
|
+
module Options
|
5
|
+
class List < BaseList
|
6
|
+
attribute :numbers, false
|
7
|
+
|
8
|
+
def descriptions
|
9
|
+
[
|
10
|
+
"",
|
11
|
+
"Lists objects that can be improved regarding their documentation ordered by their grade.",
|
12
|
+
"",
|
13
|
+
"Example: " + "$ inch list lib/**/*.rb --all".cyan,
|
14
|
+
"",
|
15
|
+
description_grades,
|
16
|
+
description_arrows
|
17
|
+
]
|
18
|
+
end
|
19
|
+
|
20
|
+
def list_options(opts)
|
21
|
+
super
|
22
|
+
opts.on("--numbers", "Show numbers instead of grades and arrows") do |depth|
|
23
|
+
@numbers = true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Inch
|
2
|
+
module CLI
|
3
|
+
module Command
|
4
|
+
module Options
|
5
|
+
class Show < BaseObject
|
6
|
+
|
7
|
+
def descriptions
|
8
|
+
[
|
9
|
+
"",
|
10
|
+
"Example: " + "$ inch show lib/**/*.rb Foo::Bar#initialize".cyan,
|
11
|
+
"",
|
12
|
+
"Shows one or more objects in detail.",
|
13
|
+
description_grades,
|
14
|
+
description_arrows
|
15
|
+
]
|
16
|
+
end
|
17
|
+
|
18
|
+
def verify
|
19
|
+
if object_names.empty?
|
20
|
+
kill # "Provide a name to an object to show it's evaluation."
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Inch
|
2
|
+
module CLI
|
3
|
+
module Command
|
4
|
+
module Options
|
5
|
+
class Stats < BaseList
|
6
|
+
FORMATS = %w(text json yaml)
|
7
|
+
|
8
|
+
attribute :format, FORMATS.first
|
9
|
+
|
10
|
+
def list_options(opts)
|
11
|
+
super
|
12
|
+
opts.on("-f", "--format [FORMAT]", FORMATS, "Set output FORMAT") do |format|
|
13
|
+
@format = format
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Inch
|
2
|
+
module CLI
|
3
|
+
module Command
|
4
|
+
module Options
|
5
|
+
class Suggest < BaseList
|
6
|
+
attribute :object_count, 20
|
7
|
+
attribute :file_count, 5
|
8
|
+
|
9
|
+
attribute :proper_grades, [:A, :B]
|
10
|
+
attribute :grades_to_display, [:B, :C, :U]
|
11
|
+
attribute :object_min_priority, 0
|
12
|
+
attribute :object_max_score, ::Inch::Evaluation::Base::MAX_SCORE
|
13
|
+
|
14
|
+
attribute :pedantic, false
|
15
|
+
|
16
|
+
def set_options(opts)
|
17
|
+
list_options(opts)
|
18
|
+
suggest_options(opts)
|
19
|
+
common_options(opts)
|
20
|
+
|
21
|
+
yardopts_options(opts)
|
22
|
+
end
|
23
|
+
|
24
|
+
def descriptions
|
25
|
+
[
|
26
|
+
"",
|
27
|
+
"Suggests objects and files that can be improved regarding their documentation.",
|
28
|
+
"",
|
29
|
+
"Example: " + "$ inch suggest lib/**/*.rb --pedantic".cyan,
|
30
|
+
"",
|
31
|
+
description_grades,
|
32
|
+
description_arrows
|
33
|
+
]
|
34
|
+
end
|
35
|
+
|
36
|
+
protected
|
37
|
+
|
38
|
+
def suggest_options(opts)
|
39
|
+
opts.separator ""
|
40
|
+
opts.separator "Suggest options:"
|
41
|
+
|
42
|
+
opts.on("-n", "--objects [COUNT]", "Show COUNT objects") do |count|
|
43
|
+
@object_count = count.to_i
|
44
|
+
end
|
45
|
+
opts.on("--pedantic", "Be excessively concerned with minor details and rules") do |count|
|
46
|
+
# all objects are considered a priority
|
47
|
+
@object_min_priority = -99
|
48
|
+
# only objects with the highest score are omitted from the list
|
49
|
+
@object_max_score = object_max_score - 1
|
50
|
+
# only A-listers are regarded as 'proper'
|
51
|
+
@proper_grades = [:A]
|
52
|
+
@grades_to_display = [:A, :B, :C]
|
53
|
+
@object_count = 30
|
54
|
+
@pedantic = true
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
module Inch
|
4
|
+
module CLI
|
5
|
+
module Command
|
6
|
+
module Output
|
7
|
+
# Abstract base class for CLI output
|
8
|
+
#
|
9
|
+
class Base
|
10
|
+
include TraceHelper
|
11
|
+
|
12
|
+
PRIORITY_MAP = {
|
13
|
+
(4..99) => "\u2191", # north
|
14
|
+
(2...4) => "\u2197", # north-east
|
15
|
+
(0..1) => "\u2192", # east
|
16
|
+
(-2..-1) => "\u2198", # south-east
|
17
|
+
(-99..-3) => "\u2193", # south-east
|
18
|
+
}
|
19
|
+
PRIORITY_ARROWS = PRIORITY_MAP.values
|
20
|
+
|
21
|
+
def priority_arrow(priority, color = :white)
|
22
|
+
PRIORITY_MAP.each do |range, str|
|
23
|
+
if range.include?(priority)
|
24
|
+
return str.color(color).dark
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Inch
|
2
|
+
module CLI
|
3
|
+
module Command
|
4
|
+
module Output
|
5
|
+
class Console < Base
|
6
|
+
extend Forwardable
|
7
|
+
|
8
|
+
attr_reader :object, :objects, :source_parser
|
9
|
+
|
10
|
+
def_delegators :source_parser, :all_objects, :find_object, :find_objects
|
11
|
+
alias :all :all_objects
|
12
|
+
alias :ff :find_objects
|
13
|
+
alias :f :find_object
|
14
|
+
alias :o :object
|
15
|
+
|
16
|
+
COLOR = :color198 # magenta-ish
|
17
|
+
BG_COLOR = :color207 # magenta-ish
|
18
|
+
|
19
|
+
def initialize(options, object, objects, source_parser)
|
20
|
+
@options = options
|
21
|
+
@object = object
|
22
|
+
@objects = objects
|
23
|
+
@source_parser = source_parser
|
24
|
+
|
25
|
+
run
|
26
|
+
end
|
27
|
+
|
28
|
+
def run
|
29
|
+
trace
|
30
|
+
trace_header("Welcome to Inch's console", COLOR, BG_COLOR)
|
31
|
+
trace edged(COLOR, @options.usage)
|
32
|
+
@options.descriptions.each do |line|
|
33
|
+
trace edged(COLOR, line)
|
34
|
+
end
|
35
|
+
run_pry
|
36
|
+
end
|
37
|
+
|
38
|
+
def run_pry
|
39
|
+
binding.pry
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
module Inch
|
2
|
+
module CLI
|
3
|
+
module Command
|
4
|
+
module Output
|
5
|
+
class Inspect < Base
|
6
|
+
attr_reader :objects
|
7
|
+
|
8
|
+
COLOR = :color198 # magenta-ish
|
9
|
+
BG_COLOR = :color207 # magenta-ish
|
10
|
+
LJUST = 20
|
11
|
+
|
12
|
+
def initialize(options, objects)
|
13
|
+
@options = options
|
14
|
+
@objects = objects
|
15
|
+
|
16
|
+
display_objects
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def display_objects
|
22
|
+
objects.each do |o|
|
23
|
+
print_object(o)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def print_object(o)
|
28
|
+
trace
|
29
|
+
trace_header(o.path, COLOR, BG_COLOR)
|
30
|
+
|
31
|
+
print_file_info(o)
|
32
|
+
print_code_info(o)
|
33
|
+
print_doc_info(o)
|
34
|
+
print_namespace_info(o)
|
35
|
+
print_roles_info(o)
|
36
|
+
|
37
|
+
echo "Score (min: #{o.evaluation.min_score}, max: #{o.evaluation.max_score})".ljust(40) + "#{o.score.to_i}".rjust(5) + "#{o.priority.to_i}".rjust(4)
|
38
|
+
echo
|
39
|
+
end
|
40
|
+
|
41
|
+
def print_file_info(o)
|
42
|
+
o.files.each do |f|
|
43
|
+
echo "-> #{f[0]}:#{f[1]}".color(COLOR)
|
44
|
+
end
|
45
|
+
echo separator
|
46
|
+
end
|
47
|
+
|
48
|
+
def print_code_info(o)
|
49
|
+
if o.method?
|
50
|
+
o.comment_and_abbrev_source.lines.each do |line|
|
51
|
+
echo line.gsub(/\n$/m, '').dark
|
52
|
+
end
|
53
|
+
echo separator
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def print_roles_info(o)
|
58
|
+
if o.roles.empty?
|
59
|
+
echo "No roles assigned.".dark
|
60
|
+
else
|
61
|
+
o.roles.each do |role|
|
62
|
+
name = role.class.to_s.split('::Role::').last
|
63
|
+
if role.potential_score
|
64
|
+
score = "(#{role.potential_score.to_i})".rjust(5).yellow.dark
|
65
|
+
else
|
66
|
+
value = role.score.to_i
|
67
|
+
score = value.abs.to_s.rjust(4)
|
68
|
+
if value < 0
|
69
|
+
score = ("-" + score).red
|
70
|
+
elsif value > 0
|
71
|
+
score = ("+" + score).green
|
72
|
+
else
|
73
|
+
score = " " + score
|
74
|
+
end
|
75
|
+
end
|
76
|
+
priority = role.priority.to_s.rjust(4)
|
77
|
+
if role.priority == 0
|
78
|
+
priority = priority.dark
|
79
|
+
end
|
80
|
+
echo name.ljust(40) + score + priority
|
81
|
+
if role.max_score
|
82
|
+
echo " (set max score to #{role.max_score})"
|
83
|
+
end
|
84
|
+
if role.min_score
|
85
|
+
echo " (set min score to #{role.min_score})"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
echo separator
|
90
|
+
end
|
91
|
+
|
92
|
+
def print_doc_info(o)
|
93
|
+
if o.nodoc?
|
94
|
+
echo "The object was tagged not to documented.".yellow
|
95
|
+
else
|
96
|
+
echo "Docstring".ljust(LJUST) + "#{o.has_doc? ? 'Yes' : 'No text'}"
|
97
|
+
if o.method?
|
98
|
+
echo "Parameters:".ljust(LJUST) + "#{o.has_parameters? ? '' : 'No parameters'}"
|
99
|
+
o.parameters.each do |p|
|
100
|
+
echo " " + p.name.ljust(LJUST-2) + "#{p.mentioned? ? 'Mentioned' : 'No text'} / #{p.typed? ? 'Typed' : 'Not typed'} / #{p.described? ? 'Described' : 'Not described'}"
|
101
|
+
end
|
102
|
+
echo "Return type:".ljust(LJUST) + "#{o.return_mentioned? ? 'Defined' : 'Not defined'}"
|
103
|
+
end
|
104
|
+
end
|
105
|
+
echo separator
|
106
|
+
end
|
107
|
+
|
108
|
+
def print_namespace_info(o)
|
109
|
+
if o.namespace?
|
110
|
+
echo "Children (height: #{o.height}):"
|
111
|
+
o.children.each do |child|
|
112
|
+
echo "+ " + child.path.color(COLOR)
|
113
|
+
end
|
114
|
+
echo separator
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def echo(msg = "")
|
119
|
+
trace edged(COLOR, msg)
|
120
|
+
end
|
121
|
+
|
122
|
+
def separator
|
123
|
+
"-".color(COLOR) * (CLI::COLUMNS - 2)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|