diff options
author | Lee Jarvis <lee@jarvis.co> | 2012-01-16 16:09:57 +0000 |
---|---|---|
committer | Lee Jarvis <lee@jarvis.co> | 2012-01-16 16:09:57 +0000 |
commit | 8f5f566fc72e161d2e8b10a8de4c9f0e91b0d6f2 (patch) | |
tree | cc4e5f208c14fdc0846546c0769a0d5bbe7e8c71 /README.md | |
parent | b56df026407e66c340126f45feb7d283a0bdd25f (diff) | |
download | slop-8f5f566fc72e161d2e8b10a8de4c9f0e91b0d6f2.tar.gz |
scrubbed readme for rewrite
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 227 |
1 files changed, 22 insertions, 205 deletions
@@ -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 |