slop 1.6.0 → 1.6.1

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.
data/.gitignore CHANGED
@@ -3,3 +3,4 @@
3
3
  doc
4
4
  *.swp
5
5
  *.gem
6
+ *.rbc
data/CHANGES.md CHANGED
@@ -1,3 +1,9 @@
1
+ 1.6.1 (2011-06-01)
2
+ ------------------
3
+
4
+ * Fix tests and using a temporary Array for ARGV, fixes RubyGems Test issues
5
+ * General cleanup of code
6
+
1
7
  1.6.0 (2011-05-18)
2
8
  ------------------
3
9
 
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010 Lee Jarvis
1
+ Copyright (c) 2011 Lee Jarvis
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -20,10 +20,10 @@ Usage
20
20
  -----
21
21
  # parse assumes ARGV, otherwise you can pass it your own Array
22
22
  opts = Slop.parse do
23
- on :v, :verbose, 'Enable verbose mode' # boolean value
24
- on :n, :name, 'Your name', true # option requires a compulsory argument
25
- on :s, :sex, 'Your sex', :optional => false # the same thing
26
- on :a, :age, 'Your age', :optional => true # optional argument
23
+ on :v, :verbose, 'Enable verbose mode' # boolean value
24
+ on :n, :name, 'Your name', true # option requires a compulsory argument
25
+ on :s, :sex, 'Your sex', :optional => false # the same thing
26
+ on '-a', '--age', 'Your age', :optional => true # optional argument
27
27
  end
28
28
 
29
29
  # if ARGV is `-v --name 'lee jarvis' -s male`
@@ -37,25 +37,6 @@ You can also return your options as a Hash
37
37
 
38
38
  opts.to_hash #=> {'name' => 'Lee Jarvis', 'verbose' => true, 'age' => nil, 'sex' => 'male'}
39
39
 
40
- # Symbols
41
- opts.to_hash(true) #=> {:name => 'Lee Jarvis', :verbose => true, :age => nil, :sex => 'male'}
42
-
43
- If you don't like the method `on` (because it sounds like the option **expects**
44
- a block), you can use the `opt` or `option` alternatives.
45
-
46
- on :v, :verbose
47
- opt :v, :verbose
48
- option :v, :verbose
49
-
50
- If you don't like that Slop evaluates your block, or you want slop access
51
- inside of your block without referring to `self`, you can pass a block argument to
52
- `parse`.
53
-
54
- Slop.parse do |opts|
55
- opts.on :v, :verbose
56
- opts.on :n, :name, 'Your name', true
57
- end
58
-
59
40
  If you want some pretty output for the user to see your options, you can just
60
41
  send the Slop object to `puts` or use the `help` method.
61
42
 
@@ -170,7 +151,7 @@ Slop also allows you to prefix `--no-` to an option which will force the option
170
151
  to return a false value.
171
152
 
172
153
  opts = Slop.parse do
173
- on :v, :verbose, :default => true
154
+ on :v, :verbose, :default => true
174
155
  end
175
156
 
176
157
  # with no command line options
@@ -233,28 +214,6 @@ What would Slop be if it didn't know what ranges were?
233
214
  # ARGV is `--range 1..10` or 1-10, or 1,10 (yes Slop supports them all)
234
215
  opts[:range].to_a #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
235
216
 
236
- Ugh, Symbols
237
- ------------
238
-
239
- Fine, don't use them
240
-
241
- Slop.parse do
242
- on :n, :name, 'Your name'
243
- on 'n', 'name', 'Your name'
244
- on '-n', '--name', 'Your name'
245
- end
246
-
247
- All of these options will do the same thing
248
-
249
- Ugh, Blocks
250
- -----------
251
-
252
- C'mon man, this is Ruby, GTFO if you don't like blocks.
253
-
254
- opts = Slop.new
255
- opts.on :v, :verbose
256
- opts.parse
257
-
258
217
  Smart
259
218
  -----
260
219
 
@@ -284,37 +243,6 @@ when an invalid option is found (`false` by default):
284
243
  Slop.new(:strict => true).parse(%w/--foo/)
285
244
  # => Slop::InvalidOptionError: Unknown option -- 'foo'
286
245
 
