yard-link_stdlib 0.1.3 → 0.1.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
  SHA1:
3
- metadata.gz: 3334c95ebde62bc497aaab158361d28cb88bcb3e
4
- data.tar.gz: 04117641eaf696120948d32d3e23354308e33d77
3
+ metadata.gz: 35e1ca61be63e6ca2ec8b75762cf24cb2139e375
4
+ data.tar.gz: c5be9c26529b4fea0ebb8e32f84603090bf2b193
5
5
  SHA512:
6
- metadata.gz: f5c660eb08a0a7656e305771d7603788b8396bec4221ee2c3030137e7ad7cfbef4682ee3a481fe62b84b3a0cd8b6972abfdc82d0fda9f39ea9ed778f161eb113
7
- data.tar.gz: 227aa9d466ab557c835d84c581d205b79dbe993dd62fea51c868e03b0b9a8f60418944257ea20003717b060fb2fd56e2ad2dcd4e5a14a2764c0012a72275d8cd
6
+ metadata.gz: 374248e1ffd21df5717efc40de3dccbd7bc0ae62d804ce4acb36f84776cfa9293ea620547954d497c407ec91e040d408ca550dd831d5a375d6fcf4e2c6aca1e3
7
+ data.tar.gz: f4638c958009fbeccf3c6fedbdcac2ba14af45d21286ac6ac0988c6b94e093c1b7db7983e5a067460b1b2e8e4f96fab935f8f1615f0e0884e36b96b0abc2302d
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.1.4
@@ -15,7 +15,12 @@ require 'yard'
15
15
 
16
16
  ### Project / Package ###
17
17
 
18
- require 'yard/link_stdlib/ruby_source'
18
+ #### Sub-Commands ####
19
+ require_relative './link_stdlib/add'
20
+ require_relative './link_stdlib/help'
21
+ require_relative './link_stdlib/list'
22
+ require_relative './link_stdlib/search'
23
+ require_relative './link_stdlib/url'
19
24
 
20
25
 
21
26
  # Namespace
@@ -28,357 +33,29 @@ module CLI
28
33
  # Definitions
29
34
  # =======================================================================
30
35
 
