bri 0.2.1 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|