287
- and it handles multiple invalid options with a sprinkling of pluralization:
288
-
289
- Slop.new(:strict => true).parse(%w/--foo --bar -z/)
290
- # => Slop::InvalidOptionError: Unknown options -- 'foo', 'bar', 'z'
291
-
292
- Significantly, however, Slop will still parse the valid options:
293
-
294
- slop = Slop.new(:strict => true, :help => true) do
295
- banner "Usage:\n\t./awesome_sauce [options]\n\nOptions:"
296
- on :n, :name, 'Your name'
297
- end
298
-
299
- begin
300
- slop.parse(%w/--foo --bar -z/)
301
- rescue Slop::InvalidOptionError => e
302
- puts "\n#{e.message}\n\n"
303
- puts slop
304
- exit
305
- end
306
-
307
- yields:
308
-
309
- Unknown options -- 'foo', 'bar', 'z'
310
-
311
- Usage:
312
- ./awesome_sauce [options]
313
-
314
- Options:
315
- -n, --name Your name
316
- -h, --help Print this help message
317
-
318
246
  Commands
319
247
  --------
320
248
 
@@ -347,11 +275,8 @@ Here's how commands might look:
347
275
  end
348
276
  end
349
277
 
350
- * Run with `run.rb -v`
351
- * Output: `version 1`
352
-
353
- * Run with: `run.rb clean -v`
354
- * Output: `Enabled verbose mode for clean`
278
+ * `run.rb -v #=> version 1`
279
+ * `run.rb clean -v #=> Enabled verbose mode for clean`
355
280
 
356
281
  Woah woah, why you hating on OptionParser?
357
282
  ------------------------------------------
@@ -370,7 +295,7 @@ gather a bunch of key/value options, usually you would do something like this:
370
295
  end
371
296
 
372
297
  opt.on('-a', '--age AGE', 'Your age') do |age|
373
- things[:age] = age
298
+ things[:age] = age.to_i
374
299
  end
375
300
 
376
301
  # you get the point
@@ -379,14 +304,14 @@ gather a bunch of key/value options, usually you would do something like this:
379
304
  opt.parse
380
305
  things #=> { :name => 'lee', :age => 105 }
381
306
 
382
- Which is all great and stuff, but it can lead to some repetition, the same
307
+ Which is all great and stuff, but it can lead to some repetition. The same
383
308
  thing in Slop:
384
309
 
385
310
  require 'slop'
386
311
 
387
312
  opts = Slop.parse do
388
313
  on :n, :name, 'Your name', true
389
- on :a, :age, 'Your age', true
314
+ on :a, :age, 'Your age', true, :as => :int
390
315
  end
391
316
 
392
317
  opts.to_hash(true) #=> { :name => 'lee', :age => 105 }
data/Rakefile CHANGED
@@ -3,4 +3,8 @@ task :test do
3
3
  Dir.glob("test/*_test.rb").each { |test| require "./#{test}" }
4
4
  end
5
5
 
6
+ task :test_all do
7
+ sh "rvm 1.8.7,jruby,rbx,1.9.2 exec rake test"
8
+ end
9
+
6
10
  task :default => :test
@@ -16,7 +16,7 @@ class Slop
16
16
  class InvalidOptionError < RuntimeError; end
17
17
 
18
18
  # @return [String] The current version string
19
- VERSION = '1.6.0'
19
+ VERSION = '1.6.1'
20
20
 
21
21
  # Parses the items from a CLI format into a friendly object.
22
22
  #
@@ -27,18 +27,17 @@ class Slop
27
27
  # on :n, :name, 'Your name'
28
28
  # on :a, :age, 'Your age'
29
29
  # end
30
- # -------
31
- # program.rb --verbose -n 'Emily' -a 25
32
30
  # @return [Slop] Returns an instance of Slop.
33
31
  def self.parse(items=ARGV, options={}, &block)
34
- initialize_and_parse(items, false, options, &block)
32
+ initialize_and_parse items, false, options, &block
35
33
  end
36
34
 
37
- # Identical to {Slop.parse}, but removes parsed options from the original Array.
35
+ # Identical to {Slop.parse}, but removes parsed options from the
36
+ # original Array.
38
37
  #
39
38
  # @return [Slop] Returns an instance of Slop.
40
39
  def self.parse!(items=ARGV, options={}, &block)
41
- initialize_and_parse(items, true, options, &block)
40
+ initialize_and_parse items, true, options, &block
42
41
  end
43
42
 
44
43
  # @return [Options]
@@ -73,9 +72,8 @@ class Slop
73
72
  # @option opts [Proc, #call] :on_noopts Trigger an event when no options
74
73
  # are found
75
74
  def initialize(*opts, &block)
