README.md in raph-0.0.2 vs README.md in raph-0.0.3

- old
+ new

@@ -1,103 +1,102 @@ -# raph [![Gem Version](https://badge.fury.io/rb/raph.svg)](https://rubygems.org/gems/raph) [![Build Status](https://api.travis-ci.org/veelenga/raph.svg?branch=master)](https://travis-ci.org/veelenga/raph) - -![This is Raph](http://upload.wikimedia.org/wikipedia/en/5/58/TMNTRaphael2012.png) - -**R**uby **A**rgument **P**arsing for **H**umans - -Inspired by [args](https://github.com/kennethreitz/args) - -## Installation: - -`$ gem install raph` - - -## Usage: - -Here is application sample: - -```ruby -# sample.rb -require 'raph' - -puts "Arguments passed in: #{$raph.all}" -puts "Flags detected: #{$raph.flags}" -puts "Files detected: #{$raph.files}" -puts "Assignments detected: #{$raph.assignments}" -``` - -If you do not pass any arguments: - -```sh -$ ruby sample.rb -Arguments passed in: [] -Flags detected: [] -Files detected: [] -Assignments detected: [] -``` - -If you have few arguments passed: - -```sh -$ ruby sample.rb -v --flag1 --flag2 --formatter=simple --convert=true -Arguments passed in: ["-v", "--flag1", "--flag2", "--formatter=simple", "--convert=true"] -Flags detected: [:v, :flag1, :flag2] -Files detected: [] -Assignments detected: {:formatter=>"simple", :convert=>"true"} -``` - -And finnaly if you pass expanded arguments: - -```sh -$ ruby sample.rb -f spec/*.rb -Arguments passed in: ["-f", "spec/raph_spec.rb", "spec/spec_helper.rb"] -Flags detected: [:f] -Files detected: ["spec/raph_spec.rb", "spec/spec_helper.rb"] -Assignments detected: {} -``` - -## Advanced usage: - -You can use `raph` with custom parsers. For example: - -```ruby -require 'raph' - -include Raph - -class AnimalParser < BaseParser - ANIMALS = ['cat', 'dog', 'pig', 'bear', 'elephant'] - - def id - :animals - end - - def parse(args) - animals = [] - args.each do |arg| - animals << arg if ANIMALS.include? arg.strip.downcase - end - animals - end -end - -args = [ '--my-animals', 'cat', 'bird', 'dog', 'elephant' ] - -raph = Raph::Raph.new.tap do |r| - r.add_parser( AnimalParser.new ) - r.parse( args ) -end - -# Raph#animals attribute is added dynamically. -# It is defined by AnimalParser#id method. -puts "All: #{raph.all}" -puts "My animals: #{raph.animals}" - -#All: ["--my-animals", "cat", "bird", "dog", "elephant"] -#My animals: ["cat", "dog", "elephant"] - -``` - -## TODO: - - Grouped arguments parser. - - Not-files parser. - +# raph [![Gem Version](https://badge.fury.io/rb/raph.svg)](https://rubygems.org/gems/raph) [![Build Status](https://api.travis-ci.org/veelenga/raph.svg?branch=master)](https://travis-ci.org/veelenga/raph) + +![This is Raph](http://upload.wikimedia.org/wikipedia/en/5/58/TMNTRaphael2012.png) + +**R**uby **A**rgument **P**arsing for **H**umans + +Inspired by [args](https://github.com/kennethreitz/args) + +## Installation: + +`$ gem install raph` + + +## Usage: + +Here is application sample: + +```ruby +# sample.rb +require 'raph' + +puts "Arguments passed in: #{$raph.all}" +puts "Flags detected: #{$raph.flags}" +puts "Files detected: #{$raph.files}" +puts "Assignments detected: #{$raph.assignments}" +puts "Grouped arguments: #{$raph.grouped_args}" +``` + +If you do not pass any arguments: + +```sh +$ ruby sample.rb +Arguments passed in: [] +Flags detected: [] +Files detected: [] +Assignments detected: {} +Grouped arguments: {} +``` + +If you have few arguments passed: + +```sh +$ ruby sample.rb -v 1 2 3 --flag1 3 --flag2 --formatter=simple true +Arguments passed in: ["-v", "1", "2", "3", "--flag1", "3", "--flag2", "--formatter=simple", "true"] +Flags detected: [:v, :flag1, :flag2] +Files detected: [] +Assignments detected: {:formatter=>"simple"} +Grouped arguments: {:v=>["1", "2", "3"], :flag1=>["3"], :flag2=>[], :"formatter=simple"=>["true"]} +``` + +And finnaly if you pass expanded arguments: + +```sh +$ ruby sample.rb -f spec/*.rb +Arguments passed in: ["-f", "spec/raph_spec.rb", "spec/spec_helper.rb"] +Flags detected: [:f] +Files detected: ["spec/raph_spec.rb", "spec/spec_helper.rb"] +Assignments detected: {} +Grouped arguments: {:f=>["spec/raph_spec.rb", "spec/spec_helper.rb"]} +``` + +## Advanced usage: + +You can use `raph` with custom parsers. For example: + +```ruby +require 'raph' + +include Raph + +class AnimalParser < BaseParser + ANIMALS = ['cat', 'dog', 'pig', 'bear', 'elephant'] + + def id + :animals + end + + def parse(args) + animals = [] + args.each do |arg| + animals << arg if ANIMALS.include? arg.strip.downcase + end + animals + end +end + +args = [ '--my-animals', 'cat', 'bird', 'dog', 'elephant' ] + +raph = Raph::Raph.new.tap do |r| + r.add_parser( AnimalParser.new ) + r.parse( args ) +end + +# Raph#animals attribute is added dynamically. +# It is defined by AnimalParser#id method. +puts "All: #{raph.all}" +puts "My animals: #{raph.animals}" + +#All: ["--my-animals", "cat", "bird", "dog", "elephant"] +#My animals: ["cat", "dog", "elephant"] + +```