trollop 1.15 → 1.16
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.
- data/History.txt +5 -0
 - data/README.txt +1 -1
 - data/lib/trollop.rb +55 -22
 - data/release-script.txt +15 -0
 - data/test/test_trollop.rb +11 -9
 - metadata +28 -43
 - data/Manifest.txt +0 -7
 - data/Rakefile +0 -36
 
    
        data/History.txt
    CHANGED
    
    | 
         @@ -1,3 +1,8 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            == 1.16 / 2010-04-01
         
     | 
| 
      
 2 
     | 
    
         
            +
            * Add Trollop::with_standard_exception_handling method for easing the use of Parser directly.
         
     | 
| 
      
 3 
     | 
    
         
            +
            * Handle scientific notation in float arguments, thanks to Will Fitzgerald.
         
     | 
| 
      
 4 
     | 
    
         
            +
            * Drop hoe dependency.
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
       1 
6 
     | 
    
         
             
            == 1.15 / 2009-09-30
         
     | 
| 
       2 
7 
     | 
    
         
             
            * Don't raise an exception when out of short arguments (thanks to Rafael
         
     | 
| 
       3 
8 
     | 
    
         
             
              Sevilla for pointing out how dumb this behavior was).
         
     | 
    
        data/README.txt
    CHANGED
    
    | 
         @@ -4,7 +4,7 @@ by William Morgan (http://masanjin.net/) 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            Main page: http://trollop.rubyforge.org
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
            Release announcements and comments: http://all-thing.net/ 
     | 
| 
      
 7 
     | 
    
         
            +
            Release announcements and comments: http://all-thing.net/label/trollop
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            Documentation quickstart: See Trollop::options (for some reason rdoc isn't
         
     | 
| 
       10 
10 
     | 
    
         
             
            linking that; it's in the top right of the screen if you're browsing online)
         
     | 
    
        data/lib/trollop.rb
    CHANGED
    
    | 
         @@ -1,13 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ## lib/trollop.rb -- trollop command-line processing library
         
     | 
| 
       2 
2 
     | 
    
         
             
            ## Author::    William Morgan (mailto: wmorgan-trollop@masanjin.net)
         
     | 
| 
       3 
3 
     | 
    
         
             
            ## Copyright:: Copyright 2007 William Morgan
         
     | 
| 
       4 
     | 
    
         
            -
            ## License::    
     | 
| 
      
 4 
     | 
    
         
            +
            ## License::   the same terms as ruby itself
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            require 'date'
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            module Trollop
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
            VERSION = "1. 
     | 
| 
      
 10 
     | 
    
         
            +
            VERSION = "1.16"
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
            ## Thrown by Parser in the event of a commandline error. Not needed if
         
     | 
| 
       13 
13 
     | 
    
         
             
            ## you're using the Trollop::options entry.
         
     | 
| 
         @@ -22,7 +22,7 @@ class HelpNeeded < StandardError; end 
     | 
|
| 
       22 
22 
     | 
    
         
             
            class VersionNeeded < StandardError; end
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
            ## Regex for floating point numbers
         
     | 
| 
       25 
     | 
    
         
            -
            FLOAT_RE = /^-?((\d+(\.\d+)?)|(\.\d+)) 
     | 
| 
      
 25 
     | 
    
         
            +
            FLOAT_RE = /^-?((\d+(\.\d+)?)|(\.\d+))([eE][-+]?[\d]+)?$/
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
            ## Regex for parameters
         
     | 
| 
       28 
28 
     | 
    
         
             
            PARAM_RE = /^-(-|\.$|[^\d\.])/
         
     | 
| 
         @@ -32,9 +32,10 @@ PARAM_RE = /^-(-|\.$|[^\d\.])/ 
     | 
|
| 
       32 
32 
     | 
    
         
             
            ## #opt, #banner and #version, #depends, and #conflicts methods will
         
     | 
| 
       33 
33 
     | 
    
         
             
            ## typically be called.
         
     | 
| 
       34 
34 
     | 
    
         
             
            ##
         
     | 
| 
       35 
     | 
    
         
            -
            ## If  
     | 
| 
       36 
     | 
    
         
            -
            ## argument-parsing  
     | 
| 
       37 
     | 
    
         
            -
            ##  
     | 
| 
      
 35 
     | 
    
         
            +
            ## If you want to instantiate this class yourself (for more complicated
         
     | 
| 
      
 36 
     | 
    
         
            +
            ## argument-parsing logic), call #parse to actually produce the output hash,
         
     | 
| 
      
 37 
     | 
    
         
            +
            ## and consider calling it from within
         
     | 
| 
      
 38 
     | 
    
         
            +
            ## Trollop::with_standard_exception_handling.
         
     | 
| 
       38 
39 
     | 
    
         
             
            class Parser
         
     | 
| 
       39 
40 
     | 
    
         | 
| 
       40 
41 
     | 
    
         
             
              ## The set of values that indicate a flag option when passed as the
         
     | 
| 
         @@ -277,7 +278,10 @@ class Parser 
     | 
|
| 
       277 
278 
     | 
    
         
             
                @stop_on_unknown = true
         
     | 
| 
       278 
279 
     | 
    
         
             
              end
         
     | 
| 
       279 
280 
     | 
    
         | 
| 
       280 
     | 
    
         
            -
              ## Parses the commandline. Typically called by Trollop::options 
     | 
| 
      
 281 
     | 
    
         
            +
              ## Parses the commandline. Typically called by Trollop::options,
         
     | 
| 
      
 282 
     | 
    
         
            +
              ## but you can call it directly if you need more control.
         
     | 
| 
      
 283 
     | 
    
         
            +
              ##
         
     | 
| 
      
 284 
     | 
    
         
            +
              ## throws CommandlineError, HelpNeeded, and VersionNeeded exceptions.
         
     | 
| 
       281 
285 
     | 
    
         
             
              def parse cmdline=ARGV
         
     | 
| 
       282 
286 
     | 
    
         
             
                vals = {}
         
     | 
| 
       283 
287 
     | 
    
         
             
                required = {}
         
     | 
| 
         @@ -349,7 +353,7 @@ class Parser 
     | 
|
| 
       349 
353 
     | 
    
         
             
                end
         
     | 
| 
       350 
354 
     | 
    
         | 
| 
       351 
355 
     | 
    
         
             
                required.each do |sym, val|
         
     | 
| 
       352 
     | 
    
         
            -
                  raise CommandlineError, "option  
     | 
| 
      
 356 
     | 
    
         
            +
                  raise CommandlineError, "option --#{@specs[sym][:long]} must be specified" unless given_args.include? sym
         
     | 
| 
       353 
357 
     | 
    
         
             
                end
         
     | 
| 
       354 
358 
     | 
    
         | 
| 
       355 
359 
     | 
    
         
             
                ## parse parameters
         
     | 
| 
         @@ -389,6 +393,11 @@ class Parser 
     | 
|
| 
       389 
393 
     | 
    
         
             
                  # else: multiple options, with multiple parameters
         
     | 
| 
       390 
394 
     | 
    
         
             
                end
         
     | 
| 
       391 
395 
     | 
    
         | 
| 
      
 396 
     | 
    
         
            +
                ## modify input in place with only those
         
     | 
| 
      
 397 
     | 
    
         
            +
                ## arguments we didn't process
         
     | 
| 
      
 398 
     | 
    
         
            +
                cmdline.clear
         
     | 
| 
      
 399 
     | 
    
         
            +
                @leftovers.each { |l| cmdline << l }
         
     | 
| 
      
 400 
     | 
    
         
            +
             
     | 
| 
       392 
401 
     | 
    
         
             
                ## allow openstruct-style accessors
         
     | 
| 
       393 
402 
     | 
    
         
             
                class << vals
         
     | 
| 
       394 
403 
     | 
    
         
             
                  def method_missing(m, *args)
         
     | 
| 
         @@ -653,11 +662,10 @@ private 
     | 
|
| 
       653 
662 
     | 
    
         
             
              end
         
     | 
| 
       654 
663 
     | 
    
         
             
            end
         
     | 
| 
       655 
664 
     | 
    
         | 
| 
       656 
     | 
    
         
            -
            ## The  
     | 
| 
       657 
     | 
    
         
            -
            ## passes the block to it, then parses +args+ with it, handling any
         
     | 
| 
       658 
     | 
    
         
            -
            ##  
     | 
| 
       659 
     | 
    
         
            -
            ##  
     | 
| 
       660 
     | 
    
         
            -
            ## values.
         
     | 
| 
      
 665 
     | 
    
         
            +
            ## The easy, syntactic-sugary entry method into Trollop. Creates a Parser,
         
     | 
| 
      
 666 
     | 
    
         
            +
            ## passes the block to it, then parses +args+ with it, handling any errors or
         
     | 
| 
      
 667 
     | 
    
         
            +
            ## requests for help or version information appropriately (and then exiting).
         
     | 
| 
      
 668 
     | 
    
         
            +
            ## Modifies +args+ in place. Returns a hash of option values.
         
     | 
| 
       661 
669 
     | 
    
         
             
            ##
         
     | 
| 
       662 
670 
     | 
    
         
             
            ## The block passed in should contain zero or more calls to +opt+
         
     | 
| 
       663 
671 
     | 
    
         
             
            ## (Parser#opt), zero or more calls to +text+ (Parser#text), and
         
     | 
| 
         @@ -686,22 +694,47 @@ end 
     | 
|
| 
       686 
694 
     | 
    
         
             
            ##   p opts # => {:monkey_given=>true, :monkey=>true, :goat=>true, :num_limbs=>4, :help=>false, :num_thumbs=>nil}
         
     | 
| 
       687 
695 
     | 
    
         
             
            ##
         
     | 
| 
       688 
696 
     | 
    
         
             
            ## See more examples at http://trollop.rubyforge.org.
         
     | 
| 
       689 
     | 
    
         
            -
            def options args 
     | 
| 
       690 
     | 
    
         
            -
               
     | 
| 
      
 697 
     | 
    
         
            +
            def options args=ARGV, *a, &b
         
     | 
| 
      
 698 
     | 
    
         
            +
              p = Parser.new(*a, &b)
         
     | 
| 
      
 699 
     | 
    
         
            +
              with_standard_exception_handling(p) { p.parse args }
         
     | 
| 
      
 700 
     | 
    
         
            +
            end
         
     | 
| 
      
 701 
     | 
    
         
            +
             
     | 
| 
      
 702 
     | 
    
         
            +
            ## If Trollop::options doesn't do quite what you want, you can create a Parser
         
     | 
| 
      
 703 
     | 
    
         
            +
            ## object and call Parser#parse on it. That method will throw CommandlineError,
         
     | 
| 
      
 704 
     | 
    
         
            +
            ## HelpNeeded and VersionNeeded exceptions when necessary; if you want to
         
     | 
| 
      
 705 
     | 
    
         
            +
            ## have these handled for you in the standard manner (e.g. show the help
         
     | 
| 
      
 706 
     | 
    
         
            +
            ## and then exit upon an HelpNeeded exception), call your code from within
         
     | 
| 
      
 707 
     | 
    
         
            +
            ## a block passed to this method.
         
     | 
| 
      
 708 
     | 
    
         
            +
            ##
         
     | 
| 
      
 709 
     | 
    
         
            +
            ## Note that this method will call System#exit after handling an exception!
         
     | 
| 
      
 710 
     | 
    
         
            +
            ##
         
     | 
| 
      
 711 
     | 
    
         
            +
            ## Usage example:
         
     | 
| 
      
 712 
     | 
    
         
            +
            ##
         
     | 
| 
      
 713 
     | 
    
         
            +
            ##   require 'trollop'
         
     | 
| 
      
 714 
     | 
    
         
            +
            ##   p = Trollop::Parser.new do
         
     | 
| 
      
 715 
     | 
    
         
            +
            ##     opt :monkey, "Use monkey mode"                     # a flag --monkey, defaulting to false
         
     | 
| 
      
 716 
     | 
    
         
            +
            ##     opt :goat, "Use goat mode", :default => true       # a flag --goat, defaulting to true
         
     | 
| 
      
 717 
     | 
    
         
            +
            ##   end
         
     | 
| 
      
 718 
     | 
    
         
            +
            ##
         
     | 
| 
      
 719 
     | 
    
         
            +
            ##   opts = Trollop::with_standard_exception_handling p do
         
     | 
| 
      
 720 
     | 
    
         
            +
            ##     p.parse ARGV
         
     | 
| 
      
 721 
     | 
    
         
            +
            ##     raise Trollop::HelpNeeded if ARGV.empty? # show help screen
         
     | 
| 
      
 722 
     | 
    
         
            +
            ##   end
         
     | 
| 
      
 723 
     | 
    
         
            +
            ##
         
     | 
| 
      
 724 
     | 
    
         
            +
            ## Requires passing in the parser object.
         
     | 
| 
      
 725 
     | 
    
         
            +
             
     | 
| 
      
 726 
     | 
    
         
            +
            def with_standard_exception_handling parser
         
     | 
| 
       691 
727 
     | 
    
         
             
              begin
         
     | 
| 
       692 
     | 
    
         
            -
                 
     | 
| 
       693 
     | 
    
         
            -
                args.clear
         
     | 
| 
       694 
     | 
    
         
            -
                @p.leftovers.each { |l| args << l }
         
     | 
| 
       695 
     | 
    
         
            -
                vals
         
     | 
| 
      
 728 
     | 
    
         
            +
                yield
         
     | 
| 
       696 
729 
     | 
    
         
             
              rescue CommandlineError => e
         
     | 
| 
       697 
730 
     | 
    
         
             
                $stderr.puts "Error: #{e.message}."
         
     | 
| 
       698 
731 
     | 
    
         
             
                $stderr.puts "Try --help for help."
         
     | 
| 
       699 
732 
     | 
    
         
             
                exit(-1)
         
     | 
| 
       700 
733 
     | 
    
         
             
              rescue HelpNeeded
         
     | 
| 
       701 
     | 
    
         
            -
                 
     | 
| 
      
 734 
     | 
    
         
            +
                parser.educate
         
     | 
| 
       702 
735 
     | 
    
         
             
                exit
         
     | 
| 
       703 
736 
     | 
    
         
             
              rescue VersionNeeded
         
     | 
| 
       704 
     | 
    
         
            -
                puts  
     | 
| 
      
 737 
     | 
    
         
            +
                puts parser.version
         
     | 
| 
       705 
738 
     | 
    
         
             
                exit
         
     | 
| 
       706 
739 
     | 
    
         
             
              end
         
     | 
| 
       707 
740 
     | 
    
         
             
            end
         
     | 
| 
         @@ -734,6 +767,6 @@ def die arg, msg=nil 
     | 
|
| 
       734 
767 
     | 
    
         
             
              exit(-1)
         
     | 
| 
       735 
768 
     | 
    
         
             
            end
         
     | 
| 
       736 
769 
     | 
    
         | 
| 
       737 
     | 
    
         
            -
            module_function :options, :die
         
     | 
| 
      
 770 
     | 
    
         
            +
            module_function :options, :die, :with_standard_exception_handling
         
     | 
| 
       738 
771 
     | 
    
         | 
| 
       739 
772 
     | 
    
         
             
            end # module
         
     | 
    
        data/release-script.txt
    ADDED
    
    | 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Just a few simple steps to make a new release.
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            vi History.txt    # and describe changes
         
     | 
| 
      
 4 
     | 
    
         
            +
            git-rank-contributors -o -h >> www/index.html
         
     | 
| 
      
 5 
     | 
    
         
            +
            vi www/index.html # and integrate contributors
         
     | 
| 
      
 6 
     | 
    
         
            +
            ## git add, git commit, etc
         
     | 
| 
      
 7 
     | 
    
         
            +
            vi lib/trollop.rb # and bump version number
         
     | 
| 
      
 8 
     | 
    
         
            +
            git commit -a -m "bump to..."
         
     | 
| 
      
 9 
     | 
    
         
            +
            git tag release-<releasename>
         
     | 
| 
      
 10 
     | 
    
         
            +
            rake gem
         
     | 
| 
      
 11 
     | 
    
         
            +
            rake tarball
         
     | 
| 
      
 12 
     | 
    
         
            +
            gem push pkg/<gem name>
         
     | 
| 
      
 13 
     | 
    
         
            +
            git push
         
     | 
| 
      
 14 
     | 
    
         
            +
            git push --tags
         
     | 
| 
      
 15 
     | 
    
         
            +
            rake upload_webpage
         
     | 
    
        data/test/test_trollop.rb
    CHANGED
    
    | 
         @@ -82,7 +82,7 @@ class Trollop < ::Test::Unit::TestCase 
     | 
|
| 
       82 
82 
     | 
    
         | 
| 
       83 
83 
     | 
    
         
             
                # single arg: int
         
     | 
| 
       84 
84 
     | 
    
         
             
                assert_nothing_raised { @p.opt "argsi", "desc", :default => 0 }
         
     | 
| 
       85 
     | 
    
         
            -
                assert_nothing_raised { opts = @p.parse( 
     | 
| 
      
 85 
     | 
    
         
            +
                assert_nothing_raised { opts = @p.parse(%w(--)) }
         
     | 
| 
       86 
86 
     | 
    
         
             
                assert_equal 0, opts["argsi"]
         
     | 
| 
       87 
87 
     | 
    
         
             
                assert_nothing_raised { opts = @p.parse(%w(--argsi 4)) }
         
     | 
| 
       88 
88 
     | 
    
         
             
                assert_equal 4, opts["argsi"]
         
     | 
| 
         @@ -91,18 +91,20 @@ class Trollop < ::Test::Unit::TestCase 
     | 
|
| 
       91 
91 
     | 
    
         | 
| 
       92 
92 
     | 
    
         
             
                # single arg: float
         
     | 
| 
       93 
93 
     | 
    
         
             
                assert_nothing_raised { @p.opt "argsf", "desc", :default => 3.14 }
         
     | 
| 
       94 
     | 
    
         
            -
                assert_nothing_raised { opts = @p.parse( 
     | 
| 
      
 94 
     | 
    
         
            +
                assert_nothing_raised { opts = @p.parse(%w(--)) }
         
     | 
| 
       95 
95 
     | 
    
         
             
                assert_equal 3.14, opts["argsf"]
         
     | 
| 
       96 
96 
     | 
    
         
             
                assert_nothing_raised { opts = @p.parse(%w(--argsf 2.41)) }
         
     | 
| 
       97 
97 
     | 
    
         
             
                assert_equal 2.41, opts["argsf"]
         
     | 
| 
       98 
98 
     | 
    
         
             
                assert_nothing_raised { opts = @p.parse(%w(--argsf 2)) }
         
     | 
| 
       99 
99 
     | 
    
         
             
                assert_equal 2, opts["argsf"]
         
     | 
| 
      
 100 
     | 
    
         
            +
                assert_nothing_raised { opts = @p.parse(%w(--argsf 1.0e-2)) }
         
     | 
| 
      
 101 
     | 
    
         
            +
                assert_equal 1.0e-2, opts["argsf"]
         
     | 
| 
       100 
102 
     | 
    
         
             
                assert_raise(CommandlineError) { @p.parse(%w(--argsf hello)) }
         
     | 
| 
       101 
103 
     | 
    
         | 
| 
       102 
104 
     | 
    
         
             
                # single arg: date
         
     | 
| 
       103 
105 
     | 
    
         
             
                date = Date.today
         
     | 
| 
       104 
106 
     | 
    
         
             
                assert_nothing_raised { @p.opt "argsd", "desc", :default => date }
         
     | 
| 
       105 
     | 
    
         
            -
                assert_nothing_raised { opts = @p.parse( 
     | 
| 
      
 107 
     | 
    
         
            +
                assert_nothing_raised { opts = @p.parse(%w(--)) }
         
     | 
| 
       106 
108 
     | 
    
         
             
                assert_equal Date.today, opts["argsd"]
         
     | 
| 
       107 
109 
     | 
    
         
             
                assert_nothing_raised { opts = @p.parse(['--argsd', 'Jan 4, 2007']) }
         
     | 
| 
       108 
110 
     | 
    
         
             
                assert_equal Date.civil(2007, 1, 4), opts["argsd"]
         
     | 
| 
         @@ -110,7 +112,7 @@ class Trollop < ::Test::Unit::TestCase 
     | 
|
| 
       110 
112 
     | 
    
         | 
| 
       111 
113 
     | 
    
         
             
                # single arg: string
         
     | 
| 
       112 
114 
     | 
    
         
             
                assert_nothing_raised { @p.opt "argss", "desc", :default => "foobar" }
         
     | 
| 
       113 
     | 
    
         
            -
                assert_nothing_raised { opts = @p.parse( 
     | 
| 
      
 115 
     | 
    
         
            +
                assert_nothing_raised { opts = @p.parse(%w(--)) }
         
     | 
| 
       114 
116 
     | 
    
         
             
                assert_equal "foobar", opts["argss"]
         
     | 
| 
       115 
117 
     | 
    
         
             
                assert_nothing_raised { opts = @p.parse(%w(--argss 2.41)) }
         
     | 
| 
       116 
118 
     | 
    
         
             
                assert_equal "2.41", opts["argss"]
         
     | 
| 
         @@ -119,7 +121,7 @@ class Trollop < ::Test::Unit::TestCase 
     | 
|
| 
       119 
121 
     | 
    
         | 
| 
       120 
122 
     | 
    
         
             
                # multi args: ints
         
     | 
| 
       121 
123 
     | 
    
         
             
                assert_nothing_raised { @p.opt "argmi", "desc", :default => [3, 5] }
         
     | 
| 
       122 
     | 
    
         
            -
                assert_nothing_raised { opts = @p.parse( 
     | 
| 
      
 124 
     | 
    
         
            +
                assert_nothing_raised { opts = @p.parse(%w(--)) }
         
     | 
| 
       123 
125 
     | 
    
         
             
                assert_equal [3, 5], opts["argmi"]
         
     | 
| 
       124 
126 
     | 
    
         
             
                assert_nothing_raised { opts = @p.parse(%w(--argmi 4)) }
         
     | 
| 
       125 
127 
     | 
    
         
             
                assert_equal [4], opts["argmi"]
         
     | 
| 
         @@ -128,7 +130,7 @@ class Trollop < ::Test::Unit::TestCase 
     | 
|
| 
       128 
130 
     | 
    
         | 
| 
       129 
131 
     | 
    
         
             
                # multi args: floats
         
     | 
| 
       130 
132 
     | 
    
         
             
                assert_nothing_raised { @p.opt "argmf", "desc", :default => [3.34, 5.21] }
         
     | 
| 
       131 
     | 
    
         
            -
                assert_nothing_raised { opts = @p.parse( 
     | 
| 
      
 133 
     | 
    
         
            +
                assert_nothing_raised { opts = @p.parse(%w(--)) }
         
     | 
| 
       132 
134 
     | 
    
         
             
                assert_equal [3.34, 5.21], opts["argmf"]
         
     | 
| 
       133 
135 
     | 
    
         
             
                assert_nothing_raised { opts = @p.parse(%w(--argmf 2)) }
         
     | 
| 
       134 
136 
     | 
    
         
             
                assert_equal [2], opts["argmf"]
         
     | 
| 
         @@ -139,7 +141,7 @@ class Trollop < ::Test::Unit::TestCase 
     | 
|
| 
       139 
141 
     | 
    
         
             
                # multi args: dates
         
     | 
| 
       140 
142 
     | 
    
         
             
                dates = [Date.today, Date.civil(2007, 1, 4)]
         
     | 
| 
       141 
143 
     | 
    
         
             
                assert_nothing_raised { @p.opt "argmd", "desc", :default => dates }
         
     | 
| 
       142 
     | 
    
         
            -
                assert_nothing_raised { opts = @p.parse( 
     | 
| 
      
 144 
     | 
    
         
            +
                assert_nothing_raised { opts = @p.parse(%w(--)) }
         
     | 
| 
       143 
145 
     | 
    
         
             
                assert_equal dates, opts["argmd"]
         
     | 
| 
       144 
146 
     | 
    
         
             
                assert_nothing_raised { opts = @p.parse(['--argmd', 'Jan 4, 2007']) }
         
     | 
| 
       145 
147 
     | 
    
         
             
                assert_equal [Date.civil(2007, 1, 4)], opts["argmd"]
         
     | 
| 
         @@ -147,7 +149,7 @@ class Trollop < ::Test::Unit::TestCase 
     | 
|
| 
       147 
149 
     | 
    
         | 
| 
       148 
150 
     | 
    
         
             
                # multi args: strings
         
     | 
| 
       149 
151 
     | 
    
         
             
                assert_nothing_raised { @p.opt "argmst", "desc", :default => %w(hello world) }
         
     | 
| 
       150 
     | 
    
         
            -
                assert_nothing_raised { opts = @p.parse( 
     | 
| 
      
 152 
     | 
    
         
            +
                assert_nothing_raised { opts = @p.parse(%w(--)) }
         
     | 
| 
       151 
153 
     | 
    
         
             
                assert_equal %w(hello world), opts["argmst"]
         
     | 
| 
       152 
154 
     | 
    
         
             
                assert_nothing_raised { opts = @p.parse(%w(--argmst 3.4)) }
         
     | 
| 
       153 
155 
     | 
    
         
             
                assert_equal ["3.4"], opts["argmst"]
         
     | 
| 
         @@ -1039,7 +1041,7 @@ EOM 
     | 
|
| 
       1039 
1041 
     | 
    
         | 
| 
       1040 
1042 
     | 
    
         
             
              def test_multi_args_default_to_empty_array
         
     | 
| 
       1041 
1043 
     | 
    
         
             
                @p.opt :arg1, "arg", :multi => true
         
     | 
| 
       1042 
     | 
    
         
            -
                opts = @p.parse  
     | 
| 
      
 1044 
     | 
    
         
            +
                opts = @p.parse []
         
     | 
| 
       1043 
1045 
     | 
    
         
             
                assert_equal [], opts[:arg1]
         
     | 
| 
       1044 
1046 
     | 
    
         
             
              end
         
     | 
| 
       1045 
1047 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: trollop
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
      
 4 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 5 
     | 
    
         
            +
              segments: 
         
     | 
| 
      
 6 
     | 
    
         
            +
              - 1
         
     | 
| 
      
 7 
     | 
    
         
            +
              - 16
         
     | 
| 
      
 8 
     | 
    
         
            +
              version: "1.16"
         
     | 
| 
       5 
9 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
10 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
11 
     | 
    
         
             
            - William Morgan
         
     | 
| 
         @@ -9,78 +13,59 @@ autorequire: 
     | 
|
| 
       9 
13 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
14 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
15 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
            date:  
     | 
| 
      
 16 
     | 
    
         
            +
            date: 2010-04-01 16:46:01 -04:00
         
     | 
| 
       13 
17 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       14 
18 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       15 
19 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
            description:  
     | 
| 
       17 
     | 
    
         
            -
               
     | 
| 
       18 
     | 
    
         
            -
               
     | 
| 
       19 
     | 
    
         
            -
               
     | 
| 
       20 
     | 
    
         
            -
               
     | 
| 
       21 
     | 
    
         
            -
              
         
     | 
| 
       22 
     | 
    
         
            -
              == DESCRIPTION
         
     | 
| 
       23 
     | 
    
         
            -
              
         
     | 
| 
       24 
     | 
    
         
            -
              == REQUIREMENTS
         
     | 
| 
       25 
     | 
    
         
            -
              
         
     | 
| 
       26 
     | 
    
         
            -
              * A burning desire to write less code.
         
     | 
| 
       27 
     | 
    
         
            -
              
         
     | 
| 
       28 
     | 
    
         
            -
              == INSTALL
         
     | 
| 
       29 
     | 
    
         
            -
              
         
     | 
| 
       30 
     | 
    
         
            -
              * gem install trollop
         
     | 
| 
       31 
     | 
    
         
            -
              
         
     | 
| 
       32 
     | 
    
         
            -
              == LICENSE
         
     | 
| 
       33 
     | 
    
         
            -
              
         
     | 
| 
       34 
     | 
    
         
            -
              Copyright (c) 2008--2009 William Morgan. Trollop is distributed under the same
         
     | 
| 
       35 
     | 
    
         
            -
              terms as Ruby.
         
     | 
| 
       36 
     | 
    
         
            -
              
         
     | 
| 
       37 
     | 
    
         
            -
              
         
     | 
| 
      
 20 
     | 
    
         
            +
            description: |-
         
     | 
| 
      
 21 
     | 
    
         
            +
              Trollop is a commandline option parser for Ruby that just
         
     | 
| 
      
 22 
     | 
    
         
            +
              gets out of your way. One line of code per option is all you need to write.
         
     | 
| 
      
 23 
     | 
    
         
            +
              For that, you get a nice automatically-generated help page, robust option
         
     | 
| 
      
 24 
     | 
    
         
            +
              parsing, command subcompletion, and sensible defaults for everything you don't
         
     | 
| 
      
 25 
     | 
    
         
            +
              specify.
         
     | 
| 
       38 
26 
     | 
    
         
             
            email: wmorgan-trollop@masanjin.net
         
     | 
| 
       39 
27 
     | 
    
         
             
            executables: []
         
     | 
| 
       40 
28 
     | 
    
         | 
| 
       41 
29 
     | 
    
         
             
            extensions: []
         
     | 
| 
       42 
30 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
            extra_rdoc_files: 
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
            - History.txt
         
     | 
| 
       46 
     | 
    
         
            -
            - Manifest.txt
         
     | 
| 
       47 
     | 
    
         
            -
            - README.txt
         
     | 
| 
      
 31 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
       48 
33 
     | 
    
         
             
            files: 
         
     | 
| 
       49 
     | 
    
         
            -
            - FAQ.txt
         
     | 
| 
       50 
     | 
    
         
            -
            - History.txt
         
     | 
| 
       51 
     | 
    
         
            -
            - Manifest.txt
         
     | 
| 
       52 
     | 
    
         
            -
            - README.txt
         
     | 
| 
       53 
     | 
    
         
            -
            - Rakefile
         
     | 
| 
       54 
34 
     | 
    
         
             
            - lib/trollop.rb
         
     | 
| 
       55 
35 
     | 
    
         
             
            - test/test_trollop.rb
         
     | 
| 
      
 36 
     | 
    
         
            +
            - README.txt
         
     | 
| 
      
 37 
     | 
    
         
            +
            - release-script.txt
         
     | 
| 
      
 38 
     | 
    
         
            +
            - FAQ.txt
         
     | 
| 
      
 39 
     | 
    
         
            +
            - History.txt
         
     | 
| 
       56 
40 
     | 
    
         
             
            has_rdoc: true
         
     | 
| 
       57 
41 
     | 
    
         
             
            homepage: http://trollop.rubyforge.org
         
     | 
| 
       58 
42 
     | 
    
         
             
            licenses: []
         
     | 
| 
       59 
43 
     | 
    
         | 
| 
       60 
44 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       61 
     | 
    
         
            -
            rdoc_options: 
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
            - README.txt
         
     | 
| 
      
 45 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
       64 
47 
     | 
    
         
             
            require_paths: 
         
     | 
| 
       65 
48 
     | 
    
         
             
            - lib
         
     | 
| 
       66 
49 
     | 
    
         
             
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
       67 
50 
     | 
    
         
             
              requirements: 
         
     | 
| 
       68 
51 
     | 
    
         
             
              - - ">="
         
     | 
| 
       69 
52 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 53 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 54 
     | 
    
         
            +
                  - 0
         
     | 
| 
       70 
55 
     | 
    
         
             
                  version: "0"
         
     | 
| 
       71 
     | 
    
         
            -
              version: 
         
     | 
| 
       72 
56 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
       73 
57 
     | 
    
         
             
              requirements: 
         
     | 
| 
       74 
58 
     | 
    
         
             
              - - ">="
         
     | 
| 
       75 
59 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 60 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 61 
     | 
    
         
            +
                  - 0
         
     | 
| 
       76 
62 
     | 
    
         
             
                  version: "0"
         
     | 
| 
       77 
     | 
    
         
            -
              version: 
         
     | 
| 
       78 
63 
     | 
    
         
             
            requirements: []
         
     | 
| 
       79 
64 
     | 
    
         | 
| 
       80 
65 
     | 
    
         
             
            rubyforge_project: trollop
         
     | 
| 
       81 
     | 
    
         
            -
            rubygems_version: 1.3. 
     | 
| 
      
 66 
     | 
    
         
            +
            rubygems_version: 1.3.6
         
     | 
| 
       82 
67 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       83 
68 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       84 
     | 
    
         
            -
            summary: Trollop is a commandline option parser for Ruby that just gets out of your way. 
     | 
| 
       85 
     | 
    
         
            -
            test_files: 
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
      
 69 
     | 
    
         
            +
            summary: Trollop is a commandline option parser for Ruby that just gets out of your way.
         
     | 
| 
      
 70 
     | 
    
         
            +
            test_files: []
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
    
        data/Manifest.txt
    DELETED
    
    
    
        data/Rakefile
    DELETED
    
    | 
         @@ -1,36 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- ruby -*-
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require 'rubygems'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'hoe'
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            $:.unshift "lib"
         
     | 
| 
       7 
     | 
    
         
            -
            require 'trollop'
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
            class Hoe
         
     | 
| 
       10 
     | 
    
         
            -
              def extra_dev_deps; @extra_dev_deps.reject { |x| x[0] == "hoe" } end
         
     | 
| 
       11 
     | 
    
         
            -
            end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
            Hoe.new('trollop', Trollop::VERSION) do |p|
         
     | 
| 
       14 
     | 
    
         
            -
              p.rubyforge_name = 'trollop'
         
     | 
| 
       15 
     | 
    
         
            -
              p.author = "William Morgan"
         
     | 
| 
       16 
     | 
    
         
            -
              p.summary = "Trollop is a commandline option parser for Ruby that just gets out of your way. One line of code per option is all you need to write. For that, you get a nice automatically-generated help page, robust option parsing, command subcompletion, and sensible defaults for everything you don't specify."
         
     | 
| 
       17 
     | 
    
         
            -
              p.description = p.paragraphs_of('README.txt', 4..5, 9..18).join("\n\n").gsub(/== SYNOPSIS/, "Synopsis")
         
     | 
| 
       18 
     | 
    
         
            -
              p.url = "http://trollop.rubyforge.org"
         
     | 
| 
       19 
     | 
    
         
            -
              p.changes = p.paragraphs_of('History.txt', 0..0).join("\n\n")
         
     | 
| 
       20 
     | 
    
         
            -
              p.email = "wmorgan-trollop@masanjin.net"
         
     | 
| 
       21 
     | 
    
         
            -
            end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
            WWW_FILES = FileList["www/*"] + %w(README.txt FAQ.txt)
         
     | 
| 
       24 
     | 
    
         
            -
            task :upload_webpage => WWW_FILES do |t|
         
     | 
| 
       25 
     | 
    
         
            -
              sh "rsync -Paz -essh #{t.prerequisites * ' '} wmorgan@rubyforge.org:/var/www/gforge-projects/trollop/"
         
     | 
| 
       26 
     | 
    
         
            -
            end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
            task :rdoc do |t|
         
     | 
| 
       29 
     | 
    
         
            -
              sh "rdoc lib README.txt History.txt -m README.txt"
         
     | 
| 
       30 
     | 
    
         
            -
            end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
            task :upload_docs => :rdoc do |t|
         
     | 
| 
       33 
     | 
    
         
            -
              sh "rsync -az -essh doc/* wmorgan@rubyforge.org:/var/www/gforge-projects/trollop/trollop/"
         
     | 
| 
       34 
     | 
    
         
            -
            end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
            # vim: syntax=ruby
         
     |