76
- sloptions = {}
77
- sloptions.merge! opts.pop if opts.last.is_a? Hash
78
- sloptions[:banner] = opts.shift if opts[0].respond_to?(:to_str)
75
+ sloptions = opts.last.is_a?(Hash) ? opts.pop : {}
76
+ sloptions[:banner] = opts.shift if opts[0].respond_to? :to_str
79
77
  opts.each { |o| sloptions[o] = true }
80
78
 
81
79
  @options = Options.new
@@ -92,17 +90,14 @@ class Slop
92
90
  @on_noopts = sloptions[:on_noopts] || sloptions[:on_optionless]
93
91
  @sloptions = sloptions
94
92
 
95
- io = sloptions[:io] || $stderr
96
- eoh = true if sloptions[:exit_on_help].nil?
97
-
98
93
  if block_given?
99
94
  block.arity == 1 ? yield(self) : instance_eval(&block)
100
95
  end
101
96
 
102
97
  if sloptions[:help]
103
98
  on :h, :help, 'Print this help message', :tail => true do
104
- io.puts help
105
- exit if eoh
99
+ (sloptions[:io] || $stderr).puts help
100
+ exit unless sloptions[:exit_on_help] == false
106
101
  end
107
102
  end
108
103
  end
@@ -173,11 +168,10 @@ class Slop
173
168
  # end
174
169
  # @return [Slop::Option]
175
170
  def option(*args, &block)
176
- options = args.pop if args.last.is_a?(Hash)
177
- options ||= {}
171
+ options = args.last.is_a?(Hash) ? args.pop : {}
178
172
 
179
- short, long, desc, arg = clean_options(args)
180
- option = Option.new(self, short, long, desc, arg, options, &block)
173
+ short, long, desc, arg = clean_options args
174
+ option = Option.new self, short, long, desc, arg, options, &block
181
175
  @options << option
182
176
 
183
177
  option
@@ -205,8 +199,7 @@ class Slop
205
199
  raise ArgumentError, "command `#{label}` already exists"
206
200
  end
207
201
 
208
- options = @sloptions.merge(options)
209
- slop = Slop.new(options)
202
+ slop = Slop.new @sloptions.merge options
210
203
  @commands[label] = slop
211
204
 
212
205
  if block_given?
@@ -218,7 +211,7 @@ class Slop
218
211
 
219
212
  # Trigger an event when Slop has no values to parse
220
213
  #
221
- # @param [Object, nil] proc The object (which can be anything
214
+ # @param [Object, #call] obj The object (which can be anything
222
215
  # responding to `call`)
223
216
  # @example
224
217
  # Slop.parse do
@@ -232,7 +225,7 @@ class Slop
232
225
 
233
226
  # Trigger an event when the arguments contain no options
234
227
  #
235
- # @param [Object, nil] obj The object to be triggered (anything
228
+ # @param [Object, #call] obj The object to be triggered (anything
236
229
  # responding to `call`)
237
230
  # @example
238
231
  # Slop.parse do
@@ -253,19 +246,21 @@ class Slop
253
246
  # opts.to_hash(true) #=> { :name => 'Emily' }
254
247
  # @return [Hash]
255
248
  def to_hash(symbols=false)
256
- @options.to_hash(symbols)
249
+ @options.to_hash symbols
257
250
  end
258
251
  alias :to_h :to_hash
259
252
 
260
253
  # Allows you to check whether an option was specified in the parsed list.
254
+ # Merely sugar for `present?`
261
255
  #
262
256
  # @example
263
257
  # #== ruby foo.rb -v
264
258
  # opts.verbose? #=> true
265
259
  # opts.name? #=> false
266
- # @return [Boolean] Whether the desired option was specified.
260
+ # @see Slop#present?
261
+ # @return [Boolean] true if this option is present, false otherwise
267
262
  def method_missing(meth, *args, &block)
268
- super unless meth.to_s =~ /\?\z/
263
+ super unless meth.to_s[-1, 1] == '?'
269
264
  present? meth.to_s.chomp '?'
270
265
  end
271
266
 
@@ -274,7 +269,7 @@ class Slop
274
269
  #
275
270
  # @param [Object] The object name to check
276
271
  # @since 1.5.0
277
- # @return [Boolean] true if this option is present
272
+ # @return [Boolean] true if this option is present, false otherwise
278
273
  def present?(option_name)
279
274
  !!get(option_name)
280
275
  end
