micro-optparse 0.8.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
data/MIT-LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2011 Florian Pilz
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
4
+ this software and associated documentation files (the "Software"), to deal in
5
+ the Software without restriction, including without limitation the rights to
6
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7
+ of the Software, and to permit persons to whom the Software is furnished to do
8
+ so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,78 @@
1
+ µ-optparse
2
+ ==========
3
+
4
+ Why another command line parser?
5
+ --------------------------------
6
+
7
+ There are lots of command line parser out there, for example [trollop](http://trollop.rubyforge.org/) is a great alternative.
8
+ However, it is 800 lines long.
9
+ In addition, trollop sucks at validating the input.
10
+ So µ-optparse is for you if you are looking for
11
+
12
+ * a small command line parser to copy and paste it into your scripts to avoid injecting gem-dependencies
13
+ * a command line parser with powerful validations
14
+ * an easily usable, understandable and extendable command line parser
15
+ * a wrapper around optparse, which intelligently fills out most informations on its own
16
+
17
+ What is µ-optparse?
18
+ -------------------
19
+
20
+ µ-optparse is a small wrapper around [optparse](http://www.ruby-doc.org/stdlib/libdoc/optparse/rdoc/classes/OptionParser.html), weighing **less than 75 lines of code**.
21
+ optparse (or OptionParser) on the other hand is a command line parser, which ships with ruby.
22
+ After you defined available options, it automatically creates a help page and is able to parse ARGV accordingly.
23
+ However, optparse requires you to repeat yourself quite often, which leads to many lines of code, just to configure the available options.
24
+ µ-optparse removes this obstacle by extracting the information contained in few lines of configuration.
25
+ In addition, µ-optparse extends optparse by some **powerful validations**, which where inspired by [OptiFlag](http://optiflag.rubyforge.org/quick.html).
26
+
27
+ Talk in code!
28
+ -------------
29
+
30
+ require 'rubygems' # necessary for ruby v1.8.*
31
+ require 'micro-optparse'
32
+ options = Parser.new do |p|
33
+ p.banner = "This is a fancy script, for usage see below"
34
+ p.version = "fancy script 0.0 alpha"
35
+ p.option :severity, "set severity", :default => 4, :value_in_set => [4,5,6,7,8]
36
+ p.option :verbose, "enable verbose output"
37
+ p.option :mutation, "set mutation", :default => "MightyMutation", :value_matches => /Mutation/
38
+ p.option :plus_selection, "use plus-selection if set", :default => true
39
+ p.option :selection, "selection used", :default => "BestSelection", :short => "l"
40
+ p.option :chance, "set mutation chance", :default => 0.8, :value_satisfies => lambda {|x| x >= 0.0 && x <= 1.0}
41
+ end.process!
42
+
43
+ What this piece of code does is the following:
44
+
45
+ * it creates a help message and help options, with the banner above the options
46
+ * it creates a version option, which displays the given text
47
+ * it creates a long accessor for each option, according to the symbol - for example `"--verbose"` for `:verbose`
48
+ * it crease a short accessor, which is the first character of the long accessor (automatically resolves duplicates)
49
+ * it checks if the class of the input and the default value match
50
+ * it creates a switch, if no default value exist or the default value is `true` or `false`
51
+ * when value\_in\_set is given, it validates if the input value is in the given array
52
+ * when value_matches is given, it validates if the input value matches the regular expression
53
+ * when value_satisfies is given, it validates if the lamda or Proc evaluates to `true`, when fed with the input value
54
+ * it stores all parsed arguments and default values in the options hash, i.e. to access the value of `:mutation` in your script, write `options[:mutation]`
55
+
56
+ The automatically generated help message looks like this:
57
+
58
+ This is a fancy script, for usage see below
59
+ -s, --severity 4 set severity
60
+ -v, --[no-]verbose enable verbose output
61
+ -m, --mutation MightyMutation set mutation
62
+ -p, --[no-]plus-selection use plus-selection if set
63
+ -l, --selection BestSelection selection used
64
+ -c, --chance 0.8 set mutation chance
65
+ -h, --help Show this message
66
+ -V, --version Print version
67
+
68
+ Where do I get &micro;-optparse?
69
+ --------------------------
70
+
71
+ You can either go and install the gem via `gem install micro-optparse` or grab it from [github](https://github.com/florianpilz/micro-optparse/blob/master/lib/micro-optparse/parser.rb) and paste it into your script.
72
+ If you choose the latter option, you may delete the `validate`-method to spare another 15 lines of code.
73
+
74
+ If you want to contribute, you can fork the [github repository](https://github.com/florianpilz/micro-optparse), make your changes and send me a pull request.
75
+ However, improvements must be one of the following:
76
+
77
+ * use fewer lines of code, without sacrificing readablity or functionality
78
+ * enhance readablity or functionality, without increasing the lines of code
@@ -1,5 +1,5 @@
1
1
  module Micro
2
2
  module Optparse
3
- VERSION = "0.8.1"
3
+ VERSION = "0.8.2"
4
4
  end
5
5
  end
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.authors = ["Florian Pilz"]
10
10
  s.email = ["fpilz87@googlemail.com"]
11
- s.homepage = ""
11
+ s.homepage = "http://florianpilz.github.com/micro-optparse/"
12
12
  s.summary = %q{A very small wrapper around optparse.}
13
13
  s.description = %q{This gem wraps all the functionality of optparse into an easy to use, clear and short syntax. In addtion, strong validations are added. You can either use this gem as a lightweight alternative to trollop or copy all its 75 lines into your script to have an command-line parser without injecting a gem dependency.}
14
14
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: micro-optparse
3
3
  version: !ruby/object:Gem::Version
4
- hash: 61
4
+ hash: 59
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 8
9
- - 1
10
- version: 0.8.1
9
+ - 2
10
+ version: 0.8.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Florian Pilz
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-26 00:00:00 +01:00
18
+ date: 2011-02-27 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -31,13 +31,15 @@ extra_rdoc_files: []
31
31
  files:
32
32
  - .gitignore
33
33
  - Gemfile
34
+ - MIT-LICENSE
35
+ - README.md
34
36
  - Rakefile
35
37
  - lib/micro-optparse.rb
36
38
  - lib/micro-optparse/parser.rb
37
39
  - lib/micro-optparse/version.rb
38
40
  - micro-optparse.gemspec
39
41
  has_rdoc: true
40
- homepage: ""
42
+ homepage: http://florianpilz.github.com/micro-optparse/
41
43
  licenses:
42
44
  - MIT
43
45
  post_install_message: