yard-link_stdlib 0.1.1 → 0.1.2

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 (4) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/lib/yard/cli/link_stdlib.rb +61 -11
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7966efdc84cb97c6137cbb70585abb20633f388b
4
- data.tar.gz: bcdc1e6b09e76868433f0a3165a69fa1972d940b
3
+ metadata.gz: 35b7b23700c4d77f2a017aa1881974617980d255
4
+ data.tar.gz: 475ee0d06dfc6d358398e59eb6a80bccc09b8e8c
5
5
  SHA512:
6
- metadata.gz: 58df15ecd9f973b793b7578c3b8bc566de595f8cd1c6de7d80d11ef613e8f562fde34d2808361c8471e105d5ae05e4dd80c8a80e58608ce1463d4209d9ab1d94
7
- data.tar.gz: 81249ca138789654b2027bd81ff9936499da5baaef927a17cafc833d91de661fc1b08164daf0cb8d3ecba2af0f7f4a34755d75f33304e31eccb4dc0531efb1fb
6
+ metadata.gz: 9b2b26d8c1f3facd41e9b171d48138672a2cd8db0b166faf099ebafb3fffb2cae93150b9947f2a8660e195285b3d10e7fb86f062fc4a221fcf18ff51a5086809
7
+ data.tar.gz: ea374fb3df62ffcac1e5af88277bd7f96af1b0d8c9df342e801a84f67862a0895671f2e53f309c13f112a4944e3f9883f5a1f784afd4052ef0206bf36ded7fe5
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
@@ -230,24 +230,58 @@ class LinkStdlib < Command
230
230
  USAGE = "yard stdlib search [OPTIONS] TERMS..."
231
231
 
232
232
  def run *args
233
+ # Default format is `:plain`
234
+ opts[ :format ] = :plain
235
+
233
236
  OptionParser.new { |op|
234
237
  add_header op, <<~END
235
238
  Examples:
236
239
 
237
240
  1. {Pathname} instance methods
238
241
 
239
- yard stdlib search '^Pathname#'
242
+ $ yard stdlib search '^Pathname#'
240
243
 
241
- 2. All `#to_s` methods
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.
242
255
 
243
- yard stdlib search '#to_s$'
256
+ Instance methods of {Array} in YAML:
257
+
258
+ $ yard stdlib search -f y '^Array#'
244
259
  END
245
260
 
246
261
  add_version_opt op
247
262
 
248
263
  op.on( '-u', '--urls',
249
264
  %(Print doc URLs along with names)
250
- ) { |urls| opts[ :urls ] = urls }
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
+ }
251
285
 
252
286
  }.parse! args
253
287
 
@@ -266,15 +300,31 @@ class LinkStdlib < Command
266
300
 
267
301
  names = YARD::LinkStdlib.grep *terms
268
302
 
269
- names.each { |name|
270
- line = \
271
- if opts[ :urls ]
272
- "#{ name } <#{ YARD::LinkStdlib::ObjectMap.current.url_for name }>"
303
+ results = \
304
+ if opts[ :urls ]
305
+ names.each_with_object( {} ) { |name, hash|
306
+ hash[ name ] = YARD::LinkStdlib::ObjectMap.current.url_for name
307
+ }
308
+ else
309
+ names
310
+ end
311
+
312
+ case opts[ :format ]
313
+ when :plain
314
+ results.each do |entry|
315
+ if entry.is_a? ::Array
316
+ log.puts "#{ entry[0] } <#{ entry[ 1 ]}>"
273
317
  else
274
- name
318
+ log.puts entry
275
319
  end
276
- log.puts line
277
- }
320
+ end
321
+ when :json
322
+ require 'json'
323
+ log.puts JSON.pretty_generate( results )
324
+ when :yaml
325
+ require 'yaml'
326
+ log.puts YAML.dump( results )
327
+ end
278
328
 
279
329
  exit true
280
330
  end
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.1
4
+ version: 0.1.2
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-10 00:00:00.000000000 Z
11
+ date: 2019-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yard