bri 0.2.1 → 0.4.1
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 +7 -0
- data/Changelog +10 -0
- data/{README → README.rdoc} +2 -2
- data/TODO +4 -0
- data/lib/bri.rb +4 -4
- data/lib/bri/mall.rb +8 -12
- data/lib/bri/match/base.rb +1 -1
- data/lib/bri/match/class.rb +16 -16
- data/lib/bri/match/method.rb +3 -3
- data/lib/bri/renderer.rb +64 -41
- data/lib/bri/search/class.rb +1 -3
- data/lib/bri/search/class_method.rb +1 -0
- data/lib/bri/search/instance_method.rb +2 -1
- data/lib/bri/search/method.rb +10 -10
- data/lib/bri/templates.rb +16 -7
- data/spec/lib/bri/match/class_spec.rb +3 -3
- data/spec/lib/bri/match/method_spec.rb +2 -2
- data/spec/lib/bri/renderer_spec.rb +2 -2
- data/spec/lib/bri/search/class_method_spec.rb +13 -13
- data/spec/lib/bri/search/class_spec.rb +12 -13
- data/spec/lib/bri/search/instance_method_spec.rb +14 -14
- data/spec/spec_helper.rb +19 -4
- metadata +77 -32
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9c9a3a5911ab72b9546ab330dd5ee4513526deaecb4e508b818cef6f28b03283
|
4
|
+
data.tar.gz: 52dd0d1b13b6e74b54efebb4364ff56619776db6a8348f6ca8ab8aab67231fbf
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 548798d2184a8c2f6543d7164fafcee5ee2699ffee6547aa16a982387aea81307755c5b9bef95cf667b3d80614f3d2bf8f18a21fe727c14f593a1207f6163f02
|
7
|
+
data.tar.gz: 1836149121859a7d8b66a19dbbd5c0b18b536c3c4af440b6e7c1c5bac298fd40903ecd240a6cdb9bf46fb8f02914378bbf0ecb68fe024b030c0fc5d848496f3a
|
data/Changelog
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
0.4.1
|
2
|
+
- Modernize and refactor code
|
3
|
+
- Show extends of classes in rendered documentation
|
4
|
+
- Show superclass of classes in rendered documentation
|
5
|
+
|
6
|
+
0.4.0
|
7
|
+
- Update gems to their current versions
|
8
|
+
- Require ruby 2.6 or later
|
9
|
+
- Fix code and specs to work with current rspec and rdoc
|
10
|
+
|
1
11
|
0.2.1
|
2
12
|
- Show origin of class/method in description output
|
3
13
|
- Better textflow within paragraphs by ignoring the original newlines
|
data/{README → README.rdoc}
RENAMED
data/TODO
CHANGED
@@ -3,3 +3,7 @@
|
|
3
3
|
a line wrap occurs
|
4
4
|
- Refactor the convoluted rendering of lists and list items
|
5
5
|
- Detect ansi capabilities and use what is possible with graceful degradation?
|
6
|
+
- Potentially try to detect method references in documentation prose and
|
7
|
+
highlight these (e.g. Object#send and Object.new)
|
8
|
+
- Add display of in_files
|
9
|
+
- Add display of module constant aliases
|
data/lib/bri.rb
CHANGED
@@ -43,21 +43,21 @@ module Bri
|
|
43
43
|
elsif results.size == 1
|
44
44
|
results.first.to_s
|
45
45
|
else
|
46
|
-
qualified_methods = results.collect{ |result| result.full_name }.sort
|
47
46
|
ERB.new( Bri::Templates::MULTIPLE_CHOICES, nil, '<>' ).result( binding )
|
48
47
|
end
|
49
48
|
end
|
50
49
|
|
51
50
|
def self.width
|
52
|
-
return
|
51
|
+
return @width if instance_variable_defined?( :@width )
|
52
|
+
|
53
53
|
base_width = ENV['COLUMNS'].to_i
|
54
54
|
base_width = 80 if base_width == 0
|
55
55
|
|
56
|
-
|
56
|
+
@width ||= [ base_width - 8, 1 ].max
|
57
57
|
end
|
58
58
|
|
59
59
|
def self.width=( width )
|
60
|
-
|
60
|
+
@width = [ width, 1 ].max
|
61
61
|
end
|
62
62
|
|
63
63
|
def self.list_classes
|
data/lib/bri/mall.rb
CHANGED
@@ -9,35 +9,31 @@ module Bri
|
|
9
9
|
attr_reader :stores
|
10
10
|
|
11
11
|
def classes
|
12
|
-
|
12
|
+
stores.flat_map(&:module_names).uniq.sort
|
13
13
|
end
|
14
14
|
|
15
15
|
def class_methods
|
16
|
-
|
16
|
+
stores.flat_map do |store|
|
17
17
|
store.class_methods.map do |klass, methods|
|
18
18
|
methods.map { |method| "#{klass}.#{method}" }
|
19
19
|
end
|
20
|
-
end.
|
20
|
+
end.uniq
|
21
21
|
end
|
22
22
|
|
23
23
|
def instance_methods
|
24
|
-
|
24
|
+
stores.flat_map do |store|
|
25
25
|
store.instance_methods.map do |klass, methods|
|
26
26
|
methods.map { |method| "#{klass}##{method}" }
|
27
27
|
end
|
28
|
-
end.
|
28
|
+
end.uniq
|
29
29
|
end
|
30
30
|
|
31
31
|
private
|
32
32
|
def initialize
|
33
|
-
@stores = []
|
34
|
-
|
35
33
|
# We want: system, site, home and gem documentation
|
36
|
-
RDoc::RI::Paths.each( true, true, true, true ) do |path, type|
|
37
|
-
|
38
|
-
|
39
|
-
end
|
34
|
+
@stores = RDoc::RI::Paths.each( true, true, true, true ).each_with_object( [] ) do |(path, type), stores|
|
35
|
+
stores << RDoc::Store.new( path, type ).tap { |store| store.load_cache }
|
36
|
+
end
|
40
37
|
end
|
41
|
-
|
42
38
|
end
|
43
39
|
end
|
data/lib/bri/match/base.rb
CHANGED
data/lib/bri/match/class.rb
CHANGED
@@ -7,28 +7,28 @@ module Bri
|
|
7
7
|
include Bri::Templates::Helpers
|
8
8
|
TEMPLATE = Bri::Templates::CLASS_DESCRIPTION
|
9
9
|
|
10
|
-
attr_reader :type, :name, :description_paragraphs
|
11
|
-
|
12
|
-
|
10
|
+
attr_reader :type, :name, :description_paragraphs,
|
11
|
+
:includes, :extends, :constants, :class_methods,
|
12
|
+
:instance_methods, :attributes, :origin
|
13
13
|
|
14
14
|
def initialize( rdoc_result, store = nil )
|
15
|
-
@type = rdoc_result.type
|
16
|
-
@name = rdoc_result.full_name
|
17
|
-
@description_paragraphs = build_description( rdoc_result.comment.parts )
|
18
|
-
@includes = rdoc_result.includes.collect { |i| i.full_name }
|
19
|
-
@constants = rdoc_result.constants.collect do |c|
|
20
|
-
c.value ? "#{c.name} = #{c.value}" : c.name
|
21
|
-
end
|
22
|
-
@attributes = rdoc_result.attributes.collect { |a| "#{a.name} (#{a.rw})" }
|
23
|
-
|
24
15
|
class_methods, instance_methods = rdoc_result.method_list.
|
25
16
|
select {|m| m.visibility == :public }.
|
26
17
|
partition { |m| m.singleton }
|
27
|
-
@
|
28
|
-
@
|
29
|
-
@
|
18
|
+
@type = rdoc_result.type
|
19
|
+
@name = "#{rdoc_result.full_name}"
|
20
|
+
@name << " < #{rdoc_result.superclass}" if @type == "class" && rdoc_result.superclass
|
21
|
+
@description_paragraphs = build_description( rdoc_result.comment.parts )
|
22
|
+
@includes = rdoc_result.includes.map(&:full_name)
|
23
|
+
@extends = rdoc_result.extends.map(&:full_name)
|
24
|
+
@attributes = rdoc_result.attributes.map { |a| "#{a.name} (#{a.rw})" }
|
25
|
+
@class_methods = class_methods.map(&:name)
|
26
|
+
@instance_methods = instance_methods.map(&:name)
|
27
|
+
@origin = store&.friendly_path
|
28
|
+
@constants = rdoc_result.constants.map do |c|
|
29
|
+
c.value ? "#{c.name} = #{c.value}" : c.name
|
30
|
+
end
|
30
31
|
end
|
31
|
-
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
data/lib/bri/match/method.rb
CHANGED
@@ -8,11 +8,11 @@ module Bri
|
|
8
8
|
|
9
9
|
def initialize( rdoc_method, store = nil )
|
10
10
|
@full_name = rdoc_method.full_name
|
11
|
-
@call_syntaxes = rdoc_method.arglists.
|
12
|
-
map { |e| " "
|
11
|
+
@call_syntaxes = rdoc_method.arglists.lines( chomp: true ).
|
12
|
+
map { |e| e.prepend( " " ) }.
|
13
13
|
join( "\n" ) + "\n" rescue ''
|
14
14
|
@description_paragraphs = build_description( rdoc_method.comment.parts )
|
15
|
-
@origin = store
|
15
|
+
@origin = store&.friendly_path
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
data/lib/bri/renderer.rb
CHANGED
@@ -3,48 +3,52 @@ require 'strscan'
|
|
3
3
|
module Bri
|
4
4
|
module Renderer
|
5
5
|
INDENT = ' ' * 2
|
6
|
-
|
6
|
+
INDENT_WIDTH = 2
|
7
|
+
LOWER_ALPHABET = ('a'..'z').to_a.map { |char| "#{char}." }.freeze
|
8
|
+
UPPER_ALPHABET = ('A'..'Z').to_a.map { |char| "#{char}." }.freeze
|
7
9
|
|
8
10
|
def self.render( element, width = Bri.width, alignment_width = 0 )
|
9
|
-
# STDERR.puts "Rendering #{element.inspect}"
|
10
11
|
case element
|
11
12
|
when RDoc::Markup::Verbatim
|
12
13
|
text = extract_text( element, width )
|
13
14
|
styled_text = replace_markup( text )
|
14
|
-
indent( styled_text )
|
15
|
+
"#{indent( styled_text )}\n"
|
15
16
|
|
16
17
|
when RDoc::Markup::List
|
17
|
-
item_width = width -
|
18
|
+
item_width = width - INDENT_WIDTH
|
18
19
|
case element.type
|
19
20
|
when :BULLET
|
20
|
-
rendered_items = element.items.
|
21
|
+
rendered_items = element.items.map { |item| render( item, item_width ) }
|
21
22
|
rendered_items.map! { |item| item.gsub( /\n/, "\n#{INDENT}" ) }
|
22
|
-
rendered_items.map! { |item| ' *'
|
23
|
+
rendered_items.map! { |item| item.prepend( ' *' ) }
|
23
24
|
|
24
25
|
when :NUMBER
|
25
|
-
|
26
|
-
rendered_items = element.items.collect { |item| render item, item_width }
|
26
|
+
rendered_items = element.items.map { |item| render( item, item_width ) }
|
27
27
|
rendered_items.map! { |item| item.gsub( /\n/, "\n#{INDENT}" ) }
|
28
|
-
rendered_items.map
|
28
|
+
rendered_items.map!.with_index( 1 ) { |item, i| item.prepend( "#{i}." ) }
|
29
29
|
|
30
30
|
when :LALPHA
|
31
|
-
|
32
|
-
rendered_items = element.items.collect { |item| render item, item_width }
|
31
|
+
rendered_items = element.items.map { |item| render( item, item_width ) }
|
33
32
|
rendered_items.map! { |item| item.gsub( /\n/, "\n#{INDENT}" ) }
|
34
|
-
rendered_items.map
|
33
|
+
rendered_items.map!.with_index { |item, i| item.prepend( LOWER_ALPHABET[i] ) }
|
34
|
+
|
35
|
+
when :UALPHA
|
36
|
+
rendered_items = element.items.map { |item| render( item, item_width ) }
|
37
|
+
rendered_items.map! { |item| item.gsub( /\n/, "\n#{INDENT}" ) }
|
38
|
+
rendered_items.map!.with_index { |item, index| item.prepend( UPPER_ALPHABET[i] ) }
|
35
39
|
|
36
40
|
when :LABEL
|
37
41
|
# do nothing
|
38
|
-
rendered_items = element.items.
|
42
|
+
rendered_items = element.items.map { |item| render( item, item_width ) }
|
39
43
|
rendered_items.map! { |item| item.gsub( /\n/, "\n#{INDENT}" ) }
|
40
44
|
|
41
45
|
when :NOTE
|
42
|
-
alignment_width = element.items.
|
43
|
-
rendered_items = element.items.
|
46
|
+
alignment_width = element.items.flat_map(&:label).map(&:size).max + 1
|
47
|
+
rendered_items = element.items.map { |item| render( item, item_width, alignment_width ) }
|
44
48
|
rendered_items.map! { |item| item.gsub( /\n/, "\n#{INDENT}" ) }
|
45
49
|
end
|
46
50
|
|
47
|
-
rendered_items.join( "\n\n" )
|
51
|
+
"#{rendered_items.join( "\n\n" )}\n"
|
48
52
|
|
49
53
|
else
|
50
54
|
text = extract_text( element, width, alignment_width )
|
@@ -56,64 +60,81 @@ module Bri
|
|
56
60
|
|
57
61
|
def self.extract_text( element, width, label_alignment_width = 0, conserve_newlines = false )
|
58
62
|
text = case element
|
59
|
-
when RDoc::Markup::Paragraph
|
63
|
+
when RDoc::Markup::Paragraph
|
60
64
|
join_char = conserve_newlines ? "\n" : " "
|
61
|
-
element.parts.join( join_char )
|
65
|
+
element.parts.map(&:strip).join( join_char )
|
66
|
+
|
62
67
|
when RDoc::Markup::BlankLine
|
63
68
|
""
|
69
|
+
|
64
70
|
when RDoc::Markup::Rule
|
65
71
|
"-" * width
|
72
|
+
|
66
73
|
when RDoc::Markup::Verbatim
|
67
|
-
element.
|
74
|
+
element.parts.map { |part| part.prepend( " " ) }.join
|
75
|
+
|
68
76
|
when RDoc::Markup::Heading
|
69
77
|
"<h>#{element.text}</h>"
|
78
|
+
|
70
79
|
when RDoc::Markup::ListItem
|
71
|
-
parts = element.parts.
|
72
|
-
|
80
|
+
parts = element.parts.map { |part| extract_text( part, width, 0, true ) }.join
|
81
|
+
|
82
|
+
if element.label
|
83
|
+
labels = element.label.map { |l| "#{l}:" }.join("\n")
|
84
|
+
sprintf( "%*s %s", -label_alignment_width, labels, parts )
|
85
|
+
else
|
86
|
+
parts
|
87
|
+
end
|
88
|
+
|
73
89
|
when RDoc::Markup::List
|
74
|
-
render( element, width -
|
90
|
+
render( element, width - INDENT_WIDTH )
|
91
|
+
|
92
|
+
when RDoc::Markup::Document
|
93
|
+
element.parts.
|
94
|
+
map { |part| extract_text( part, width, label_alignment_width, conserve_newlines ) }.
|
95
|
+
join
|
75
96
|
else
|
76
97
|
raise "Don't know how to handle type #{element.class}: #{element.inspect}"
|
77
98
|
end
|
78
|
-
text
|
99
|
+
text << "\n"
|
79
100
|
end
|
80
101
|
|
81
102
|
def self.replace_markup( text )
|
82
|
-
text.gsub!( /(?<!\\)<(?:tt|code)>/, Term::ANSIColor
|
83
|
-
text.gsub!( /(?<!\\)<\/(?:tt|code)>/, Term::ANSIColor
|
103
|
+
text.gsub!( /(?<!\\)<(?:tt|code)>/, Term::ANSIColor.cyan )
|
104
|
+
text.gsub!( /(?<!\\)<\/(?:tt|code)>/, Term::ANSIColor.reset )
|
84
105
|
|
85
|
-
text.gsub!( /(?<!\\)<b>/, Term::ANSIColor
|
86
|
-
text.gsub!( /(?<!\\)<\/b>/, Term::ANSIColor
|
106
|
+
text.gsub!( /(?<!\\)<b>/, Term::ANSIColor.bold )
|
107
|
+
text.gsub!( /(?<!\\)<\/b>/, Term::ANSIColor.reset )
|
87
108
|
|
88
|
-
text.gsub!( /(?<!\\)<(?:em|i)>/, Term::ANSIColor
|
89
|
-
text.gsub!( /(?<!\\)<\/(?:em|i)>/, Term::ANSIColor
|
109
|
+
text.gsub!( /(?<!\\)<(?:em|i)>/, Term::ANSIColor.yellow )
|
110
|
+
text.gsub!( /(?<!\\)<\/(?:em|i)>/, Term::ANSIColor.reset )
|
90
111
|
|
91
|
-
text.gsub!( "<h>", Term::ANSIColor
|
92
|
-
text.gsub!( "</h>", Term::ANSIColor
|
112
|
+
text.gsub!( "<h>", Term::ANSIColor.green )
|
113
|
+
text.gsub!( "</h>", Term::ANSIColor.reset )
|
93
114
|
|
94
115
|
text.gsub!( "\\<", "<" )
|
95
116
|
|
96
117
|
text.gsub!( /(^|\s)\*(.*?[a-zA-Z0-9]+.*?)\*/,
|
97
|
-
"\\1#{Term::ANSIColor
|
118
|
+
"\\1#{Term::ANSIColor.bold}\\2#{Term::ANSIColor.reset}" )
|
98
119
|
text.gsub!( /(^|\s)\+(.*?[a-zA-Z0-9]+.*?)\+/,
|
99
|
-
"\\1#{Term::ANSIColor
|
120
|
+
"\\1#{Term::ANSIColor.cyan}\\2#{Term::ANSIColor.reset}" )
|
100
121
|
text.gsub!( /(^|\s)_(.*?[a-zA-Z0-9]+.*?)_/,
|
101
|
-
"\\1#{Term::ANSIColor
|
122
|
+
"\\1#{Term::ANSIColor.yellow}\\2#{Term::ANSIColor.reset}" )
|
102
123
|
|
103
124
|
text.gsub!( %r{\b((?:https?|ftp)://[-\w.?%&=/]+)\b},
|
104
|
-
"#{Term::ANSIColor
|
125
|
+
"#{Term::ANSIColor.underline}\\1#{Term::ANSIColor.reset}" )
|
105
126
|
|
106
127
|
text.gsub!( %r{\b(mailto:[-\w.%]+@[-\w.]+)\b},
|
107
|
-
"#{Term::ANSIColor
|
128
|
+
"#{Term::ANSIColor.underline}\\1#{Term::ANSIColor.reset}" )
|
108
129
|
|
109
130
|
text.gsub!( %r{\b((?<!:\/\/)www.[-\w.?%&=]+)\b},
|
110
|
-
"#{Term::ANSIColor
|
131
|
+
"#{Term::ANSIColor.underline}\\1#{Term::ANSIColor.reset}" )
|
111
132
|
|
112
133
|
text.gsub!( %r{\blink:(.*?)(\s|$)},
|
113
|
-
"#{Term::ANSIColor
|
134
|
+
"#{Term::ANSIColor.underline}\\1#{Term::ANSIColor.reset}\\2" )
|
114
135
|
|
115
136
|
text.gsub!( %r{\{(.*?)\}\[(.*?)\]}, "\\1 (\\2)" )
|
116
|
-
text.gsub!( %r{\[(#{Regexp.escape( Term::ANSIColor
|
137
|
+
text.gsub!( %r{\[(#{Regexp.escape( Term::ANSIColor.underline )}.*?#{Regexp.escape( Term::ANSIColor.reset )})\]},
|
117
138
|
" (\\1)" )
|
118
139
|
text
|
119
140
|
end
|
@@ -127,7 +148,7 @@ module Bri
|
|
127
148
|
end
|
128
149
|
|
129
150
|
def self.wrap_to_width( styled_text, width )
|
130
|
-
styled_text.split( "\n" ).
|
151
|
+
styled_text.split( "\n" ).map { |row| wrap_row( row, width ) }.join
|
131
152
|
end
|
132
153
|
|
133
154
|
def self.wrap_row( physical_row, width )
|
@@ -146,6 +167,7 @@ module Bri
|
|
146
167
|
logical_row = ''
|
147
168
|
printable_row_length = 0
|
148
169
|
end
|
170
|
+
|
149
171
|
logical_row << token
|
150
172
|
printable_row_length += printable_token_length
|
151
173
|
|
@@ -153,11 +175,12 @@ module Bri
|
|
153
175
|
logical_row << token
|
154
176
|
printable_row_length += token.length
|
155
177
|
end
|
178
|
+
|
156
179
|
output_text << logical_row << "\n"
|
157
180
|
end
|
158
181
|
|
159
182
|
def self.indent( text )
|
160
|
-
text.split( "\n" ).
|
183
|
+
text.split( "\n" ).map { |row| "#{INDENT}#{row}" }.join("\n" )
|
161
184
|
end
|
162
185
|
end
|
163
186
|
end
|
data/lib/bri/search/class.rb
CHANGED
@@ -1,14 +1,12 @@
|
|
1
1
|
module Bri
|
2
2
|
module Search
|
3
3
|
class Class < Base
|
4
|
-
|
5
4
|
def search( type = :fully_qualified )
|
6
5
|
# NOTE: classes are only searched as fully qualified for the time being
|
7
6
|
# FIXME: What do we do if more than one store defines the same class?
|
8
|
-
store = Bri::Mall.instance.stores.detect { |s| s.
|
7
|
+
store = Bri::Mall.instance.stores.detect { |s| s.module_names.include?( @term ) }
|
9
8
|
@matches << Bri::Match::Class.new( store.load_class( @term ), store ) if store
|
10
9
|
end
|
11
|
-
|
12
10
|
end
|
13
11
|
end
|
14
12
|
end
|
data/lib/bri/search/method.rb
CHANGED
@@ -7,11 +7,11 @@ module Bri
|
|
7
7
|
super
|
8
8
|
@class_term, @method_term = term.split( /[\.#]/, 2 )
|
9
9
|
|
10
|
-
if @class_term !~ /^[A-Z]/ &&
|
10
|
+
if @class_term !~ /^[A-Z]/ && !@method_term
|
11
11
|
@method_term, @class_term = @class_term, @method_term
|
12
12
|
end
|
13
13
|
|
14
|
-
@class_term = nil if @class_term
|
14
|
+
@class_term = nil if @class_term&.empty?
|
15
15
|
end
|
16
16
|
|
17
17
|
def search( type = :fully_qualified )
|
@@ -38,17 +38,18 @@ module Bri
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def classes_with_method( store, method )
|
41
|
-
store_methods( store ).select
|
41
|
+
store_methods( store ).select do |_klass, methods|
|
42
|
+
methods.include?( method )
|
43
|
+
end.keys
|
42
44
|
end
|
43
45
|
|
44
46
|
def candidates_from_method_re( store, method_re )
|
45
|
-
|
46
|
-
store_methods( store ).each do |klass, methods|
|
47
|
+
store_methods( store ).each_with_object( {} ) do |(klass, methods), candidates|
|
47
48
|
matching_methods = methods.grep( method_re )
|
48
49
|
next if matching_methods.empty?
|
50
|
+
|
49
51
|
candidates[klass] = matching_methods
|
50
52
|
end
|
51
|
-
candidates
|
52
53
|
end
|
53
54
|
|
54
55
|
|
@@ -64,9 +65,9 @@ module Bri
|
|
64
65
|
end
|
65
66
|
|
66
67
|
def unqualified_search
|
67
|
-
[ /^#{Regexp.escape @method_term}$/,
|
68
|
-
/^#{Regexp.escape @method_term}/,
|
69
|
-
/#{Regexp.escape @method_term}/ ].each do |method_re|
|
68
|
+
[ /^#{Regexp.escape( @method_term )}$/,
|
69
|
+
/^#{Regexp.escape( @method_term )}/,
|
70
|
+
/#{Regexp.escape( @method_term )}/ ].each do |method_re|
|
70
71
|
unqualified_search_worker( method_re )
|
71
72
|
break unless @matches.empty?
|
72
73
|
end
|
@@ -84,7 +85,6 @@ module Bri
|
|
84
85
|
end
|
85
86
|
end
|
86
87
|
end
|
87
|
-
|
88
88
|
end
|
89
89
|
end
|
90
90
|
end
|
data/lib/bri/templates.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
module Bri
|
2
2
|
module Templates
|
3
|
+
RULE_CHARACTER = '-'.freeze
|
4
|
+
|
3
5
|
MULTIPLE_CHOICES =<<-EOT
|
4
6
|
<%= Bri::Templates::Helpers.hrule( "Multiple choices:" ) %>
|
5
7
|
|
@@ -25,6 +27,12 @@ module Bri
|
|
25
27
|
<%= Bri::Renderer.wrap_list( includes.sort ) %>
|
26
28
|
|
27
29
|
|
30
|
+
<% end %>
|
31
|
+
<% if !extends.empty? %>
|
32
|
+
<%= section_header( "Extends:" ) %>
|
33
|
+
<%= Bri::Renderer.wrap_list( extends.sort ) %>
|
34
|
+
|
35
|
+
|
28
36
|
<% end %>
|
29
37
|
<% if !constants.empty? %>
|
30
38
|
<%= section_header( "Constants:" ) %>
|
@@ -68,12 +76,13 @@ module Bri
|
|
68
76
|
|
69
77
|
module Helpers
|
70
78
|
def hrule( text = '', width = Bri.width )
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
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"
|
77
86
|
end
|
78
87
|
module_function :hrule
|
79
88
|
|
@@ -83,7 +92,7 @@ module Bri
|
|
83
92
|
end
|
84
93
|
|
85
94
|
def section_header( text )
|
86
|
-
Term::ANSIColor
|
95
|
+
"#{Term::ANSIColor.green}#{Term::ANSIColor.underline}#{text}#{Term::ANSIColor.reset}\n"
|
87
96
|
end
|
88
97
|
module_function :section_header
|
89
98
|
end
|
@@ -37,17 +37,17 @@ describe Bri::Match::Class do
|
|
37
37
|
|
38
38
|
describe "#name" do
|
39
39
|
it "should contain the name of a class" do
|
40
|
-
empty_class.name.should == "BriDummySpecClassEmpty"
|
40
|
+
empty_class.name.should == "BriDummySpecClassEmpty < Object"
|
41
41
|
end
|
42
42
|
|
43
43
|
it "should contain the fully qualified name of a namespaced class" do
|
44
|
-
namespaced_class.name.should == "BriDummySpec::Class"
|
44
|
+
namespaced_class.name.should == "BriDummySpec::Class < Object"
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
48
|
describe "#description_paragraphs" do
|
49
49
|
it "should be empty for an undocumented class" do
|
50
|
-
empty_class.description_paragraphs.should
|
50
|
+
empty_class.description_paragraphs.should == [ '' ]
|
51
51
|
end
|
52
52
|
|
53
53
|
it "should contain rendered text for a documented class" do
|
@@ -6,11 +6,11 @@ describe Bri::Match::Method do
|
|
6
6
|
end
|
7
7
|
|
8
8
|
let( :fake_description ) do
|
9
|
-
|
9
|
+
double( RDoc::Markup::Document, :parts => [ fake_paragraph ] )
|
10
10
|
end
|
11
11
|
|
12
12
|
let( :rdoc_method ) do
|
13
|
-
|
13
|
+
double( RDoc::AnyMethod, :full_name => "This::IS::My.full_name",
|
14
14
|
:arglists => "First\nSecond\nThird",
|
15
15
|
:comment => fake_description )
|
16
16
|
end
|
@@ -75,14 +75,14 @@ describe Bri::Renderer do
|
|
75
75
|
end
|
76
76
|
|
77
77
|
it "should start second lines of a list item with the same left alignment as the first list items content" do
|
78
|
-
subject.should =~ /\n \* First item in a bulleted list\n With a second line\n/
|
78
|
+
subject.should =~ /\n \* First item in a bulleted list(?:\s*?)\n With a second line\n/
|
79
79
|
end
|
80
80
|
|
81
81
|
context "contained verbatim text" do
|
82
82
|
subject { render_description_for_method( "list_containing_verbatim_text" ) }
|
83
83
|
|
84
84
|
it "should correctly display verbatim text" do
|
85
|
-
subject.should =~ /\n
|
85
|
+
subject.should =~ /\n Containing verbatim text\n/
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
@@ -3,26 +3,26 @@ require 'spec_helper'
|
|
3
3
|
describe Bri::Search::ClassMethod do
|
4
4
|
context "the searches" do
|
5
5
|
let( :paragraph ) { RDoc::Markup::Paragraph.new( "Foo Description" ) }
|
6
|
-
let( :document ) {
|
7
|
-
let( :rdoc_method ) {
|
6
|
+
let( :document ) { double( RDoc::Markup::Document, :parts => [ paragraph ] ) }
|
7
|
+
let( :rdoc_method ) { double( RDoc::AnyMethod, :full_name => "Foo",
|
8
8
|
:arglists => "",
|
9
9
|
:comment => document ) }
|
10
10
|
before( :each ) do
|
11
|
-
store_one =
|
11
|
+
store_one = double( RDoc::RI::Store, :load_cache => true,
|
12
12
|
:load_class => true,
|
13
13
|
:load_method => rdoc_method,
|
14
14
|
:friendly_path => "ruby core",
|
15
15
|
:modules => %w{ ClassThree },
|
16
16
|
:class_methods => { "ClassThree" => [ "method" ] } )
|
17
|
-
store_two =
|
17
|
+
store_two = double( RDoc::RI::Store, :load_cache => true,
|
18
18
|
:load_class => true,
|
19
19
|
:load_method => rdoc_method,
|
20
20
|
:friendly_path => "ruby core",
|
21
21
|
:modules => %w{ ClassOne ClassTwo },
|
22
22
|
:class_methods => { "ClassOne" => [ "method" ],
|
23
23
|
"ClassTwo" => [ "method", "my_other_method" ] } )
|
24
|
-
Bri::Mall.instance.
|
25
|
-
Bri::Match::Class.
|
24
|
+
allow(Bri::Mall.instance).to receive( :stores ).and_return( [ store_one, store_two ] )
|
25
|
+
allow(Bri::Match::Class).to receive( :new ).and_return( double( Bri::Match::Class ) )
|
26
26
|
end
|
27
27
|
|
28
28
|
describe "a fully qualified search" do
|
@@ -124,7 +124,7 @@ describe Bri::Search::ClassMethod do
|
|
124
124
|
search_instance = Bri::Search::ClassMethod.new( ".bri_dummy_spec_singleton_method" )
|
125
125
|
search_instance.search( :partially_qualified )
|
126
126
|
search_instance.matches.should_not be_empty
|
127
|
-
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass::bri_dummy_spec_singleton_method" }.should
|
127
|
+
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass::bri_dummy_spec_singleton_method" }.should be(true)
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
@@ -133,8 +133,8 @@ describe Bri::Search::ClassMethod do
|
|
133
133
|
search_instance = Bri::Search::ClassMethod.new( ".bri_dummy_spec_second_singleton_method" )
|
134
134
|
search_instance.search( :partially_qualified )
|
135
135
|
search_instance.matches.should_not be_empty
|
136
|
-
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass::bri_dummy_spec_second_singleton_method" }.should
|
137
|
-
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClassTwo::bri_dummy_spec_second_singleton_method" }.should
|
136
|
+
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass::bri_dummy_spec_second_singleton_method" }.should be(true)
|
137
|
+
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClassTwo::bri_dummy_spec_second_singleton_method" }.should be(true)
|
138
138
|
end
|
139
139
|
end
|
140
140
|
end
|
@@ -153,7 +153,7 @@ describe Bri::Search::ClassMethod do
|
|
153
153
|
search_instance = Bri::Search::ClassMethod.new( "bri_dummy_spec_singleton_method" )
|
154
154
|
search_instance.search( :unqualified )
|
155
155
|
search_instance.matches.should_not be_empty
|
156
|
-
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass::bri_dummy_spec_singleton_method" }.should
|
156
|
+
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass::bri_dummy_spec_singleton_method" }.should be(true)
|
157
157
|
end
|
158
158
|
end
|
159
159
|
|
@@ -162,9 +162,9 @@ describe Bri::Search::ClassMethod do
|
|
162
162
|
search_instance = Bri::Search::ClassMethod.new( "bri_dummy_spec" )
|
163
163
|
search_instance.search( :unqualified )
|
164
164
|
search_instance.matches.should_not be_empty
|
165
|
-
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass::bri_dummy_spec_singleton_method" }.should
|
166
|
-
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass::bri_dummy_spec_second_singleton_method" }.should
|
167
|
-
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClassTwo::bri_dummy_spec_second_singleton_method" }.should
|
165
|
+
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass::bri_dummy_spec_singleton_method" }.should be(true)
|
166
|
+
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass::bri_dummy_spec_second_singleton_method" }.should be(true)
|
167
|
+
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClassTwo::bri_dummy_spec_second_singleton_method" }.should be(true)
|
168
168
|
end
|
169
169
|
end
|
170
170
|
end
|
@@ -13,16 +13,16 @@ describe Bri::Search::Class do
|
|
13
13
|
describe "#search" do
|
14
14
|
context "basic functionality" do
|
15
15
|
before( :each ) do
|
16
|
-
store_one =
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
store_two =
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
Bri::Mall.instance.
|
25
|
-
Bri::Match::Class.
|
16
|
+
store_one = double( RDoc::Store, :load_cache => true,
|
17
|
+
:load_class => true,
|
18
|
+
:friendly_path => "ruby core",
|
19
|
+
:module_names => %w{ ClassThree } )
|
20
|
+
store_two = double( RDoc::Store, :load_cache => true,
|
21
|
+
:load_class => true,
|
22
|
+
:friendly_path => "ruby core",
|
23
|
+
:module_names => %w{ ClassOne ClassTwo } )
|
24
|
+
allow(Bri::Mall.instance).to receive( :stores ).and_return( [ store_one, store_two ] )
|
25
|
+
allow(Bri::Match::Class).to receive( :new ).and_return( double( Bri::Match::Class ) )
|
26
26
|
end
|
27
27
|
|
28
28
|
context "if there are no matching modules in any store" do
|
@@ -49,7 +49,7 @@ describe Bri::Search::Class do
|
|
49
49
|
it "should have matches" do
|
50
50
|
subject.search
|
51
51
|
subject.matches.should_not be_empty
|
52
|
-
subject.matches.any?{ |match| match.name == "BriDummySpecClass" }.should
|
52
|
+
subject.matches.any?{ |match| match.name == "BriDummySpecClass < Object" }.should be(true)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -58,10 +58,9 @@ describe Bri::Search::Class do
|
|
58
58
|
|
59
59
|
it "should not have any matches" do
|
60
60
|
subject.search
|
61
|
-
subject.matches.any? { |match| match.name == "IAmQuiteCertainIDontExist" }.should
|
61
|
+
subject.matches.any? { |match| match.name == "IAmQuiteCertainIDontExist" }.should be(false)
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
65
|
-
|
66
65
|
end
|
67
66
|
end
|
@@ -3,26 +3,26 @@ require 'spec_helper'
|
|
3
3
|
describe Bri::Search::InstanceMethod do
|
4
4
|
context "the searches" do
|
5
5
|
let( :paragraph ) { RDoc::Markup::Paragraph.new( "Foo Description" ) }
|
6
|
-
let( :document ) {
|
7
|
-
let( :rdoc_method ) {
|
6
|
+
let( :document ) { double( RDoc::Markup::Document, :parts => [ paragraph ] ) }
|
7
|
+
let( :rdoc_method ) { double( RDoc::AnyMethod, :full_name => "Foo",
|
8
8
|
:arglists => "",
|
9
9
|
:comment => document ) }
|
10
10
|
before( :each ) do
|
11
|
-
store_one =
|
11
|
+
store_one = double( RDoc::RI::Store, :load_cache => true,
|
12
12
|
:load_class => true,
|
13
13
|
:load_method => rdoc_method,
|
14
14
|
:friendly_path => "ruby core",
|
15
15
|
:modules => %w{ ClassThree },
|
16
16
|
:instance_methods => { "ClassThree" => [ "method" ] } )
|
17
|
-
store_two =
|
17
|
+
store_two = double( RDoc::RI::Store, :load_cache => true,
|
18
18
|
:load_class => true,
|
19
19
|
:load_method => rdoc_method,
|
20
20
|
:friendly_path => "ruby core",
|
21
21
|
:modules => %w{ ClassOne ClassTwo },
|
22
22
|
:instance_methods => { "ClassOne" => [ "method" ],
|
23
23
|
"ClassTwo" => [ "method", "my_other_method" ] } )
|
24
|
-
Bri::Mall.instance.
|
25
|
-
Bri::Match::Class.
|
24
|
+
allow(Bri::Mall.instance).to receive(:stores).and_return( [ store_one, store_two ] )
|
25
|
+
allow(Bri::Match::Class).to receive( :new ).and_return( double( Bri::Match::Class ) )
|
26
26
|
end
|
27
27
|
|
28
28
|
describe "a fully qualified search" do
|
@@ -124,7 +124,7 @@ describe Bri::Search::InstanceMethod do
|
|
124
124
|
search_instance = Bri::Search::InstanceMethod.new( "#bri_dummy_spec_instance_method" )
|
125
125
|
search_instance.search( :partially_qualified )
|
126
126
|
search_instance.matches.should_not be_empty
|
127
|
-
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass#bri_dummy_spec_instance_method" }.should
|
127
|
+
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass#bri_dummy_spec_instance_method" }.should be(true)
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
@@ -133,8 +133,8 @@ describe Bri::Search::InstanceMethod do
|
|
133
133
|
search_instance = Bri::Search::InstanceMethod.new( "#bri_dummy_spec_instance_method_with_arguments" )
|
134
134
|
search_instance.search( :partially_qualified )
|
135
135
|
search_instance.matches.should_not be_empty
|
136
|
-
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass#bri_dummy_spec_instance_method_with_arguments" }.should
|
137
|
-
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClassTwo#bri_dummy_spec_instance_method_with_arguments" }.should
|
136
|
+
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass#bri_dummy_spec_instance_method_with_arguments" }.should be(true)
|
137
|
+
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClassTwo#bri_dummy_spec_instance_method_with_arguments" }.should be(true)
|
138
138
|
end
|
139
139
|
end
|
140
140
|
end
|
@@ -153,7 +153,7 @@ describe Bri::Search::InstanceMethod do
|
|
153
153
|
search_instance = Bri::Search::InstanceMethod.new( "bri_dummy_spec_instance_method" )
|
154
154
|
search_instance.search( :unqualified )
|
155
155
|
search_instance.matches.should_not be_empty
|
156
|
-
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass#bri_dummy_spec_instance_method" }.should
|
156
|
+
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass#bri_dummy_spec_instance_method" }.should be(true)
|
157
157
|
end
|
158
158
|
end
|
159
159
|
|
@@ -162,10 +162,10 @@ describe Bri::Search::InstanceMethod do
|
|
162
162
|
search_instance = Bri::Search::InstanceMethod.new( "bri_dummy_spec" )
|
163
163
|
search_instance.search( :unqualified )
|
164
164
|
search_instance.matches.should_not be_empty
|
165
|
-
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass#bri_dummy_spec_instance_method" }.should
|
166
|
-
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass#bri_dummy_spec_instance_method_with_arguments" }.should
|
167
|
-
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClassTwo#bri_dummy_spec_instance_method_with_arguments" }.should
|
168
|
-
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass#bri_dummy_spec_instance_method_with_default_arguments" }.should
|
165
|
+
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass#bri_dummy_spec_instance_method" }.should be(true)
|
166
|
+
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass#bri_dummy_spec_instance_method_with_arguments" }.should be(true)
|
167
|
+
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClassTwo#bri_dummy_spec_instance_method_with_arguments" }.should be(true)
|
168
|
+
search_instance.matches.any? { |match| match.full_name == "BriDummySpecClass#bri_dummy_spec_instance_method_with_default_arguments" }.should be(true)
|
169
169
|
end
|
170
170
|
end
|
171
171
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,22 @@
|
|
1
|
-
|
2
|
-
require
|
1
|
+
require 'rspec/its'
|
2
|
+
require 'byebug'
|
3
|
+
require_relative '../lib/bri'
|
4
|
+
|
5
|
+
RSpec.configure do |config|
|
6
|
+
config.mock_with :rspec do |mocks|
|
7
|
+
mocks.syntax = [ :should, :expect ]
|
8
|
+
end
|
9
|
+
|
10
|
+
config.expect_with :rspec do |expect|
|
11
|
+
expect.syntax = [ :should, :expect ]
|
12
|
+
end
|
13
|
+
|
14
|
+
config.order = :random
|
15
|
+
Kernel.srand config.seed
|
16
|
+
end
|
17
|
+
|
18
|
+
RSpec::Expectations.configuration.on_potential_false_positives = :nothing
|
3
19
|
|
4
20
|
puts "Regenerating ri document cache"
|
5
|
-
|
6
|
-
class_file = File.join( spec_root, 'bri_dummy_spec_class.rb' )
|
21
|
+
class_file = File.join( __dir__, 'bri_dummy_spec_class.rb' )
|
7
22
|
%x{rdoc --ri #{class_file}}
|
metadata
CHANGED
@@ -1,100 +1,145 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Sven Riedel
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2011-05-20 00:00:00.
|
11
|
+
date: 2011-05-20 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: term-ansicolor
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.
|
19
|
+
version: 1.7.1
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.7.1
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: rdoc
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- - ~>
|
31
|
+
- - "~>"
|
31
32
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
33
|
+
version: 6.1.1
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 6.1.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.8.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.8.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec-its
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: byebug
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
36
83
|
description: An alternative to the ri command
|
37
84
|
email: sr@gimp.org
|
38
85
|
executables:
|
39
86
|
- bri
|
40
87
|
extensions: []
|
41
88
|
extra_rdoc_files:
|
42
|
-
- README
|
89
|
+
- README.rdoc
|
43
90
|
files:
|
44
|
-
- README
|
45
|
-
- TODO
|
46
91
|
- Changelog
|
92
|
+
- README.rdoc
|
93
|
+
- TODO
|
47
94
|
- bin/bri
|
48
95
|
- lib/bri.rb
|
49
96
|
- lib/bri/mall.rb
|
50
|
-
- lib/bri/matcher.rb
|
51
97
|
- lib/bri/match.rb
|
52
98
|
- lib/bri/match/base.rb
|
53
99
|
- lib/bri/match/class.rb
|
54
100
|
- lib/bri/match/method.rb
|
101
|
+
- lib/bri/matcher.rb
|
102
|
+
- lib/bri/renderer.rb
|
55
103
|
- lib/bri/search.rb
|
56
104
|
- lib/bri/search/base.rb
|
57
105
|
- lib/bri/search/class.rb
|
58
|
-
- lib/bri/search/method.rb
|
59
106
|
- lib/bri/search/class_method.rb
|
60
107
|
- lib/bri/search/instance_method.rb
|
108
|
+
- lib/bri/search/method.rb
|
61
109
|
- lib/bri/templates.rb
|
62
|
-
- lib/bri/renderer.rb
|
63
|
-
- spec/spec_helper.rb
|
64
110
|
- spec/bri_dummy_spec_class.rb
|
65
111
|
- spec/lib/bri/mall_spec.rb
|
66
|
-
- spec/lib/bri/matcher_spec.rb
|
67
|
-
- spec/lib/bri/renderer_spec.rb
|
68
112
|
- spec/lib/bri/match/class_spec.rb
|
69
113
|
- spec/lib/bri/match/method_spec.rb
|
70
|
-
- spec/lib/bri/
|
114
|
+
- spec/lib/bri/matcher_spec.rb
|
115
|
+
- spec/lib/bri/renderer_spec.rb
|
71
116
|
- spec/lib/bri/search/class_method_spec.rb
|
117
|
+
- spec/lib/bri/search/class_spec.rb
|
72
118
|
- spec/lib/bri/search/instance_method_spec.rb
|
73
119
|
- spec/lib/bri/search/method_spec.rb
|
120
|
+
- spec/spec_helper.rb
|
74
121
|
homepage: http://github.com/sriedel/bri
|
75
122
|
licenses: []
|
123
|
+
metadata: {}
|
76
124
|
post_install_message:
|
77
125
|
rdoc_options:
|
78
|
-
- --charset=UTF-8
|
126
|
+
- "--charset=UTF-8"
|
79
127
|
require_paths:
|
80
128
|
- lib
|
81
129
|
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
130
|
requirements:
|
84
|
-
- -
|
131
|
+
- - ">="
|
85
132
|
- !ruby/object:Gem::Version
|
86
|
-
version:
|
133
|
+
version: 2.6.0
|
87
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
|
-
none: false
|
89
135
|
requirements:
|
90
|
-
- -
|
136
|
+
- - ">="
|
91
137
|
- !ruby/object:Gem::Version
|
92
138
|
version: '0'
|
93
139
|
requirements: []
|
94
|
-
|
95
|
-
rubygems_version: 1.8.2
|
140
|
+
rubygems_version: 3.0.3
|
96
141
|
signing_key:
|
97
|
-
specification_version:
|
142
|
+
specification_version: 4
|
98
143
|
summary: Beautified RI in the spirit of fastri/qri. Unlike fastri, bri builds on top
|
99
144
|
of the rdoc 2.x/3.x backend, only output and formatting is handled by bri
|
100
145
|
test_files: []
|