@@ -323,10 +318,10 @@ class Slop
323
318
  elsif !items.any? {|i| i.to_s[/\A--?/] } && @on_noopts.respond_to?(:call)
324
319
  @on_noopts.call self
325
320
  return items
321
+ elsif execute_command(items, delete)
322
+ return items
326
323
  end
327
324
 
328
- return if execute_command(items, delete)
329
-
330
325
  trash = []
331
326
 
332
327
  items.each_with_index do |item, index|
@@ -358,7 +353,7 @@ class Slop
358
353
  option.call unless option.omit_exec?(items)
359
354
  end
360
355
  else
361
- check_invalid_option!(item, flag)
356
+ @invalid_options << flag if item[/\A--?/] && @strict
362
357
  block.call(item) if block_given? && !trash.include?(index)
363
358
  end
364
359
  end
@@ -370,15 +365,13 @@ class Slop
370
365
 
371
366
  def check_valid_argument!(option, argument)
372
367
  if !option.accepts_optional_argument? && flag?(argument)
373
- raise MissingArgumentError,
374
- "'#{option.key}' expects an argument, none given"
368
+ raise MissingArgumentError, "'#{option.key}' expects an argument, none given"
375
369
  end
376
370
  end
377
371
 
378
372
  def check_matching_argument!(option, argument)
379
373
  if option.match && !argument.match(option.match)
380
- raise InvalidArgumentError,
381
- "'#{argument}' does not match #{option.match.inspect}"
374
+ raise InvalidArgumentError, "'#{argument}' does not match #{option.match.inspect}"
382
375
  end
383
376
  end
384
377
 
@@ -386,15 +379,10 @@ class Slop
386
379
  if option.accepts_optional_argument?
387
380
  option.call
388
381
  else
389
- raise MissingArgumentError,
390
- "'#{flag}' expects an argument, none given"
382
+ raise MissingArgumentError, "'#{flag}' expects an argument, none given"
391
383
  end
392
384
  end
393
385
 
394
- def check_invalid_option!(item, flag)
395
- @invalid_options << flag if item[/\A--?/] && @strict
396
- end
397
-
398
386
  def raise_if_invalid_options!
399
387
  return if !@strict || @invalid_options.empty?
400
388
  message = "Unknown option"
@@ -404,18 +392,15 @@ class Slop
404
392
  end
405
393
 
406
394
  def enable_multiple_switches(item)
407
- item[1..-1].split('').each do |switch|
395
+ item[1..-1].each_char do |switch|
408
396
  if option = @options[switch]
409
397
  if option.expects_argument?
410
- raise MissingArgumentError,
411
- "'-#{switch}' expects an argument, used in multiple_switch context"
398
+ raise MissingArgumentError, "'-#{switch}' expects an argument, used in multiple_switch context"
412
399
  else
413
400
  option.argument_value = true
414
401
  end
415
402
  else
416
- if @strict
417
- raise InvalidOptionError, "Unknown option '-#{switch}'"
418
- end
403
+ raise InvalidOptionError, "Unknown option '-#{switch}'" if @strict
419
404
  end
420
405
  end
421
406
  end
@@ -423,9 +408,7 @@ class Slop
423
408
  def extract_option(item, flag)
424
409
  if item[0, 1] == '-'
425
410
  option = @options[flag]
426
- if !option && @ignore_case
427
- option = @options[flag.downcase]
428
- end
411
+ option ||= @options[flag.downcase] if @ignore_case
429
412
  end
430
413
  unless option
431
414
  case item
@@ -437,8 +420,7 @@ class Slop
437
420
  option = @options[flag]
438
421
  end
439
422
  when /\A--([^=]+)=(.+)\z/
440
- option = @options[$1]
441
- argument = $2
423
+ option, argument = @options[$1], $2
442
424
  when /\A--no-(.+)\z/
443
425
  option = @options[$1]
444
426
  option.force_argument_value(false) if option
@@ -448,9 +430,8 @@ class Slop
448
430
  end
449
431
 
450
432
  def execute_command(items, delete)
451
- command = items[0]
452
- command = @commands.keys.find { |cmd| cmd.to_s == command.to_s }
453
- if @commands.key?(command)
433
+ command = @commands.keys.find { |cmd| cmd.to_s == items[0].to_s }
434
+ if command
454
435
  items.shift
455
436
  opts = @commands[command]
456
437
  delete ? opts.parse!(items) : opts.parse(items)
