webri 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/exe/webri +40 -6
- data/lib/webri/version.rb +1 -1
- data/lib/webri.rb +11 -4
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 68514ee1cc75ddf56d6e2571cf618e6cd9f4f1280ba36ead73b48dc55f1a76d2
|
|
4
|
+
data.tar.gz: ad21f3ead74402261aef2de10afe02f6d4dc84651e4ee455ec10fb69198470b7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ea208781efa16baa846c81f5760019dc22b8b291d3f82fda2f7e5f824f4fbb3079c22a5eb65beea5edeb6bc7e9e4c3c833e10a04d4393ad4ab12681aad4cc8d3
|
|
7
|
+
data.tar.gz: 55408e4193540296a0c9085ed8ba4c29843530ac91497b338cab2989bc19b407ba2b20c8f739b7c7d7698b2949bc140530a844578046af920cf2088e5f203fa3
|
data/exe/webri
CHANGED
|
@@ -5,7 +5,33 @@
|
|
|
5
5
|
require 'optparse'
|
|
6
6
|
require_relative '../lib/webri/version'
|
|
7
7
|
require_relative '../lib/webri'
|
|
8
|
+
require_relative '../lib/scraper'
|
|
8
9
|
|
|
10
|
+
NAME = <<EOT
|
|
11
|
+
|
|
12
|
+
Name:
|
|
13
|
+
|
|
14
|
+
There are four types of names, as determined by prefixes:
|
|
15
|
+
|
|
16
|
+
- Class or module: starts with a capital letter; e.g., 'Array'.
|
|
17
|
+
- Singleton method: starts with '::'; e.g., '::new'.
|
|
18
|
+
- Instance method: starts with '#' (escaped as '\\#', if your shell requires it);
|
|
19
|
+
e.g., '#inspect'.
|
|
20
|
+
- Ruby file: starts with 'ruby:'; e.g., 'ruby:syntax_rdoc'.
|
|
21
|
+
|
|
22
|
+
Name handling:
|
|
23
|
+
|
|
24
|
+
- If name is a complete name of its type (and not also the start of other such names),
|
|
25
|
+
webri opens the page for that name.
|
|
26
|
+
- If name is incomplete, but is the start of only one name of its type,
|
|
27
|
+
webri asks whether to open the page for that name.
|
|
28
|
+
- If name is incomplete, but is the start of multiple names of its type,
|
|
29
|
+
webri displays those names and lets you choose.
|
|
30
|
+
- If name is not a valid name of its type, webri asks whether show such names.
|
|
31
|
+
- If name is not valid at all (i.e., does not start with any of the prefixes above),
|
|
32
|
+
webri prints an error message.
|
|
33
|
+
|
|
34
|
+
EOT
|
|
9
35
|
options = {}
|
|
10
36
|
|
|
11
37
|
parser = OptionParser.new
|
|
@@ -15,13 +41,20 @@ parser.banner = <<-BANNER
|
|
|
15
41
|
webri is a console application for displaying Ruby online HTML documentation.
|
|
16
42
|
Documentation pages are opened in the default web browser.
|
|
17
43
|
|
|
18
|
-
Usage: #{parser.program_name} [options]
|
|
19
|
-
|
|
20
|
-
For more information, see https://github.com/BurdetteLamar/webri/blob/main/README.md.
|
|
44
|
+
Usage: #{parser.program_name} [options] name
|
|
21
45
|
|
|
22
46
|
BANNER
|
|
23
47
|
|
|
24
|
-
|
|
48
|
+
RELEASES = Scraper.scrapers.keys.inspect
|
|
49
|
+
|
|
50
|
+
parser.separator("Options:")
|
|
51
|
+
release_description = <<-EOT
|
|
52
|
+
|
|
53
|
+
EOT
|
|
54
|
+
parser.on('-r', '--release RELEASE',
|
|
55
|
+
"Specify documentation release (one of #{RELEASES}).") do |value|
|
|
56
|
+
options[:release_name] = value
|
|
57
|
+
end
|
|
25
58
|
parser.on('-i', '--info', 'Print information about webri.') do
|
|
26
59
|
options[:info] = true
|
|
27
60
|
end
|
|
@@ -39,8 +72,9 @@ parser.on('-v', '--version', 'Print the version of webri.') do
|
|
|
39
72
|
puts WebRI::VERSION
|
|
40
73
|
exit
|
|
41
74
|
end
|
|
75
|
+
parser.separator(NAME)
|
|
42
76
|
|
|
43
77
|
parser.parse!
|
|
44
78
|
|
|
45
|
-
|
|
46
|
-
WebRI.new(
|
|
79
|
+
name = ARGV[0]
|
|
80
|
+
WebRI.new(name, options)
|
data/lib/webri/version.rb
CHANGED
data/lib/webri.rb
CHANGED
|
@@ -61,22 +61,28 @@ class WebRI
|
|
|
61
61
|
:href_for_singleton_method_name,
|
|
62
62
|
:href_for_instance_method_name
|
|
63
63
|
|
|
64
|
-
def initialize(
|
|
65
|
-
self.release_name = set_doc_release(release_name)
|
|
64
|
+
def initialize(name = nil, options = {})
|
|
66
65
|
capture_options(options)
|
|
66
|
+
self.release_name = set_doc_release(@release_name)
|
|
67
67
|
# data_file_path = File.join('data', self.release_name + '.json')
|
|
68
68
|
data_file_path = File.expand_path("../data/#{self.release_name}.json", __dir__)
|
|
69
69
|
json = open(data_file_path).read
|
|
70
70
|
@data = JSON.parse(json, create_additions: true)
|
|
71
71
|
make_groups
|
|
72
72
|
print_info if @info
|
|
73
|
-
if
|
|
73
|
+
if name
|
|
74
|
+
do_name(name)
|
|
75
|
+
elsif os_type == :linux && !@noreline
|
|
74
76
|
repl_reline
|
|
75
77
|
else
|
|
76
78
|
repl_plain
|
|
77
79
|
end
|
|
78
80
|
end
|
|
79
81
|
|
|
82
|
+
def do_name(name)
|
|
83
|
+
show(name)
|
|
84
|
+
end
|
|
85
|
+
|
|
80
86
|
def make_groups
|
|
81
87
|
self.href_for_class_name = {}
|
|
82
88
|
self.href_for_file_name = {}
|
|
@@ -98,7 +104,7 @@ class WebRI
|
|
|
98
104
|
|
|
99
105
|
def repl_plain # Read-evaluate-print loop, without Reline.
|
|
100
106
|
while true
|
|
101
|
-
|
|
107
|
+
$stdout.write(PROMPT)
|
|
102
108
|
$stdout.flush
|
|
103
109
|
response = $stdin.gets.chomp
|
|
104
110
|
exit if response == 'exit'
|
|
@@ -191,6 +197,7 @@ class WebRI
|
|
|
191
197
|
@noop = options[:noop]
|
|
192
198
|
@info = options[:info]
|
|
193
199
|
@noreline = options[:noreline]
|
|
200
|
+
@release_name = options[:release_name]
|
|
194
201
|
end
|
|
195
202
|
|
|
196
203
|
class Entry
|