optparse-defaults 0.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.
@@ -0,0 +1,17 @@
1
+ = OptionParser::Defaults
2
+
3
+ Adds support for default options to the stdlib's OptionParser.
4
+
5
+ Default options are parsed before any given command-line options, and they're
6
+ also added to the bottom of the help message.
7
+
8
+ == Usage
9
+
10
+ parser = OptionParser.with_defaults do |opts|
11
+ opts.defaults = %w(--foo --no-bar --baz=42)
12
+ # ... and so on ...
13
+ end
14
+
15
+ parser.order(ARGV)
16
+
17
+
@@ -0,0 +1,43 @@
1
+ require 'optparse'
2
+
3
+ class OptionParser
4
+ module Defaults
5
+ VERSION = '0.1.0'
6
+
7
+ def defaults=(defaults)
8
+ @defaults = defaults.extend(Arguments)
9
+ end
10
+
11
+ # Note that it's important to use #order rather than #permute, to ensure
12
+ # that the given options have a chance to override the defaults. (These are
13
+ # <tt>POSIX</tt>-ly correct semantics.)
14
+ def order(*args, &block)
15
+ super(*@defaults.followed_by(*args), &block)
16
+ rescue ParseError
17
+ abort($!)
18
+ end
19
+
20
+ def help
21
+ @defaults.help(super, summary_indent)
22
+ end
23
+
24
+ private
25
+
26
+ module Arguments #:nodoc:
27
+ def followed_by(*args)
28
+ dup.concat(args.flatten)
29
+ end
30
+
31
+ def help(before, indent)
32
+ "#{before}\nDefaults:\n#{indent}#{join ' '}"
33
+ end
34
+ end
35
+ end
36
+
37
+ def self.with_defaults(*args)
38
+ new(*args) do |instance|
39
+ instance.extend(Defaults)
40
+ yield instance if block_given?
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,38 @@
1
+ .\" generated with Ronn/v0.5
2
+ .\" http://github.com/rtomayko/ronn/
3
+ .
4
+ .TH "OPTPARSE\-DEFAULTS" "3" "June 2010" "Matthew Todd" "RubyGems Manual"
5
+ .
6
+ .SH "NAME"
7
+ \fBoptparse\-defaults\fR \-\- default options for Ruby's OptionParser
8
+ .
9
+ .SH "SYNOPSIS"
10
+ require 'optparse/defaults'
11
+ .
12
+ .P
13
+ options = OptionParser.with_defaults do |opts|
14
+ opts.defaults = %w(\-\-foo \-\-no\-bar)
15
+ .
16
+ .br
17
+ end
18
+ .
19
+ .P
20
+ options.order(ARGV)
21
+ .
22
+ .SH "DESCRIPTION"
23
+ \fBOptionParser.with_defaults()\fR extends Ruby's OptionParser with the ability to
24
+ handle default options.
25
+ .
26
+ .P
27
+ These options are applied before any given command\-line options, and they're
28
+ also displayed at the bottom of the help text.
29
+ .
30
+ .SH "AUTHOR"
31
+ Matthew Todd, \fImatthewtodd\fR on GitHub.
32
+ .
33
+ .SH "BUGS"
34
+ For POSIX\-correctness, it's important that you call \fBOptionParser#order\fR
35
+ instead of \fBOptionParser#permute\fR.
36
+ .
37
+ .SH "SEE ALSO"
38
+ ruby(1)
@@ -0,0 +1,33 @@
1
+ optparse-defaults(3) -- default options for Ruby's OptionParser
2
+ ===============================================================
3
+
4
+ ## SYNOPSIS
5
+
6
+ require 'optparse/defaults'
7
+
8
+ options = OptionParser.with_defaults do |opts|
9
+ opts.defaults = %w(--foo --no-bar)
10
+ end
11
+
12
+ options.order(ARGV)
13
+
14
+ ## DESCRIPTION
15
+
16
+ `OptionParser.with_defaults()` extends Ruby's OptionParser with the ability to
17
+ handle default options.
18
+
19
+ These options are applied before any given command-line options, and they're
20
+ also displayed at the bottom of the help text.
21
+
22
+ ## AUTHOR
23
+
24
+ Matthew Todd, [matthewtodd](http://github.com/matthewtodd) on GitHub.
25
+
26
+ ## BUGS
27
+
28
+ For POSIX-correctness, it's important that you call `OptionParser#order`
29
+ instead of `OptionParser#permute`.
30
+
31
+ ## SEE ALSO
32
+
33
+ ruby(1)
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: optparse-defaults
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Matthew Todd
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-06-18 00:00:00 +03:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ hash: 3
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ requirement: *id001
32
+ name: ronn
33
+ prerelease: false
34
+ type: :development
35
+ - !ruby/object:Gem::Dependency
36
+ version_requirements: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ hash: 3
42
+ segments:
43
+ - 0
44
+ version: "0"
45
+ requirement: *id002
46
+ name: shoe
47
+ prerelease: false
48
+ type: :development
49
+ description: |
50
+ Default options for the stdlib's OptionParser
51
+
52
+ email: matthew.todd@gmail.com
53
+ executables: []
54
+
55
+ extensions: []
56
+
57
+ extra_rdoc_files:
58
+ - README.rdoc
59
+ files:
60
+ - README.rdoc
61
+ - lib/optparse/defaults.rb
62
+ - man/optparse-defaults.3
63
+ - man/optparse-defaults.3.ronn
64
+ has_rdoc: true
65
+ homepage: http://github.com/matthewtodd/optparse-defaults
66
+ licenses: []
67
+
68
+ post_install_message:
69
+ rdoc_options:
70
+ - --main
71
+ - README.rdoc
72
+ - --title
73
+ - optparse-defaults-0.1.0
74
+ - --inline-source
75
+ - --webcvs
76
+ - http://github.com/matthewtodd/optparse-defaults/blob/v0.1.0/
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ hash: 3
85
+ segments:
86
+ - 0
87
+ version: "0"
88
+ required_rubygems_version: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ hash: 3
94
+ segments:
95
+ - 0
96
+ version: "0"
97
+ requirements: []
98
+
99
+ rubyforge_project:
100
+ rubygems_version: 1.3.7
101
+ signing_key:
102
+ specification_version: 3
103
+ summary: Default options for the stdlib's OptionParser
104
+ test_files: []
105
+