31
-
32
- class OptionParser < ::OptionParser
33
- def after_parse_block
34
- @after_parse_block ||= []
35
- end
36
-
37
- def after_parse &block
38
- after_parse_block << block
39
- end
40
-
41
- def parse! *args
42
- super( *args ).tap { after_parse_block.each &:call }
43
- end
44
- end
45
-
46
-
47
- module CommandHelper
48
-
49
- def description
50
- self.class::DESCRIPTION
51
- end
52
-
53
-
54
- def usage
55
- self.class::USAGE
56
- end
57
-
58
-
59
- def check_args! args, count
60
- if args.length < count
61
- log.error "Too few args! Expected #{ count }, given #{ args.length }"
62
- exit false
63
- elsif args.length > count
64
- log.error "Too many args! Expected #{ count }, given #{ args.length }"
65
- exit false
66
- end
67
-
68
- if args.length == 1 then args[ 0 ] else args end
69
- end
70
-
71
-
72
- def opts
73
- @opts ||= {}
74
- end
75
-
76
-
77
- def add_header op, text = nil
78
- op.banner = description
79
- op.separator ''
80
- op.separator 'Usage:'
81
- op.separator ''
82
- op.separator " #{ usage }"
83
- op.separator ''
84
- unless text.nil?
85
- text.lines.each { |line| op.separator line }
86
- end
87
- op.separator ''
88
- op.separator 'Options:'
89
-
90
- op.on_tail( '-q', '--quiet', 'Show no warnings.' ) {
91
- log.level = Logger::ERROR
92
- }
93
-
94
- op.on_tail( '--verbose', 'Show more information.') {
95
- log.level = Logger::INFO
96
- }
97
-
98
- op.on_tail( '--debug', 'Show debugging information.' ) {
99
- log.level = Logger::DEBUG
100
- }
101
-
102
- op.on_tail( '--backtrace', 'Show stack traces' ) {
103
- log.show_backtraces = true
104
- }
105
-
106
- op.on_tail( '-h', '--help', %(You're looking at it!) ) {
107
- log.puts op
108
- exit true
109
- }
110
- end
111
-
112
- def add_version_opt op
113
- # **DON'T** make missing versions by default here!
114
- YARD::LinkStdlib::RubySource.make_missing = false
115
-
116
- op.on(
117
- '-v VERSION',
118
- '--ruby-version=VERSION',
119
- %(Set Ruby version)
120
- ) { |ruby_version|
121
- YARD::LinkStdlib::RubyVersion.set ruby_version
122
- # opts[ :ruby_version ] = ruby_version
123
- }
124
-
125
- op.on(
126
- '--make-missing',
127
- %(Download and make an object map if the Ruby version is not present)
128
- ) { |make_missing|
129
- YARD::LinkStdlib::RubySource.make_missing = make_missing
130
- # opts[ :make_missing ] = make_missing
131
- }
132
- end
133
-
134
- end # CommandHelper
135
-
136
-
137
- # @todo document LinkStdlib class.
36
+ # Top-level {YARD::CLI::Command} for the `yard-link_stdlib` plugin. Added under
37
+ # the name `stdlib` (see {YARD::LinkStdlib.install!}).
38
+ #
39
+ # Simply a router to the sub-commands. Like {YARD::CLI::CommandParser}, which
40
+ # handles routing for `yard`, but is not really re-usable. In addition, this
41
+ # class handles "-" → "_" conversion in sub-command names, since we have
42
+ # multi-word commands.
43
+ #
138
44
  class LinkStdlib < Command
139
-
140
- # Sub-commands
141
- # ============================================================================
142
-
143
- class List < Command
144
- include CommandHelper
145
-
146
- DESCRIPTION = "List Ruby versions"
147
- USAGE = "yard stdlib list"
148
-
149
- def run *args
150
-
151
-
152
- log.puts \
153
- YARD::LinkStdlib::ObjectMap.
154
- all.
155
- map { |om| om.version.to_s }.
156
- join( "\n" )
157
- end
158
- end # class List
159
-
160
-
161
- class Add < Command
162
-
163
- include CommandHelper
164
-
165
- DESCRIPTION = "Download version source and build object map"
166
- USAGE = "yard stdlib add [OPTIONS] RUBY_VERSION"
167
-
168
- def run *args
169
- # Want to see what's going on by default here...
170
- log.level = Logger::INFO
171
-
172
- opts[ :force ] = false
173
-
174
- OptionParser.new { |op|
175
- add_header op
176
-
177
- op.on( '-f', '--force',
178
- %(Force building of map data when already present)
179
- ) { |force| opts[ :force ] = force }
180
-
181
- }.parse! args
182
-
183
- args.each do |version|
184
- log.info "Adding object map for Ruby #{ version }..."
185
- YARD::LinkStdlib::ObjectMap.add version, force: opts[ :force ]
186
- end
187
-
188
- exit true
189
- end
190
-
191
- end # class Add
192
-
193
-
194
- class URL < Command
195
-
196
- include CommandHelper
197
-
198
- DESCRIPTION = "Print the online doc URL for a stdlib name"
199
- USAGE = "yard stdlib url [OPTIONS] NAME"
200
-
201
- def run *args
202
- OptionParser.new { |op|
203
- add_header op
204
- add_version_opt op
205
- }.parse! args
206
-
207
- name = check_args! args, 1
208
-
209
- url = YARD::LinkStdlib::ObjectMap.current.url_for name
210
-
211
- if url.nil?
212
- $stderr.puts "Name not found: #{ name.inspect }"
213
- exit false
214
- end
215
-
216
- puts url
217
- exit true
218
- end
219
- end
220
-
221
-
222
- # Hooks into {YARD::LinkStdlib::ObjectMap#grep} to search for names using
223
- # regular expressions.
224
- #
225
- class Search < Command
226
-
227
- include CommandHelper
228
-
229
- DESCRIPTION = "Find stdlib names that match Regexp patterns"
230
- USAGE = "yard stdlib search [OPTIONS] TERMS..."
231
-
232
- def run *args
233
- # Default format is `:plain`
234
- opts[ :format ] = :plain
235
-
236
- OptionParser.new { |op|
237
- add_header op, <<~END
238
- Examples:
239
-
240
- 1. {Pathname} instance methods
241
-
242
- $ yard stdlib search '^Pathname#'
243
-
244
- 2. All `#to_s` methods
245
-
246
- $ yard stdlib search '#to_s$'
247
-
248
- 3. Print results in serialized formats.
249
-
250
- All `#to_s` instance methods in JSON:
251
-
252
- $ yard stdlib search --format=json '#to_s$'
253
-
254
- Supports a short `-f` flag and first-letter formats too.
255
-
256
- Instance methods of {Array} in YAML:
257
-
258
- $ yard stdlib search -f y '^Array#'
259
- END
260
-
261
- add_version_opt op
262
-
263
- op.on( '-u', '--urls',
264
- %(Print doc URLs along with names)
265
- ) { |urls| opts[ :urls ] = !!urls }
266
-
267
- op.on( '-f FORMAT', '--format=FORMAT',
268
- %(Specify print format: (p)lain, (j)son or (y)aml)
269
- ) { |format|
270
- opts[ :format ] = \
271
- case format.downcase
272
- when 'p', 'plain'
273
- :plain
274
- when 'j', 'json'
275
- :json
276
- when 'y', 'yaml'
277
- :yaml
278
- else
279
- log.fatal \
280
- %(Unknown format - expected "plain", "json" or "yaml"; ) +
281
- %(given #{ format.inspect })
282
- exit false
283
- end
284
- }
285
-
286
- }.parse! args
287
-
288
- if args.empty?
289
- YARD::LinkStdlib::ObjectMap.
290
- current.
291
- names.
292
- sort_by( &:downcase ).
293
- each { |key| log.puts key }
294
- exit true
295
- end
296
-
297
- terms = args.map { |arg|
298
- begin
299
- Regexp.new arg
300
- rescue RegexpError => error
301
- Regexp.new \
302
- Regexp.escape( YARD::LinkStdlib.normalize_name( arg ) )
303
- end
304
- }
305
-
306
- log.debug "Terms:\n " + terms.map( &:to_s ).join( "\n " )
307
-
308
- names = YARD::LinkStdlib.grep *terms
309
-
310
- results = \
311
- if opts[ :urls ]
312
- names.each_with_object( {} ) { |name, hash|
313
- hash[ name ] = YARD::LinkStdlib::ObjectMap.current.url_for name
314
- }
315
- else
316
- names
317
- end
318
-
319
- case opts[ :format ]
320
- when :plain
321
- results.each do |entry|
322
- if entry.is_a? ::Array
323
- log.puts "#{ entry[0] } <#{ entry[ 1 ]}>"
324
- else
325
- log.puts entry
326
- end
327
- end
328
- when :json
329
- require 'json'
330
- log.puts JSON.pretty_generate( results )
331
- when :yaml
332
- require 'yaml'
333
- log.puts YAML.dump( results )
334
- end
335
-
336
- exit true
337
- end
338
- end # class Search
339
-
340
-
341
- class Help < Command
342
-
343
- include CommandHelper
344
-
345
- DESCRIPTION = "Show this message"
346
-
347
- def run
348
- commands = LinkStdlib.commands
349
- log.puts <<~END
350
- yard-link_stdlib provides linking to online Ruby docs for standard
351
- library code objects.
352
-
353
- Usage:
354
-
355
- yard stdlib COMMAND... [OPTIONS] [ARGS]
356
-
357
- Commands:
358
-
359
- END
360
- commands.keys.sort_by(&:to_s).each do |command_name|
361
- command_class = commands[command_name]
362
- next unless command_class < Command
363
- command = command_class.new
364
- log.puts "%-8s %s" % [command_name, command.description]
365
- end
366
- log.puts
367
- end
368
- end
369
45
 
46
+ @commands = SymbolHash[
47
+ help: Help,
48
+ list: List,
49
+ add: Add,
50
+ url: URL,
51
+ search: Search,
52
+ ]
370
53
 
371
54
  # Singleton Methods
372
55
  # ==========================================================================
373
56
 
374
57
  def self.commands
375
- {
376
- help: Help,
377
- list: List,
378
- add: Add,
379
- url: URL,
380
- search: Search,
381
- }
58
+ @commands
382
59
  end
383
60
 
384
61
 
@@ -0,0 +1,70 @@
1
+ # encoding: UTF-8
2
+ # frozen_string_literal: true
3
+
4
+ # Requirements
5
+ # =======================================================================
6
+
7
+ ### Stdlib ###
8
+
9
+ require 'optparse'
10
+
11
+ ### Deps ###
12
+
13
+ # We need {YARD::CLI::Command}
14
+ require 'yard'
15
+
16
+ ### Project / Package ###
17
+
18
+ require_relative './command_helper'
19
+
20
+
21
+ # Namespace
22
+ # =======================================================================
23
+
24
+ module YARD
25
+ module CLI
26
+ class LinkStdlib < Command
27
+
28
+
29
+ # Definitions
30
+ # =======================================================================
31
+
32
+ class Add < Command
33
+
34
+ include CommandHelper
35
+
36
+ DESCRIPTION = "Download version source and build object map"
37
+ USAGE = "yard stdlib add [OPTIONS] RUBY_VERSION"
38
+
39
+ def run *args
40
+ # Want to see what's going on by default here...
41
+ log.level = Logger::INFO
42
+
43
+ opts[ :force ] = false
44
+
45
+ OptionParser.new { |op|
46
+ add_header op
47
+
48
+ op.on( '-f', '--force',
49
+ %(Force building of map data when already present)
50
+ ) { |force| opts[ :force ] = force }
51
+
52
+ }.parse! args
53
+
54
+ args.each do |version|
55
+ log.info "Adding object map for Ruby #{ version }..."
56
+ YARD::LinkStdlib::ObjectMap.add version, force: opts[ :force ]
57
+ end
58
+
59
+ exit true
60
+ end
61
+
62
+ end # class Add
63
+
64
+
65
+ # /Namespace
66
+ # =======================================================================
67
+
68
+ end # class LinkStdlib
69
+ end # module CLI
70
+ end # module YARD
@@ -0,0 +1,103 @@
1
+ # encoding: UTF-8
2
+ # frozen_string_literal: true
3
+
4
+ # Requirements
5
+ # =======================================================================
6
+
7
+ ### Deps ###
8
+
9
+ # We need {YARD::CLI::Command}
10
+ require 'yard'
11
+
12
+ ### Project / Package ###
13
+
14
+ # `.make_missing`, `.set` from {YARD::LinkStdlib::RubySource}
15
+ require 'yard/link_stdlib/ruby_source'
16
+
17
+
18
+ # Namespace
19
+ # =======================================================================
20
+
21
+ module YARD
22
+ module CLI
23
+ class LinkStdlib < Command
24
+
25
+
26
+ # Definitions
27
+ # =======================================================================
28
+
29
+ module CommandHelper
30
+
31
+ def description
32
+ self.class::DESCRIPTION
33
+ end
34
+
35
+
36
+ def usage
37
+ self.class::USAGE
38
+ end
39
+
40
+
41
+ def check_args! args, count
42
+ if args.length < count
43
+ log.error "Too few args! Expected #{ count }, given #{ args.length }"
44
+ exit false
45
+ elsif args.length > count
46
+ log.error "Too many args! Expected #{ count }, given #{ args.length }"
47
+ exit false
48
+ end
49
+
50
+ if args.length == 1 then args[ 0 ] else args end
51
+ end
52
+
53
+
54
+ def opts
55
+ @opts ||= {}
56
+ end
57
+
58
+
59
+ def add_header op, text = nil
60
+ op.banner = description
61
+ op.separator ''
62
+ op.separator 'Usage:'
63
+ op.separator ''
64
+ op.separator " #{ usage }"
65
+ op.separator ''
66
+ unless text.nil?
67
+ text.lines.each { |line| op.separator line }
68
+ end
69
+
70
+ # Call {YARD::CLI::Command#common_options}, which adds file loading, plugin
71
+ # loading, logging, YARD version and help options
72
+ common_options( op )
73
+ end
74
+
75
+ def add_version_opt op
76
+ # **DON'T** make missing versions by default here!
77
+ YARD::LinkStdlib::RubySource.make_missing = false
78
+
79
+ op.on(
80
+ '-R VERSION',
81
+ '--ruby-version=VERSION',
82
+ %(Set Ruby version)
83
+ ) { |ruby_version|
84
+ YARD::LinkStdlib::RubyVersion.set ruby_version
85
+ }
86
+
87
+ op.on(
88
+ '--make-missing',
89
+ %(Download and make an object map if the Ruby version is not present)
90
+ ) { |make_missing|
91
+ YARD::LinkStdlib::RubySource.make_missing = make_missing
92
+ }
93
+ end
94
+
95
+ end # CommandHelper
96
+
97
+
98
+ # /Namespace
99
+ # =======================================================================
100
+
101
+ end # class LinkStdlib
102
+ end # module CLI
103
+ end # module YARD
@@ -0,0 +1,72 @@
1
+ # encoding: UTF-8
2
+ # frozen_string_literal: true
3
+
4
+ # Requirements
5
+ # =======================================================================
6
+
7
+ ### Stdlib ###
8
+
9
+ require 'optparse'
10
+
11
+ ### Deps ###
12
+
13
+ # We need {YARD::CLI::Command}
14
+ require 'yard'
15
+
16
+ ### Project / Package ###
17
+
18
+ require_relative './command_helper'
19
+
20
+
21
+ # Namespace
22
+ # =======================================================================
23
+
24
+ module YARD
25
+ module CLI
26
+ class LinkStdlib < Command
27
+
28
+
29
+ # Definitions
30
+ # =======================================================================
31
+
32
+ class Help < Command
33
+
34
+ include CommandHelper
35
+
36
+ USAGE = "yard stdlib help [OTHER_OPTIONS]"
37
+ DESCRIPTION = "Show this message"
38
+
39
+ def run *args
40
+ OptionParser.new { |op|
41
+ add_header op
42
+ }.parse! args
43
+
44
+ commands = LinkStdlib.commands
45
+ log.puts <<~END
46
+ yard-link_stdlib provides linking to online Ruby docs for standard
47
+ library code objects.
48
+
49
+ Usage:
50
+
51
+ yard stdlib COMMAND... [OPTIONS] [ARGS]
52
+
53
+ Commands:
54
+
55
+ END
56
+ commands.keys.sort_by(&:to_s).each do |command_name|
57
+ command_class = commands[command_name]
58
+ next unless command_class < Command
59
+ command = command_class.new
60
+ log.puts "%-8s %s" % [command_name, command.description]
61
+ end
62
+ log.puts
63
+ end
64
+ end
65
+
66
+
67
+ # /Namespace
68
+ # =======================================================================
69
+
70
+ end # class LinkStdlib
71
+ end # module CLI
72
+ end # module YARD
@@ -0,0 +1,59 @@
1
+ # encoding: UTF-8
2
+ # frozen_string_literal: true
3
+
4
+ # Requirements
5
+ # =======================================================================
6
+
7
+ ### Stdlib ###
8
+
9
+ require 'optparse'
10
+
11
+ ### Deps ###
12
+
13
+ # We need {YARD::CLI::Command}
14
+ require 'yard'
15
+
16
+ ### Project / Package ###
17
+
18
+ require_relative './command_helper'
19
+
20
+
21
+ # Namespace
22
+ # =======================================================================
23
+
24
+ module YARD
25
+ module CLI
26
+ class LinkStdlib < Command
27
+
28
+
29
+ # Definitions
30
+ # =======================================================================
31
+
32
+ class List < Command
33
+ include CommandHelper
34
+
35
+ DESCRIPTION = "List Ruby versions"
36
+ USAGE = "yard stdlib list"
37
+
38
+ def run *args
39
+ OptionParser.new { |op|
40
+ add_header op
41
+ }.parse! args
42
+
43
+ check_args! args, 0
44
+
45
+ log.puts \
46
+ YARD::LinkStdlib::ObjectMap.
47
+ all.
48
+ map { |om| om.version.to_s }.
49
+ join( "\n" )
50
+ end
51
+ end # class List
52
+
53
+
54
+ # /Namespace
55
+ # =======================================================================
56
+
57
+ end # class LinkStdlib
58
+ end # module CLI
59
+ end # module YARD
@@ -0,0 +1,156 @@
1
+ # encoding: UTF-8
2
+ # frozen_string_literal: true
3
+
4
+ # Requirements
5
+ # =======================================================================
6
+
7
+ ### Stdlib ###
8
+
9
+ require 'optparse'
10
+
11
+ ### Deps ###
12
+
13
+ # We need {YARD::CLI::Command}
14
+ require 'yard'
15
+
16
+ ### Project / Package ###
17
+
18
+ require_relative './command_helper'
19
+
20
+
21
+ # Namespace
22
+ # =======================================================================
23
+
24
+ module YARD
25
+ module CLI
26
+ class LinkStdlib < Command
27
+
28
+
29
+ # Definitions
30
+ # =======================================================================
31
+
32
+ # Hooks into {YARD::LinkStdlib::ObjectMap#grep} to search for names using
33
+ # regular expressions.
34
+ #
35
+ class Search < Command
36
+
37
+ include CommandHelper
38
+
39
+ DESCRIPTION = "Find stdlib names that match Regexp patterns"
40
+ USAGE = "yard stdlib search [OPTIONS] TERMS..."
41
+
42
+ def run *args
43
+ # Default format is `:plain`
44
+ opts[ :format ] = :plain
45
+
46
+ OptionParser.new { |op|
47
+ add_header op, <<~END
48
+ Examples:
49
+
50
+ 1. {Pathname} instance methods
51
+
52
+ $ yard stdlib search '^Pathname#'
53
+
54
+ 2. All `#to_s` methods
55
+
56
+ $ yard stdlib search '#to_s$'
57
+
58
+ 3. Print results in serialized formats.
59
+
60
+ All `#to_s` instance methods in JSON:
61
+
62
+ $ yard stdlib search --format=json '#to_s$'
63
+
64
+ Supports a short `-f` flag and first-letter formats too.
65
+
66
+ Instance methods of {Array} in YAML:
67
+
68
+ $ yard stdlib search -f y '^Array#'
69
+ END
70
+
71
+ add_version_opt op
72
+
73
+ op.on( '-u', '--urls',
74
+ %(Print doc URLs along with names)
75
+ ) { |urls| opts[ :urls ] = !!urls }
76
+
77
+ op.on( '-f FORMAT', '--format=FORMAT',
78
+ %(Specify print format: (p)lain, (j)son or (y)aml)
79
+ ) { |format|
80
+ opts[ :format ] = \
81
+ case format.downcase
82
+ when 'p', 'plain'
83
+ :plain
84
+ when 'j', 'json'
85
+ :json
86
+ when 'y', 'yaml'
87
+ :yaml
88
+ else
89
+ log.fatal \
90
+ %(Unknown format - expected "plain", "json" or "yaml"; ) +
91
+ %(given #{ format.inspect })
92
+ exit false
93
+ end
94
+ }
95
+
96
+ }.parse! args
97
+
98
+ if args.empty?
99
+ YARD::LinkStdlib::ObjectMap.
100
+ current.
101
+ names.
102
+ sort_by( &:downcase ).
103
+ each { |key| log.puts key }
104
+ exit true
105
+ end
106
+
107
+ terms = args.map { |arg|
108
+ begin
109
+ Regexp.new arg
110
+ rescue RegexpError => error
111
+ Regexp.new \
112
+ Regexp.escape( YARD::LinkStdlib.normalize_name( arg ) )
113
+ end
114
+ }
115
+
116
+ log.debug "Terms:\n " + terms.map( &:to_s ).join( "\n " )
117
+
118
+ names = YARD::LinkStdlib.grep *terms
119
+
120
+ results = \
121
+ if opts[ :urls ]
122
+ names.each_with_object( {} ) { |name, hash|
123
+ hash[ name ] = YARD::LinkStdlib::ObjectMap.current.url_for name
124
+ }
125
+ else
126
+ names
127
+ end
128
+
129
+ case opts[ :format ]
130
+ when :plain
131
+ results.each do |entry|
132
+ if entry.is_a? ::Array
133
+ log.puts "#{ entry[0] } <#{ entry[ 1 ]}>"
134
+ else
135
+ log.puts entry
136
+ end
137
+ end
138
+ when :json
139
+ require 'json'
140
+ log.puts JSON.pretty_generate( results )
141
+ when :yaml
142
+ require 'yaml'
143
+ log.puts YAML.dump( results )
144
+ end
145
+
146
+ exit true
147
+ end
148
+ end # class Search
149
+
150
+
151
+ # /Namespace
152
+ # =======================================================================
153
+
154
+ end # class LinkStdlib
155
+ end # module CLI
156
+ end # module YARD
@@ -0,0 +1,65 @@
1
+ # encoding: UTF-8
2
+ # frozen_string_literal: true
3
+
4
+ # Requirements
5
+ # =======================================================================
6
+
7
+ ### Stdlib ###
8
+
9
+ require 'optparse'
10
+
11
+ ### Deps ###
12
+
13
+ # We need {YARD::CLI::Command}
14
+ require 'yard'
15
+
16
+ ### Project / Package ###
17
+
18
+ require_relative './command_helper'
19
+
20
+
21
+ # Namespace
22
+ # =======================================================================
23
+
24
+ module YARD
25
+ module CLI
26
+ class LinkStdlib < Command
27
+
28
+
29
+ # Definitions
30
+ # =======================================================================
31
+
32
+ class URL < Command
33
+
34
+ include CommandHelper
35
+
36
+ DESCRIPTION = "Print the online doc URL for a stdlib name"
37
+ USAGE = "yard stdlib url [OPTIONS] NAME"
38
+
39
+ def run *args
40
+ OptionParser.new { |op|
41
+ add_header op
42
+ add_version_opt op
43
+ }.parse! args
44
+
45
+ name = check_args! args, 1
46
+
47
+ url = YARD::LinkStdlib::ObjectMap.current.url_for name
48
+
49
+ if url.nil?
50
+ $stderr.puts "Name not found: #{ name.inspect }"
51
+ exit false
52
+ end
53
+
54
+ puts url
55
+ exit true
56
+ end
57
+ end
58
+
59
+
60
+ # /Namespace
61
+ # =======================================================================
62
+
63
+ end # class LinkStdlib
64
+ end # module CLI
65
+ end # module YARD
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yard-link_stdlib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - nrser
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-20 00:00:00.000000000 Z
11
+ date: 2019-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yard
@@ -167,6 +167,12 @@ files:
167
167
  - bin/make_map.rb
168
168
  - lib/yard-link_stdlib.rb
169
169
  - lib/yard/cli/link_stdlib.rb
170
+ - lib/yard/cli/link_stdlib/add.rb
171
+ - lib/yard/cli/link_stdlib/command_helper.rb
172
+ - lib/yard/cli/link_stdlib/help.rb
173
+ - lib/yard/cli/link_stdlib/list.rb
174
+ - lib/yard/cli/link_stdlib/search.rb
175
+ - lib/yard/cli/link_stdlib/url.rb
170
176
  - lib/yard/link_stdlib.rb
171
177
  - lib/yard/link_stdlib/html_helper.rb
172
178
  - lib/yard/link_stdlib/object_map.rb