summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorLee Jarvis <lee@jarvis.co>2012-01-16 16:09:57 +0000
committerLee Jarvis <lee@jarvis.co>2012-01-16 16:09:57 +0000
commit8f5f566fc72e161d2e8b10a8de4c9f0e91b0d6f2 (patch)
treecc4e5f208c14fdc0846546c0769a0d5bbe7e8c71 /README.md
parentb56df026407e66c340126f45feb7d283a0bdd25f (diff)
downloadslop-8f5f566fc72e161d2e8b10a8de4c9f0e91b0d6f2.tar.gz
scrubbed readme for rewrite
Diffstat (limited to 'README.md')
-rw-r--r--README.md227
1 files changed, 22 insertions, 205 deletions
diff --git a/README.md b/README.md
index 7d00047..6e5f19c 100644
--- a/README.md
+++ b/README.md
@@ -22,223 +22,40 @@ Usage
```ruby
# parse assumes ARGV, otherwise you can pass it your own Array
opts = Slop.parse do
- on :v, :verbose, 'Enable verbose mode' # A boolean option
- on :n, :name=, 'Your name' # This option requires an argument
- on :s, :sex, 'Your sex', true # So does this one
- on :a, :age, 'Your age', optional: true # This one accepts an optional argument
- on '-D', '--debug', 'Enable debug' # The prefixed -'s are optional
+ banner "ruby foo.rb [options]\n"
+ on :name=, 'Your name'
+ on :p, :password, 'Your password', :argument => :optional
+ on :v :verbose, 'Enable verbose mode'
end
-# if ARGV is `-v --name 'lee jarvis' -s male`
-opts.verbose? #=> true
-opts.name? #=> true
-opts[:name] #=> 'lee jarvis'
-opts.age? #=> false
-opts[:age] #=> nil
+# if ARGV is `--name Lee -v`
+opts.verbose? #=> true
+opts.password? #=> false
+opts[:name] #=> 'lee'
```
-For more information about creating options, see the
-[Creating Options](https://github.com/injekt/slop/wiki/Creating-Options)
-wiki page.
-
-You can also return your options as a Hash
-
-```ruby
-opts.to_hash #=> { :name => 'Lee Jarvis', :verbose => true, :age => nil, :sex => 'male' }
-```
-
-If you want some pretty output for the user to see your options, you can just
-send the Slop object to `puts` or use the `help` method.
-
-```ruby
-puts opts
-puts opts.help
-```
-
-Will output something like
-
-```
--v, --verbose Enable verbose mode
--n, --name Your name
--a, --age Your age
-```
-
-You can also add a banner using the `banner` method
-
-```ruby
-opts = Slop.parse do
- banner "Usage: foo.rb [options]"
-end
-```
-
-Helpful Help
-------------
-
-Long form:
-
-```ruby
-Slop.parse do
- ...
- on :h, :help, 'Print this help message', :tail => true do
- puts help
- exit
- end
-end
-```
-
-Shortcut:
-
-```ruby
-Slop.new :help => true
-# or
-Slop.new :help
-```
-
-Parsing
--------
-
-Slop's pretty good at parsing, let's take a look at what it'll extract for you
-
-```ruby
-Slop.parse(:multiple_switches => false) do
- on 's', 'server='
- on 'p', 'port=', :as => :integer
- on 'username=', :matches => /^[a-zA-Z]+$/
- on 'password='
-end
-```
-
-Now throw some options at it:
-
-```
--s ftp://foobar.com -p1234 --username=FooBar --password 'hello there'
-```
-
-Here's what we'll get back
-
-```
-{
- :server => "ftp://foobar.com",
- :port => 1234,
- :username => "FooBar",
- :password => "hello there"
-}
-```
-
-Events
-------
-
-If you'd like to trigger an event when an option is used, you can pass a
-block to your option. Here's how:
-
-```ruby
-Slop.parse do
- on :V, :version, 'Print the version' do
- puts 'Version 1.0.0'
- exit
- end
-end
-```
-
-Now when using the `--version` option on the command line, the trigger will
-be called and its contents executed.
-
-Yielding Non Options
---------------------
-
-If you pass a block to `Slop#parse`, Slop will yield non-options as
-they're found, just like
-[OptionParser](http://rubydoc.info/stdlib/optparse/1.9.2/OptionParser:order)
-does it.
-
-```ruby
-opts = Slop.new do
- on :n, :name, :optional => false
-end
-
-opts.parse do |arg|
- puts arg
-end
-
-# if ARGV is `foo --name Lee bar`
-foo
-bar
-```
-
-Negative Options
-----------------
-
-Slop also allows you to prefix `--no-` to an option which will force the option
-to return a false value.
+Slop supports several methods of writing options:
```ruby
-opts = Slop.parse do
- on :v, :verbose, :default => true
-end
-
-# with no command line options
-opts[:verbose] #=> true
+# These options all do the same thing
+on '-n', '--name', 'Your name', :argument => true
+on 'n', :name=, 'Your name'
+on :n, 'name=', 'Your name'
-# with `--no-verbose`
-opts[:verbose] #=> false
-opts.verbose? #=> false
+# As do these
+on 'p', 'password', 'Your password', :argument => :optional
+on :p, :password, 'Your password', :optional_argument => true
+on 'p', 'password=?', 'Your password'
```
-Short Switches
---------------
-
-Want to enable multiple switches at once like rsync does? By default Slop will
-parse `-abc` as the options `a` `b` and `c` and set their values to true. If
-you would like to disable this, you can pass `multiple_switches => false` to
-a new Slop object. In which case Slop will then parse `-fbar` as the option
-`f` with the argument value `bar`.
-
-```ruby
-Slop.parse do
- on :a, 'First switch'
- on :b, 'Second switch'
- on :c, 'Third switch'
-end
-
-# Using `-ac`
-opts[:a] #=> true
-opts[:b] #=> false
-opts[:c] #=> true
-
-Slop.parse(:multiple_switches => false) do
- on :a, 'Some switch', true
-end
-
-# Using `ahello`
-opts[:a] #=> 'hello'
-```
-
-Lists
------
-
-You can of course also parse lists into options. Here's how:
-
-```ruby
-opts = Slop.parse do
- opt :people, true, :as => Array
-end
-
-# ARGV is `--people lee,john,bill`
-opts[:people] #=> ['lee', 'john', 'bill']
-```
-
-Slop supports a few styles of list parsing. Check out
-[this wiki page](https://github.com/injekt/slop/wiki/Lists) for more info.
-
-Strict Mode
------------
+For more information about creating options, see the
+[Creating Options](https://github.com/injekt/slop/wiki/Creating-Options)
+wiki page.
-Passing `strict => true` to `Slop.parse` causes it to raise a `Slop::InvalidOptionError`
-when an invalid option is found (`false` by default):
+You can also return your options as a Hash
```ruby
-Slop.new(:strict => true).parse(%w/--foo/)
-# => Slop::InvalidOptionError: Unknown option -- 'foo'
+opts.to_hash #=> { :name => 'lee', :verbose => nil, :password => nil }
```
Features