@@ -470,7 +451,7 @@ class Slop
470
451
  end
471
452
 
472
453
  long = args.first
473
- boolean = [true, false].include?(long)
454
+ boolean = [true, false].include? long
474
455
  if !boolean && long.to_s =~ /\A(?:--?)?[a-zA-Z][a-zA-Z0-9_-]+\z/
475
456
  options.push args.shift.to_s.sub(/\A--?/, '')
476
457
  else
@@ -482,6 +463,6 @@ class Slop
482
463
  end
483
464
 
484
465
  def flag?(str)
485
- str =~ /\A--?[a-zA-Z][a-zA-Z0-9_-]+\z/
466
+ str =~ /\A--?[a-zA-Z][a-zA-Z0-9_-]*\z/
486
467
  end
487
468
  end
@@ -32,10 +32,6 @@ class Slop
32
32
  # @return [Integer] The amount of times this option has been invoked
33
33
  attr_accessor :count
34
34
 
35
- # @return [Object] Omit execution of this Options block or callback if
36
- # this object exists in the Array of items passed to `Slop.new`
37
- attr_accessor :unless
38
-
39
35
  # @param [Slop] slop
40
36
  # @param [String, #to_s] short
41
37
  # @param [String, #to_s] long
@@ -51,24 +47,20 @@ class Slop
51
47
  # @option options [Boolean] :tail (false)
52
48
  # @option options [Regexp] :match
53
49
  # @option options [String, #to_s] :unless
54
- # @option options [Boolean, String] :help
55
- def initialize(slop, short, long, description, argument, options={}, &blk)
50
+ # @option options [Boolean, String] :help (true)
51
+ def initialize(slop, short, long, description, argument, options, &blk)
56
52
  @slop = slop
57
53
  @short_flag = short
58
54
  @long_flag = long
59
55
  @description = description
56
+ @argument = argument
60
57
  @options = options
61
58
 
62
- @expects_argument = argument
63
- @expects_argument = true if options[:optional] == false
64
-
65
59
  @tail = options[:tail]
66
60
  @match = options[:match]
67
- @delimiter = options[:delimiter] || ','
68
- @limit = options[:limit] || 0
69
- @unless = options[:unless]
70
- @help = options[:help]
71
- @help = true if @help.nil?
61
+ @delimiter = options.fetch(:delimiter, ',')
62
+ @limit = options.fetch(:limit, 0)
63
+ @help = options.fetch(:help, true)
72
64
 
73
65
  @forced = false
74
66
  @argument_value = nil
@@ -82,7 +74,7 @@ class Slop
82
74
 
83
75
  # @return [Boolean] true if this option expects an argument
84
76
  def expects_argument?
85
- @expects_argument || @options[:argument]
77
+ @argument || @options[:argument] || @options[:optional] == false
86
78
  end
87
79
 
88
80
  # @return [Boolean] true if this option accepts an optional argument
@@ -103,14 +95,12 @@ class Slop
103
95
  return if value.nil?
104
96
 
105
97
  case @options[:as].to_s.downcase
106
- when 'array'
107
- value.split @delimiter, @limit
108
- when 'range'
109
- value_to_range value
98
+ when 'array'; value.split @delimiter, @limit
99
+ when 'range'; value_to_range value
100
+ when 'float'; value.to_s.to_f
110
101
  when 'string', 'str'; value.to_s
111
102
  when 'symbol', 'sym'; value.to_s.to_sym
112
103
  when 'integer', 'int'; value.to_s.to_i
113
- when 'float'; value.to_s.to_f
114
104
  else
115
105
  value
116
106
  end
@@ -136,7 +126,7 @@ class Slop
136
126
  # @return [Boolean] true if this options `:unless` argument exists
137
127
  # inside *items*
138
128
  def omit_exec?(items)
139
- string = @unless.to_s.sub(/\A--?/, '')
129
+ string = @options[:unless].to_s.sub(/\A--?/, '')
140
130
  items.any? { |i| i.to_s.sub(/\A--?/, '') == string }
141
131
  end
142
132
 
@@ -158,11 +148,9 @@ class Slop
158
148
  size = @long_flag.size
159
149
  end
160
150
  diff = @slop.longest_flag - size
161
- spaces = " " * (diff + 6)
162
- out += spaces
151
+ out += " " * (diff + 6)
163
152
  else
164
- spaces = " " * (@slop.longest_flag + 8)
165
- out += spaces
153
+ out += " " * (@slop.longest_flag + 8)
166
154
  end
