bri 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b20f64d2f12c1afba4d051de9aa6a091167743eefdc88410dddec663795e271f
4
- data.tar.gz: 6c34a20f61319303f3877cdda56d757fc29a83ee8b89c8b2a9c4529b8f02d372
3
+ metadata.gz: 74b87ae62d01b5be9164734271754be0cc3a1ef68ad3b35bd78b633d829a529a
4
+ data.tar.gz: 27fdfe717c1cea3b49525ff5e9c59b462757d1d86db440bd4dc1fd9719f47c70
5
5
  SHA512:
6
- metadata.gz: 6732a87a376c437b97f84f06617baea7b7e2f23ac208d1124adad119ff52beb65081208ec3d11a863a72718e43a5aeacb15a73fc76aad63ef0c2ab84e44e9c40
7
- data.tar.gz: bc7d3406f8cca348c58f1435e88174d46f159243ff09661b9ddc0114bdc967d6954e1be263602692af4af98f24e3bf2285a8f69fb9d04311fc54f9ec7753b13b
6
+ metadata.gz: e0d96c3ae752ec0b5b3fb59ad58da596869fd91665282eeb588ba8c03041b3f26040f331189b9db84a6d55aaf5e5540430dddbd07c925a7dde198ed6939bc7f0
7
+ data.tar.gz: 4f3cc64561cb91cc53caf689611c32f6daf8d0482eb2bee3407358fad32fd808e0b70ce613c979b57917c0c2afe4b135f48f46e19de8888a167591d205aadecc
data/Changelog CHANGED
@@ -1,3 +1,13 @@
1
+ 0.4.4
2
+ - No longer display all found class/module documentation found. If core
3
+ documentation is available, output only that, otherwise falls back to gem
4
+ documentation. To show all found documentation use the --all command line
5
+ paramter.
6
+ - Remove blank lines between list items. While these make lists with
7
+ multi row items more readable, they waste a lot of space for lists
8
+ containing only single row items. The blank line will be reintroduced for
9
+ lists containing multi row elements later on.
10
+
1
11
  0.4.3
2
12
  - If multiple documentations are found that are all class documentations,
3
13
  display all of these. This is useful in cases that gems extend core
@@ -24,7 +24,14 @@ Bri is a Beautiful RI formatter.
24
24
 
25
25
  = Usage
26
26
 
27
- bri Array # looks up the class description of Array in the ri documentation
27
+ bri Array # looks up the class description of Array in the ri documentation.
28
+ # As of 0.4.4 this form will only output core documentation if
29
+ # available, falling back to gem documentation if no core
30
+ # documentation is found. This way you can look at the documentation
31
+ # of core classes that gems love to money patch without having
32
+ # to scroll back through your terminal.
33
+ # If you really want to see everything there is, use --all:
34
+ bri --all Array
28
35
 
29
36
  bri Array.class_method # looks up the class method of the given class
30
37
 
data/bin/bri CHANGED
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'bri'
3
3
  require 'optparse'
4
- require 'byebug'
5
4
 
6
5
  @options = {
7
6
  :list_classes => false,
8
7
  :list_methods => false,
9
- :list_names => false
8
+ :list_names => false,
9
+ :show_all => false
10
10
  }
11
11
 
12
12
  def parse_options
@@ -24,6 +24,7 @@ def parse_options
24
24
  opts.on( nil, "--methods", "List known methods" ) { |v| @options[:list_methods] = true }
25
25
  opts.on( "-l", "--list-names", "List known namespaces/methods" ) { |v| @options[:list_names] = true }
26
26
  opts.on( "-w", "--width [COLUMNS]", "Set the output width", Integer ) { |v| Bri.width = v.to_i - 8 }
27
+ opts.on( "-a", "--all", "Output all documentation for the term. Prefers core documents otherwise") { |v| @options[:show_all] = true }
27
28
  opts.on_tail( "-h", "--help", "This help text" ) { puts opts; exit }
28
29
  end
29
30
  parser.parse!( ARGV )
@@ -44,5 +45,5 @@ elsif @options[:list_methods]
44
45
  elsif @options[:list_names]
45
46
  puts Bri.list_names
46
47
  else
47
- puts Bri.ri( ARGV[0] )
48
+ puts Bri.ri( ARGV[0], show_all: @options[:show_all] )
48
49
  end
data/lib/bri.rb CHANGED
@@ -11,7 +11,7 @@ require_relative 'bri/match'
11
11
  module Bri
12
12
  DEFAULT_WIDTH = 72
13
13
 
14
- def self.ri( query )
14
+ def self.ri( query, show_all: false )
15
15
  results = Bri::Matcher.new( query ).find
16
16
 
17
17
  if results.size == 0
@@ -19,7 +19,14 @@ module Bri
19
19
  elsif results.size == 1
20
20
  results.first.to_s
21
21
  elsif results.all? { |r| r.is_a?(Bri::Match::Class) }
22
- results.map(&:to_s)
22
+ if show_all
23
+ results.map(&:to_s)
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
23
30
  else
24
31
  qualified_methods = results.map(&:full_name).sort
25
32
  ERB.new( Bri::Templates::MULTIPLE_CHOICES, nil, '<>' ).result( binding )
@@ -50,7 +50,7 @@ module Bri
50
50
  rendered_items.map! { |item| item.gsub( /\n/, "\n#{INDENT}" ) }
51
51
  end
52
52
 
53
- "#{rendered_items.join( "\n\n" )}\n"
53
+ "#{rendered_items.join( "\n" )}\n"
54
54
 
55
55
  else
56
56
  text = extract_text( element, width, alignment_width )
@@ -66,44 +66,43 @@ module Bri
66
66
  end
67
67
 
68
68
  def self.extract_text( element, width, label_alignment_width = 0, conserve_newlines = false )
69
- text = case element
70
- when RDoc::Markup::Paragraph
71
- join_char = conserve_newlines ? "\n" : " "
72
- element.parts.map(&:strip).join( join_char )
73
-
74
- when RDoc::Markup::BlankLine
75
- ""
76
-
77
- when RDoc::Markup::Rule
78
- "-" * width
79
-
80
- when RDoc::Markup::Verbatim
81
- element.parts.map { |part| part.prepend( " " ) }.join
82
-
83
- when RDoc::Markup::Heading
84
- "<h>#{element.text}</h>"
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 )
98
-
99
- when RDoc::Markup::Document
100
- element.parts.
101
- map { |part| extract_text( part, width, label_alignment_width, conserve_newlines ) }.
102
- join
103
- else
104
- raise "Don't know how to handle type #{element.class}: #{element.inspect}"
105
- end
106
- text << "\n"
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
107
106
  end
108
107
 
109
108
  def self.replace_markup( text )
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bri
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sven Riedel
@@ -137,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  requirements: []
140
- rubygems_version: 3.0.3
140
+ rubygems_version: 3.0.4
141
141
  signing_key:
142
142
  specification_version: 4
143
143
  summary: Beautified RI in the spirit of fastri/qri. Unlike fastri, bri builds on top