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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/exe/webri +40 -6
  3. data/lib/webri/version.rb +1 -1
  4. data/lib/webri.rb +11 -4
  5. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 295d59fd4b80e45e52512d35242f62e51f5bcfc07728533dbff40fb7636f71f0
4
- data.tar.gz: 820ad8115db7738ee02d50fba385ad24006c955e06e06e1ce2583b54ef3f5ead
3
+ metadata.gz: 68514ee1cc75ddf56d6e2571cf618e6cd9f4f1280ba36ead73b48dc55f1a76d2
4
+ data.tar.gz: ad21f3ead74402261aef2de10afe02f6d4dc84651e4ee455ec10fb69198470b7
5
5
  SHA512:
6
- metadata.gz: acb1d71743a78d90158c7198b75748ab70acdc4d5422cfed6947ffef5de0d730015d2fe6a2031354c2aba41c4cb93951ab2dc50cfc940642a23c868435a34184
7
- data.tar.gz: 0d52353858de9162c92378f839cf048516e83b7f78ed1560f9b273bb72c1a16d8f9d3d1d97356f5915e33eafdfee60cec216512c9a68835db7c91c05cbc65014
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
- parser.separator('Options:')
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
- release_name = ARGV[0]
46
- WebRI.new(release_name, options)
79
+ name = ARGV[0]
80
+ WebRI.new(name, options)
data/lib/webri/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class WebRI
4
- VERSION = "2.0.0"
4
+ VERSION = "2.1.0"
5
5
  end
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(release_name = nil, options = {})
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 os_type == :linux && !@noreline
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
- $stdout.write(PROMPT)
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webri
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - BurdetteLamar