167
155
 
168
156
  "#{out}#{@description}"
@@ -2,6 +2,7 @@ class Slop
2
2
  class Options < Array
3
3
 
4
4
  # @param [Boolean] symbols true to cast hash keys to symbols
5
+ # @see Slop#to_hash
5
6
  # @return [Hash]
6
7
  def to_hash(symbols)
7
8
  reduce({}) do |hsh, option|
@@ -12,7 +13,13 @@ class Slop
12
13
  end
13
14
  end
14
15
 
15
- # Fetch an Option object
16
+ # Fetch an Option object. This method overrides Array#[] to provide
17
+ # a nicer interface for fetching options via their short or long flag.
18
+ # The reason we don't use a Hash here is because an option cannot be
19
+ # identified by a single label. Instead this method tests against
20
+ # a short flag first, followed by a long flag. When passing this
21
+ # method an Integer, it will work as an Array usually would, fetching
22
+ # the Slop::Option at this index.
16
23
  #
17
24
  # @param [Object] flag The short/long flag representing the option
18
25
  # @example
@@ -21,12 +28,11 @@ class Slop
21
28
  # opts.options[:v].description #=> "Verbose mode"
22
29
  # @return [Option] the option assoiated with this flag
23
30
  def [](flag)
24
- if flag.is_a?(Integer)
25
- slice flag
31
+ if flag.is_a? Integer
32
+ super
26
33
  else
27
- item = flag.to_s
28
34
  find do |option|
29
- option.short_flag == item || option.long_flag == item
35
+ [option.short_flag, option.long_flag].include? flag.to_s
30
36
  end
31
37
  end
32
38
  end
@@ -4,6 +4,7 @@ unless Object.const_defined? 'Slop'
4
4
  end
5
5
 
6
6
  require 'minitest/autorun'
7
+ require 'stringio'
7
8
 
8
9
  begin
9
10
  require 'turn'
@@ -59,7 +59,10 @@ class SlopTest < TestCase
59
59
  end
60
60
 
61
61
  assert_equal 'foo', item1
62
- assert_equal [], Slop.new { on_empty {} }.parse
62
+
63
+ temp_argv([]) do
64
+ assert_equal [], Slop.new { on_empty {} }.parse
65
+ end
63
66
  end
64
67
 
65
68
  test 'callback when arguments contain no options' do
@@ -356,7 +359,6 @@ class SlopTest < TestCase
356
359
  end
357
360
 
358
361
  test 'custom IO object' do
359
- require 'stringio'
360
362
  io = StringIO.new
361
363
  slop = Slop.new(:help => true, :io => io)
362
364
  slop.on :f, :foo, 'something fooey'
@@ -368,7 +370,6 @@ class SlopTest < TestCase
368
370
  end
369
371
 
370
372
  test 'exiting when using :help option' do
371
- require 'stringio'
372
373
  io = StringIO.new
373
374
  opts = Slop.new(:help => true, :io => io)
374
375
  assert_raises(SystemExit) { opts.parse %w/--help/ }
metadata CHANGED
@@ -1,8 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slop
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 13
4
5
  prerelease:
5
- version: 1.6.0
6
+ segments:
7
+ - 1
8
+ - 6
9
+ - 1
10
+ version: 1.6.1
6
11
  platform: ruby
7
12
  authors:
8
13
  - Lee Jarvis
@@ -10,7 +15,7 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-05-18 00:00:00 +01:00
18
+ date: 2011-06-01 00:00:00 +01:00
14
19
  default_executable:
15
20
  dependencies: []
16
21
 
@@ -52,17 +57,23 @@ required_ruby_version: !ruby/object:Gem::Requirement
52
57
  requirements:
53
58
  - - ">="
54
59
  - !ruby/object:Gem::Version
60
+ hash: 3
61
+ segments:
62
+ - 0
55
63
  version: "0"
56
64
  required_rubygems_version: !ruby/object:Gem::Requirement
57
65
  none: false
58
66
  requirements:
59
67
  - - ">="
60
68
  - !ruby/object:Gem::Version
69
+ hash: 3
70
+ segments:
71
+ - 0
61
72
  version: "0"
62
73
  requirements: []
63
74
 
64
75
  rubyforge_project:
65
- rubygems_version: 1.6.2
76
+ rubygems_version: 1.6.0
66
77
  signing_key:
67
78
  specification_version: 3
68
79
  summary: Option gathering made easy