bri 0.5.0 → 1.0.0.pre.beta1
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/Changelog +0 -2
- data/TODO +2 -3
- data/bin/bri +21 -8
- data/lib/bri/mall.rb +12 -17
- data/lib/bri/match/base.rb +2 -7
- data/lib/bri/match/class.rb +6 -3
- data/lib/bri/match/method.rb +3 -3
- data/lib/bri/renderer/blank_line.rb +9 -0
- data/lib/bri/renderer/default.rb +27 -0
- data/lib/bri/renderer/document.rb +11 -0
- data/lib/bri/renderer/heading.rb +9 -0
- data/lib/bri/renderer/list/base.rb +18 -0
- data/lib/bri/renderer/list/bullet.rb +15 -0
- data/lib/bri/renderer/list/labeled.rb +15 -0
- data/lib/bri/renderer/list/lower_lettered.rb +18 -0
- data/lib/bri/renderer/list/note.rb +15 -0
- data/lib/bri/renderer/list/numbered.rb +18 -0
- data/lib/bri/renderer/list/upper_lettered.rb +18 -0
- data/lib/bri/renderer/list.rb +24 -0
- data/lib/bri/renderer/list_item.rb +24 -0
- data/lib/bri/renderer/paragraph.rb +11 -0
- data/lib/bri/renderer/result.rb +73 -0
- data/lib/bri/renderer/rule.rb +9 -0
- data/lib/bri/renderer/verbatim.rb +14 -0
- data/lib/bri/renderer.rb +28 -188
- data/lib/bri/search/class.rb +3 -1
- data/lib/bri/search/method.rb +3 -3
- data/lib/bri/templates.rb +7 -38
- data/lib/bri/text_formatting_utils.rb +92 -0
- data/lib/bri.rb +18 -15
- metadata +27 -17
- data/spec/bri_dummy_spec_class.rb +0 -132
- data/spec/lib/bri/mall_spec.rb +0 -38
- data/spec/lib/bri/match/class_spec.rb +0 -125
- data/spec/lib/bri/match/method_spec.rb +0 -116
- data/spec/lib/bri/matcher_spec.rb +0 -70
- data/spec/lib/bri/renderer_spec.rb +0 -338
- data/spec/lib/bri/search/class_method_spec.rb +0 -173
- data/spec/lib/bri/search/class_spec.rb +0 -66
- data/spec/lib/bri/search/instance_method_spec.rb +0 -174
- data/spec/lib/bri/search/method_spec.rb +0 -41
- data/spec/spec_helper.rb +0 -22
data/lib/bri/renderer.rb
CHANGED
@@ -1,195 +1,35 @@
|
|
1
1
|
require 'strscan'
|
2
|
+
require 'rdoc'
|
3
|
+
require 'rdoc/markup'
|
4
|
+
|
5
|
+
require_relative 'renderer/default'
|
6
|
+
require_relative 'renderer/blank_line'
|
7
|
+
require_relative 'renderer/document'
|
8
|
+
require_relative 'renderer/heading'
|
9
|
+
require_relative 'renderer/list_item'
|
10
|
+
require_relative 'renderer/list'
|
11
|
+
require_relative 'renderer/paragraph'
|
12
|
+
require_relative 'renderer/rule'
|
13
|
+
require_relative 'renderer/verbatim'
|
14
|
+
require_relative 'renderer/result'
|
2
15
|
|
3
16
|
module Bri
|
4
17
|
module Renderer
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
item_width = width - INDENT_WIDTH
|
21
|
-
case element.type
|
22
|
-
when :BULLET
|
23
|
-
rendered_items = element.items.map { |item| render( item, item_width ) }
|
24
|
-
rendered_items.map! { |item| item.gsub( /\n/, "\n#{INDENT}" ) }
|
25
|
-
rendered_items.map! { |item| item.prepend( ' *' ) }
|
26
|
-
|
27
|
-
when :NUMBER
|
28
|
-
rendered_items = element.items.map { |item| render( item, item_width ) }
|
29
|
-
rendered_items.map! { |item| item.gsub( /\n/, "\n#{INDENT}" ) }
|
30
|
-
rendered_items.map!.with_index( 1 ) { |item, i| item.prepend( "#{i}." ) }
|
31
|
-
|
32
|
-
when :LALPHA
|
33
|
-
rendered_items = element.items.map { |item| render( item, item_width ) }
|
34
|
-
rendered_items.map! { |item| item.gsub( /\n/, "\n#{INDENT}" ) }
|
35
|
-
rendered_items.map!.with_index { |item, i| item.prepend( LOWER_ALPHABET[i] ) }
|
36
|
-
|
37
|
-
when :UALPHA
|
38
|
-
rendered_items = element.items.map { |item| render( item, item_width ) }
|
39
|
-
rendered_items.map! { |item| item.gsub( /\n/, "\n#{INDENT}" ) }
|
40
|
-
rendered_items.map!.with_index { |item, index| item.prepend( UPPER_ALPHABET[i] ) }
|
41
|
-
|
42
|
-
when :LABEL
|
43
|
-
# do nothing
|
44
|
-
rendered_items = element.items.map { |item| render( item, item_width ) }
|
45
|
-
rendered_items.map! { |item| item.gsub( /\n/, "\n#{INDENT}" ) }
|
46
|
-
|
47
|
-
when :NOTE
|
48
|
-
alignment_width = element.items.flat_map(&:label).map(&:size).max + 1
|
49
|
-
rendered_items = element.items.map { |item| render( item, item_width, alignment_width ) }
|
50
|
-
rendered_items.map! { |item| item.gsub( /\n/, "\n#{INDENT}" ) }
|
51
|
-
end
|
52
|
-
|
53
|
-
"#{rendered_items.join( "\n" )}\n"
|
54
|
-
|
55
|
-
else
|
56
|
-
text = extract_text( element, width, alignment_width )
|
57
|
-
|
58
|
-
if text == "\n"
|
59
|
-
nil
|
60
|
-
else
|
61
|
-
styled_text = replace_markup( text )
|
62
|
-
wrapped_text = wrap_to_width( styled_text, width )
|
63
|
-
indent( wrapped_text )
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def self.extract_text( element, width, label_alignment_width = 0, conserve_newlines = false )
|
69
|
-
case element
|
70
|
-
when RDoc::Markup::Paragraph
|
71
|
-
join_char = conserve_newlines ? "\n" : " "
|
72
|
-
element.parts.map(&:strip).join( join_char ) + "\n"
|
73
|
-
|
74
|
-
when RDoc::Markup::BlankLine
|
75
|
-
"\n"
|
76
|
-
|
77
|
-
when RDoc::Markup::Rule
|
78
|
-
"-" * width + "\n"
|
79
|
-
|
80
|
-
when RDoc::Markup::Verbatim
|
81
|
-
element.parts.map { |part| part.prepend( " " ) }.join + "\n"
|
82
|
-
|
83
|
-
when RDoc::Markup::Heading
|
84
|
-
"<h>#{element.text}</h>\n"
|
85
|
-
|
86
|
-
when RDoc::Markup::ListItem
|
87
|
-
parts = element.parts.map { |part| extract_text( part, width, 0, true ) }.join
|
88
|
-
|
89
|
-
if element.label
|
90
|
-
labels = element.label.map { |l| "#{l}:" }.join("\n")
|
91
|
-
sprintf( "%*s %s", -label_alignment_width, labels, parts )
|
92
|
-
else
|
93
|
-
parts
|
94
|
-
end
|
95
|
-
|
96
|
-
when RDoc::Markup::List
|
97
|
-
render( element, width - INDENT_WIDTH ) + "\n"
|
98
|
-
|
99
|
-
when RDoc::Markup::Document
|
100
|
-
element.parts.
|
101
|
-
map { |part| extract_text( part, width, label_alignment_width, conserve_newlines ) }.
|
102
|
-
join + "\n"
|
103
|
-
else
|
104
|
-
raise "Don't know how to handle type #{element.class}: #{element.inspect}"
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
def self.replace_markup( text )
|
109
|
-
text.gsub!( /(?<!\\)<(?:tt|code)>/, Color.cyan )
|
110
|
-
text.gsub!( /(?<!\\)<\/(?:tt|code)>/, Color.reset )
|
111
|
-
|
112
|
-
text.gsub!( /(?<!\\)<b>/, Color.bold )
|
113
|
-
text.gsub!( /(?<!\\)<\/b>/, Color.reset )
|
114
|
-
|
115
|
-
text.gsub!( /(?<!\\)<(?:em|i)>/, Color.yellow )
|
116
|
-
text.gsub!( /(?<!\\)<\/(?:em|i)>/, Color.reset )
|
117
|
-
|
118
|
-
text.gsub!( "<h>", Color.green )
|
119
|
-
text.gsub!( "</h>", Color.reset )
|
120
|
-
|
121
|
-
text.gsub!( "\\<", "<" )
|
122
|
-
|
123
|
-
text.gsub!( /(#\s*=>)(.*)/,
|
124
|
-
"#{Color.dark}\\1#{Color.reset}#{Color.bold}\\2#{Color.reset}" )
|
125
|
-
|
126
|
-
text.gsub!( /(^|\s)\*(.*?[a-zA-Z0-9]+.*?)\*/,
|
127
|
-
"\\1#{Color.bold}\\2#{Color.reset}" )
|
128
|
-
text.gsub!( /(^|\s)\+(.*?[a-zA-Z0-9]+.*?)\+/,
|
129
|
-
"\\1#{Color.cyan}\\2#{Color.reset}" )
|
130
|
-
text.gsub!( /(^|\s)_(.*?[a-zA-Z0-9]+.*?)_/,
|
131
|
-
"\\1#{Color.yellow}\\2#{Color.reset}" )
|
132
|
-
|
133
|
-
text.gsub!( %r{\b((?:https?|ftp)://[-\w.?%&=/]+)\b},
|
134
|
-
"#{Color.underline}\\1#{Color.reset}" )
|
135
|
-
|
136
|
-
text.gsub!( %r{\b(mailto:[-\w.%]+@[-\w.]+)\b},
|
137
|
-
"#{Color.underline}\\1#{Color.reset}" )
|
138
|
-
|
139
|
-
text.gsub!( %r{\b((?<!:\/\/)www.[-\w.?%&=]+)\b},
|
140
|
-
"#{Color.underline}\\1#{Color.reset}" )
|
141
|
-
|
142
|
-
text.gsub!( %r{\blink:(.*?)(\s|$)},
|
143
|
-
"#{Color.underline}\\1#{Color.reset}\\2" )
|
144
|
-
|
145
|
-
text.gsub!( %r{\{(.*?)\}\[(.*?)\]}, "\\1 (\\2)" )
|
146
|
-
text.gsub!( %r{\[(#{Regexp.escape( Color.underline )}.*?#{Regexp.escape( Color.reset )})\]},
|
147
|
-
" (\\1)" )
|
148
|
-
text
|
149
|
-
end
|
150
|
-
|
151
|
-
def self.printable_length( text )
|
152
|
-
Term::ANSIColor.uncolored( text ).length
|
153
|
-
end
|
154
|
-
|
155
|
-
def self.wrap_list( array, width = Bri.width )
|
156
|
-
indent( wrap_to_width( array.join(" "), width ) )
|
157
|
-
end
|
158
|
-
|
159
|
-
def self.wrap_to_width( styled_text, width )
|
160
|
-
styled_text.split( "\n" ).map { |row| wrap_row( row, width ) }.join
|
161
|
-
end
|
162
|
-
|
163
|
-
def self.wrap_row( physical_row, width )
|
164
|
-
output_text = ''
|
165
|
-
logical_row = ''
|
166
|
-
printable_row_length = 0
|
167
|
-
|
168
|
-
scanner = StringScanner.new( physical_row )
|
169
|
-
|
170
|
-
while( !scanner.eos? )
|
171
|
-
token = scanner.scan( /\S+/ ).to_s
|
172
|
-
printable_token_length = printable_length( token )
|
173
|
-
|
174
|
-
if printable_token_length + printable_row_length > width
|
175
|
-
output_text << logical_row << "\n"
|
176
|
-
logical_row = ''
|
177
|
-
printable_row_length = 0
|
178
|
-
end
|
179
|
-
|
180
|
-
logical_row << token
|
181
|
-
printable_row_length += printable_token_length
|
182
|
-
|
183
|
-
token = scanner.scan( /\s*/ ).to_s
|
184
|
-
logical_row << token
|
185
|
-
printable_row_length += token.length
|
186
|
-
end
|
187
|
-
|
188
|
-
output_text << logical_row << "\n"
|
189
|
-
end
|
190
|
-
|
191
|
-
def self.indent( text )
|
192
|
-
text.split( "\n" ).map { |row| "#{INDENT}#{row}" }.join("\n" )
|
18
|
+
RDOC_TO_BRI_RENDERER_CLASS_MAP = {
|
19
|
+
::RDoc::Markup::Document => ::Bri::Renderer::Document,
|
20
|
+
::RDoc::Markup::Paragraph => ::Bri::Renderer::Paragraph,
|
21
|
+
::RDoc::Markup::BlankLine => ::Bri::Renderer::BlankLine,
|
22
|
+
::RDoc::Markup::Rule => ::Bri::Renderer::Rule,
|
23
|
+
::RDoc::Markup::Verbatim => ::Bri::Renderer::Verbatim,
|
24
|
+
::RDoc::Markup::Heading => ::Bri::Renderer::Heading,
|
25
|
+
::RDoc::Markup::ListItem => ::Bri::Renderer::ListItem,
|
26
|
+
::RDoc::Markup::List => ::Bri::Renderer::List,
|
27
|
+
}
|
28
|
+
RDOC_TO_BRI_RENDERER_CLASS_MAP.default = ::Bri::Renderer::Default
|
29
|
+
|
30
|
+
def self.new( element )
|
31
|
+
renderer_class = RDOC_TO_BRI_RENDERER_CLASS_MAP[element.class]
|
32
|
+
renderer_class.new( element )
|
193
33
|
end
|
194
34
|
end
|
195
35
|
end
|
data/lib/bri/search/class.rb
CHANGED
@@ -3,7 +3,9 @@ module Bri
|
|
3
3
|
class Class < Base
|
4
4
|
def search( type = :fully_qualified )
|
5
5
|
# NOTE: classes are only searched as fully qualified for the time being
|
6
|
-
Bri::Mall.
|
6
|
+
Bri::Mall.stores.
|
7
|
+
select { |s| s.module_names.include?( @term ) }.
|
8
|
+
each do |store|
|
7
9
|
@matches << Bri::Match::Class.new( store.load_class( @term ), store )
|
8
10
|
end
|
9
11
|
end
|
data/lib/bri/search/method.rb
CHANGED
@@ -31,7 +31,7 @@ module Bri
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def store_for_method
|
34
|
-
Bri::Mall.
|
34
|
+
Bri::Mall.stores.detect do |store|
|
35
35
|
store_methods( store ).has_key?( @class_term ) &&
|
36
36
|
store_methods( store )[@class_term].include?( @method_term )
|
37
37
|
end
|
@@ -54,7 +54,7 @@ module Bri
|
|
54
54
|
|
55
55
|
|
56
56
|
def partially_qualified_search
|
57
|
-
Bri::Mall.
|
57
|
+
Bri::Mall.stores.each do |store|
|
58
58
|
classes_with_method( store, @method_term ).each do |klass|
|
59
59
|
match_data = method_rdoc( store, klass, @method_term )
|
60
60
|
next unless match_data
|
@@ -74,7 +74,7 @@ module Bri
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def unqualified_search_worker( method_re )
|
77
|
-
Bri::Mall.
|
77
|
+
Bri::Mall.stores.each do |store|
|
78
78
|
candidates_from_method_re( store, method_re ).each do |klass, methods|
|
79
79
|
methods.each do |method|
|
80
80
|
match_data = method_rdoc( store, klass, method )
|
data/lib/bri/templates.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
module Bri
|
2
2
|
module Templates
|
3
|
-
RULE_CHARACTER = '-'.freeze
|
4
|
-
|
5
3
|
MULTIPLE_CHOICES =<<-EOT
|
6
|
-
<%=
|
4
|
+
<%= hrule( "Multiple choices:" ) %>
|
7
5
|
|
8
6
|
<%= qualified_methods.sort.join("\n") %>
|
9
7
|
|
@@ -24,38 +22,32 @@ module Bri
|
|
24
22
|
|
25
23
|
<% if !includes.empty? %>
|
26
24
|
<%= section_header( "Includes:" ) %>
|
27
|
-
<%=
|
28
|
-
|
25
|
+
<%= wrap_list( includes.sort ) %>
|
29
26
|
|
30
27
|
<% end %>
|
31
28
|
<% if !extends.empty? %>
|
32
29
|
<%= section_header( "Extends:" ) %>
|
33
|
-
<%=
|
34
|
-
|
30
|
+
<%= wrap_list( extends.sort ) %>
|
35
31
|
|
36
32
|
<% end %>
|
37
33
|
<% if !constants.empty? %>
|
38
34
|
<%= section_header( "Constants:" ) %>
|
39
|
-
<%=
|
40
|
-
|
35
|
+
<%= wrap_list( constants.sort ) %>
|
41
36
|
|
42
37
|
<% end %>
|
43
38
|
<% if !class_methods.empty? %>
|
44
39
|
<%= section_header( "Class methods:" ) %>
|
45
|
-
<%=
|
46
|
-
|
40
|
+
<%= wrap_list( class_methods.sort ) %>
|
47
41
|
|
48
42
|
<% end %>
|
49
43
|
<% if !instance_methods.empty? %>
|
50
44
|
<%= section_header( "Instance methods:" ) %>
|
51
|
-
<%=
|
52
|
-
|
45
|
+
<%= wrap_list( instance_methods.sort ) %>
|
53
46
|
|
54
47
|
<% end %>
|
55
48
|
<% if !attributes.empty? %>
|
56
49
|
<%= section_header( "Attributes:" ) %>
|
57
|
-
<%=
|
58
|
-
|
50
|
+
<%= wrap_list( attributes.sort ) %>
|
59
51
|
|
60
52
|
<% end %>
|
61
53
|
EOT
|
@@ -73,28 +65,5 @@ module Bri
|
|
73
65
|
<% end %>
|
74
66
|
|
75
67
|
EOT
|
76
|
-
|
77
|
-
module Helpers
|
78
|
-
def hrule( text = '', width = Bri.width )
|
79
|
-
text.prepend( " " ) unless text.empty?
|
80
|
-
|
81
|
-
rule_length = width - text.length
|
82
|
-
rule_length = 1 if rule_length < 1
|
83
|
-
|
84
|
-
rule = RULE_CHARACTER * rule_length
|
85
|
-
"#{rule}#{Term::ANSIColor::bold( text )}\n"
|
86
|
-
end
|
87
|
-
module_function :hrule
|
88
|
-
|
89
|
-
def print_origin( origin_text, width = Bri.width )
|
90
|
-
return unless origin_text
|
91
|
-
"(#{origin_text})".rjust( width )
|
92
|
-
end
|
93
|
-
|
94
|
-
def section_header( text )
|
95
|
-
"#{Term::ANSIColor.green}#{Term::ANSIColor.underline}#{text}#{Term::ANSIColor.reset}\n"
|
96
|
-
end
|
97
|
-
module_function :section_header
|
98
|
-
end
|
99
68
|
end
|
100
69
|
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
module Bri
|
2
|
+
module TextFormattingUtils
|
3
|
+
RULE_CHARACTER = '-'.freeze
|
4
|
+
|
5
|
+
def wrap_to_width( styled_text, width )
|
6
|
+
styled_text.split( "\n" ).map { |row| wrap_row( row, width ) }.join
|
7
|
+
end
|
8
|
+
module_function :wrap_to_width
|
9
|
+
|
10
|
+
def wrap_row( physical_row, width )
|
11
|
+
output_text = ''
|
12
|
+
logical_row = ''
|
13
|
+
printable_row_length = 0
|
14
|
+
tokens_in_row = 0
|
15
|
+
|
16
|
+
scanner = StringScanner.new( physical_row )
|
17
|
+
|
18
|
+
while( !scanner.eos? )
|
19
|
+
token = scanner.scan( /\S+/ ).to_s
|
20
|
+
printable_token_length = printable_length( token )
|
21
|
+
|
22
|
+
if printable_token_length + printable_row_length > width && tokens_in_row > 0
|
23
|
+
output_text << logical_row.rstrip << "\n"
|
24
|
+
logical_row.clear
|
25
|
+
printable_row_length = 0
|
26
|
+
tokens_in_row = 0
|
27
|
+
end
|
28
|
+
|
29
|
+
logical_row << token
|
30
|
+
printable_row_length += printable_token_length
|
31
|
+
tokens_in_row += 1
|
32
|
+
|
33
|
+
# TODO: Instead of using rstrip when appending the logical row,
|
34
|
+
# identify here if the whitespace token will be the last
|
35
|
+
# on the row, and if so, don't add it in the first place.
|
36
|
+
# (sr 2019-06-23)
|
37
|
+
token = scanner.scan( /\s+/ ).to_s
|
38
|
+
logical_row << token
|
39
|
+
printable_row_length += token.length
|
40
|
+
end
|
41
|
+
|
42
|
+
output_text << logical_row.rstrip << "\n"
|
43
|
+
end
|
44
|
+
module_function :wrap_row
|
45
|
+
|
46
|
+
def indent( text, indent_depth: 2, each_row: true )
|
47
|
+
indent = " " * indent_depth
|
48
|
+
|
49
|
+
if each_row
|
50
|
+
text.lines.map { |row| row.prepend( indent ) }.join
|
51
|
+
else
|
52
|
+
text.prepend( indent )
|
53
|
+
end
|
54
|
+
end
|
55
|
+
module_function :indent
|
56
|
+
|
57
|
+
def printable_length( text )
|
58
|
+
Term::ANSIColor.uncolored( text ).length
|
59
|
+
end
|
60
|
+
module_function :printable_length
|
61
|
+
|
62
|
+
def wrap_list( array, width = Bri.width )
|
63
|
+
return '' if array.empty?
|
64
|
+
|
65
|
+
indent( wrap_to_width( array.join( " " ), width - 2 ) )
|
66
|
+
end
|
67
|
+
module_function :wrap_list
|
68
|
+
|
69
|
+
def hrule( text = '', width = Bri.width )
|
70
|
+
return "#{RULE_CHARACTER * width}\n" if text.empty?
|
71
|
+
|
72
|
+
rule_length = width - text.length - 1
|
73
|
+
rule_length = 1 if rule_length < 1
|
74
|
+
|
75
|
+
rule = RULE_CHARACTER * rule_length
|
76
|
+
"#{rule} #{Term::ANSIColor::bold( text )}\n"
|
77
|
+
end
|
78
|
+
module_function :hrule
|
79
|
+
|
80
|
+
def print_origin( origin_text, width = Bri.width )
|
81
|
+
return '' if !origin_text || origin_text.empty?
|
82
|
+
|
83
|
+
"(#{origin_text})".rjust( width )
|
84
|
+
end
|
85
|
+
module_function :print_origin
|
86
|
+
|
87
|
+
def section_header( text )
|
88
|
+
"#{Term::ANSIColor.green}#{Term::ANSIColor.underline}#{text}#{Term::ANSIColor.reset}\n"
|
89
|
+
end
|
90
|
+
module_function :section_header
|
91
|
+
end
|
92
|
+
end
|
data/lib/bri.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'erb'
|
2
2
|
require 'term/ansicolor'
|
3
3
|
|
4
|
+
require_relative 'bri/text_formatting_utils'
|
4
5
|
require_relative 'bri/renderer'
|
5
6
|
require_relative 'bri/mall'
|
6
7
|
require_relative 'bri/matcher'
|
@@ -11,22 +12,24 @@ require_relative 'bri/match'
|
|
11
12
|
module Bri
|
12
13
|
DEFAULT_WIDTH = 72
|
13
14
|
|
14
|
-
def self.ri( query,
|
15
|
+
def self.ri( query, options )
|
16
|
+
if options[:show_all]
|
17
|
+
Bri::Mall.ri_paths( system: true, site: true, home: true, gems: true )
|
18
|
+
else
|
19
|
+
Bri::Mall.ri_paths( system: true, site: true, home: true, gems: false )
|
20
|
+
end
|
21
|
+
|
15
22
|
results = Bri::Matcher.new( query ).find
|
16
23
|
|
17
24
|
if results.size == 0
|
18
25
|
"No matching results found"
|
26
|
+
|
19
27
|
elsif results.size == 1
|
20
28
|
results.first.to_s
|
29
|
+
|
21
30
|
elsif results.all? { |r| r.is_a?(Bri::Match::Class) }
|
22
|
-
|
23
|
-
|
24
|
-
else
|
25
|
-
gem_docs, core_docs = results.partition { |r| r.origin =~ %r{gem\b} }
|
26
|
-
|
27
|
-
docs_to_output = core_docs.empty? ? gem_docs : core_docs
|
28
|
-
docs_to_output.map(&:to_s)
|
29
|
-
end
|
31
|
+
results.map(&:to_s)
|
32
|
+
|
30
33
|
else
|
31
34
|
qualified_methods = results.map(&:full_name).sort
|
32
35
|
ERB.new( Bri::Templates::MULTIPLE_CHOICES, nil, '<>' ).result( binding )
|
@@ -47,18 +50,18 @@ module Bri
|
|
47
50
|
end
|
48
51
|
|
49
52
|
def self.list_classes
|
50
|
-
Bri::Mall.
|
53
|
+
Bri::Mall.classes.join("\n" )
|
51
54
|
end
|
52
55
|
|
53
56
|
def self.list_methods
|
54
|
-
( Bri::Mall.
|
55
|
-
Bri::Mall.
|
57
|
+
( Bri::Mall.instance_methods +
|
58
|
+
Bri::Mall.class_methods ).sort.join( "\n" )
|
56
59
|
end
|
57
60
|
|
58
61
|
def self.list_names
|
59
|
-
( Bri::Mall.
|
60
|
-
Bri::Mall.
|
61
|
-
Bri::Mall.
|
62
|
+
( Bri::Mall.classes +
|
63
|
+
Bri::Mall.instance_methods +
|
64
|
+
Bri::Mall.class_methods ).sort.join( "\n" )
|
62
65
|
end
|
63
66
|
|
64
67
|
end
|
metadata
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0.pre.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sven Riedel
|
8
|
+
autorequire:
|
8
9
|
bindir: bin
|
9
10
|
cert_chain: []
|
10
11
|
date: 2011-05-20 00:00:00.000000000 Z
|
@@ -29,28 +30,28 @@ dependencies:
|
|
29
30
|
requirements:
|
30
31
|
- - "~>"
|
31
32
|
- !ruby/object:Gem::Version
|
32
|
-
version: 6.
|
33
|
+
version: 6.1.1
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
36
|
version_requirements: !ruby/object:Gem::Requirement
|
36
37
|
requirements:
|
37
38
|
- - "~>"
|
38
39
|
- !ruby/object:Gem::Version
|
39
|
-
version: 6.
|
40
|
+
version: 6.1.1
|
40
41
|
- !ruby/object:Gem::Dependency
|
41
42
|
name: rspec
|
42
43
|
requirement: !ruby/object:Gem::Requirement
|
43
44
|
requirements:
|
44
45
|
- - "~>"
|
45
46
|
- !ruby/object:Gem::Version
|
46
|
-
version: 3.
|
47
|
+
version: 3.8.0
|
47
48
|
type: :development
|
48
49
|
prerelease: false
|
49
50
|
version_requirements: !ruby/object:Gem::Requirement
|
50
51
|
requirements:
|
51
52
|
- - "~>"
|
52
53
|
- !ruby/object:Gem::Version
|
53
|
-
version: 3.
|
54
|
+
version: 3.8.0
|
54
55
|
- !ruby/object:Gem::Dependency
|
55
56
|
name: rspec-its
|
56
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -99,6 +100,23 @@ files:
|
|
99
100
|
- lib/bri/match/method.rb
|
100
101
|
- lib/bri/matcher.rb
|
101
102
|
- lib/bri/renderer.rb
|
103
|
+
- lib/bri/renderer/blank_line.rb
|
104
|
+
- lib/bri/renderer/default.rb
|
105
|
+
- lib/bri/renderer/document.rb
|
106
|
+
- lib/bri/renderer/heading.rb
|
107
|
+
- lib/bri/renderer/list.rb
|
108
|
+
- lib/bri/renderer/list/base.rb
|
109
|
+
- lib/bri/renderer/list/bullet.rb
|
110
|
+
- lib/bri/renderer/list/labeled.rb
|
111
|
+
- lib/bri/renderer/list/lower_lettered.rb
|
112
|
+
- lib/bri/renderer/list/note.rb
|
113
|
+
- lib/bri/renderer/list/numbered.rb
|
114
|
+
- lib/bri/renderer/list/upper_lettered.rb
|
115
|
+
- lib/bri/renderer/list_item.rb
|
116
|
+
- lib/bri/renderer/paragraph.rb
|
117
|
+
- lib/bri/renderer/result.rb
|
118
|
+
- lib/bri/renderer/rule.rb
|
119
|
+
- lib/bri/renderer/verbatim.rb
|
102
120
|
- lib/bri/search.rb
|
103
121
|
- lib/bri/search/base.rb
|
104
122
|
- lib/bri/search/class.rb
|
@@ -106,20 +124,11 @@ files:
|
|
106
124
|
- lib/bri/search/instance_method.rb
|
107
125
|
- lib/bri/search/method.rb
|
108
126
|
- lib/bri/templates.rb
|
109
|
-
-
|
110
|
-
- spec/lib/bri/mall_spec.rb
|
111
|
-
- spec/lib/bri/match/class_spec.rb
|
112
|
-
- spec/lib/bri/match/method_spec.rb
|
113
|
-
- spec/lib/bri/matcher_spec.rb
|
114
|
-
- spec/lib/bri/renderer_spec.rb
|
115
|
-
- spec/lib/bri/search/class_method_spec.rb
|
116
|
-
- spec/lib/bri/search/class_spec.rb
|
117
|
-
- spec/lib/bri/search/instance_method_spec.rb
|
118
|
-
- spec/lib/bri/search/method_spec.rb
|
119
|
-
- spec/spec_helper.rb
|
127
|
+
- lib/bri/text_formatting_utils.rb
|
120
128
|
homepage: http://github.com/sriedel/bri
|
121
129
|
licenses: []
|
122
130
|
metadata: {}
|
131
|
+
post_install_message:
|
123
132
|
rdoc_options:
|
124
133
|
- "--charset=UTF-8"
|
125
134
|
require_paths:
|
@@ -135,7 +144,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
144
|
- !ruby/object:Gem::Version
|
136
145
|
version: '0'
|
137
146
|
requirements: []
|
138
|
-
rubygems_version: 3.
|
147
|
+
rubygems_version: 3.0.4
|
148
|
+
signing_key:
|
139
149
|
specification_version: 4
|
140
150
|
summary: Beautified RI in the spirit of fastri/qri. Unlike fastri, bri builds on top
|
141
151
|
of the rdoc 2.x/3.x backend, only output and formatting is handled by bri
|