main 4.0.0 → 4.2.0
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/Rakefile +2 -2
- data/a.rb +14 -0
- data/lib/main.rb +1 -22
- data/lib/main/factories.rb +8 -8
- data/lib/main/parameter.rb +2 -0
- data/lib/main/program/class_methods.rb +12 -7
- data/lib/main/program/instance_methods.rb +6 -3
- data/lib/main/test.rb +89 -0
- data/lib/main/usage.rb +6 -2
- data/main.gemspec +4 -4
- data/samples/j.rb +14 -0
- data/test/main.rb +24 -35
- metadata +7 -4
    
        data/Rakefile
    CHANGED
    
    | @@ -78,8 +78,8 @@ task :gemspec do | |
| 78 78 |  | 
| 79 79 | 
             
                        spec.has_rdoc = #{ has_rdoc.inspect }
         | 
| 80 80 | 
             
                        spec.test_files = #{ test_files.inspect }
         | 
| 81 | 
            -
                        spec.add_dependency 'fattr', '>= 1.0 | 
| 82 | 
            -
                        spec.add_dependency 'arrayfields', '>= 4. | 
| 81 | 
            +
                        spec.add_dependency 'fattr', '>= 2.1.0'
         | 
| 82 | 
            +
                        spec.add_dependency 'arrayfields', '>= 4.7.4'
         | 
| 83 83 |  | 
| 84 84 | 
             
                        spec.extensions.push(*#{ extensions.inspect })
         | 
| 85 85 |  | 
    
        data/a.rb
    ADDED
    
    
    
        data/lib/main.rb
    CHANGED
    
    | @@ -2,7 +2,7 @@ module Main | |
| 2 2 | 
             
            #
         | 
| 3 3 | 
             
            # top level constants
         | 
| 4 4 | 
             
            #
         | 
| 5 | 
            -
              Main::VERSION = '4. | 
| 5 | 
            +
              Main::VERSION = '4.2.0' unless
         | 
| 6 6 | 
             
                defined? Main::VERSION
         | 
| 7 7 | 
             
              def self.version() Main::VERSION end
         | 
| 8 8 |  | 
| @@ -44,25 +44,4 @@ module Main | |
| 44 44 | 
             
              require libdir + 'mode'
         | 
| 45 45 | 
             
              require libdir + 'program'
         | 
| 46 46 | 
             
              require libdir + 'factories'
         | 
| 47 | 
            -
             | 
| 48 | 
            -
              class << Main
         | 
| 49 | 
            -
                def push_ios!
         | 
| 50 | 
            -
                  @ios ||= []
         | 
| 51 | 
            -
                  @ios.push({
         | 
| 52 | 
            -
                    :STDIN => STDIN.dup, :STDOUT => STDOUT.dup, :STDERR => STDERR.dup
         | 
| 53 | 
            -
                  })
         | 
| 54 | 
            -
                end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                def pop_ios!
         | 
| 57 | 
            -
                  @ios ||= []
         | 
| 58 | 
            -
                  (@ios.pop||{}).each do |const, dup|
         | 
| 59 | 
            -
                    dst = eval(const.to_s)
         | 
| 60 | 
            -
                    begin
         | 
| 61 | 
            -
                      dst.reopen(dup)
         | 
| 62 | 
            -
                    rescue
         | 
| 63 | 
            -
                      ::Object.const_set(const, dup)
         | 
| 64 | 
            -
                    end
         | 
| 65 | 
            -
                  end
         | 
| 66 | 
            -
                end
         | 
| 67 | 
            -
              end
         | 
| 68 47 | 
             
            end
         | 
    
        data/lib/main/factories.rb
    CHANGED
    
    | @@ -1,20 +1,20 @@ | |
| 1 1 | 
             
            module Main
         | 
| 2 | 
            -
              def Main.factory(&block)
         | 
| 3 | 
            -
                Program.factory(&block)
         | 
| 4 | 
            -
              end
         | 
| 5 | 
            -
             | 
| 6 2 | 
             
              def Main.create(&block)
         | 
| 7 3 | 
             
                factory(&block)
         | 
| 8 4 | 
             
              end
         | 
| 9 5 |  | 
| 6 | 
            +
              def Main.factory(&block)
         | 
| 7 | 
            +
                Program.factory(&block)
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 10 | 
             
              def Main.new(*args, &block)
         | 
| 11 | 
            -
                 | 
| 12 | 
            -
                 | 
| 11 | 
            +
                program = factory(&block).build(*args)
         | 
| 12 | 
            +
                program.new()
         | 
| 13 13 | 
             
              end
         | 
| 14 14 |  | 
| 15 15 | 
             
              def Main.run(*args, &block)
         | 
| 16 | 
            -
                 | 
| 17 | 
            -
                main =  | 
| 16 | 
            +
                program = factory(&block).build(*args)
         | 
| 17 | 
            +
                main = program.new()
         | 
| 18 18 | 
             
                main.run()
         | 
| 19 19 | 
             
              end
         | 
| 20 20 | 
             
            end
         | 
    
        data/lib/main/parameter.rb
    CHANGED
    
    
| @@ -7,6 +7,8 @@ module Main | |
| 7 7 | 
             
                  fattr('description')
         | 
| 8 8 | 
             
                  fattr('usage'){ Main::Usage.default_usage(self) }
         | 
| 9 9 | 
             
                  fattr('modes'){ Main::Mode.list }
         | 
| 10 | 
            +
                  fattr('depth_first_modes'){ Main::Mode.list }
         | 
| 11 | 
            +
                  fattr('breadth_first_modes'){ Main::Mode.list }
         | 
| 10 12 |  | 
| 11 13 | 
             
                  fattr('author')
         | 
| 12 14 | 
             
                  fattr('version')
         | 
| @@ -95,16 +97,18 @@ module Main | |
| 95 97 | 
             
                # extend the class based on modules given in argv
         | 
| 96 98 | 
             
                #
         | 
| 97 99 | 
             
                  def dynamically_extend_via_commandline_modes!
         | 
| 100 | 
            +
                    self.breadth_first_modes = modes.dup
         | 
| 98 101 | 
             
                    size = modes.size
         | 
| 99 | 
            -
                    depth_first_modes = Array.fields
         | 
| 100 102 |  | 
| 101 103 | 
             
                    loop do
         | 
| 102 104 | 
             
                      modes.each do |mode|
         | 
| 103 105 | 
             
                        arg = argv.first && %r/^#{ argv.first }/
         | 
| 104 106 | 
             
                        if arg and mode.name =~ arg
         | 
| 105 107 | 
             
                          argv.shift
         | 
| 106 | 
            -
                          modes.clear
         | 
| 108 | 
            +
                          modes.clear()
         | 
| 109 | 
            +
                          breadth_first_modes.clear()
         | 
| 107 110 | 
             
                          evaluate(&mode)
         | 
| 111 | 
            +
                          self.breadth_first_modes = modes.dup
         | 
| 108 112 | 
             
                          depth_first_modes[mode.name] = mode
         | 
| 109 113 | 
             
                          break
         | 
| 110 114 | 
             
                        end
         | 
| @@ -118,7 +122,7 @@ module Main | |
| 118 122 | 
             
                      break unless more_modes
         | 
| 119 123 | 
             
                    end
         | 
| 120 124 |  | 
| 121 | 
            -
                    self.modes = depth_first_modes
         | 
| 125 | 
            +
                    self.modes = depth_first_modes.dup
         | 
| 122 126 | 
             
                  end
         | 
| 123 127 |  | 
| 124 128 | 
             
                # wrap up users run method to handle errors, etc
         | 
| @@ -134,7 +138,7 @@ module Main | |
| 134 138 | 
             
                              parse_parameters
         | 
| 135 139 |  | 
| 136 140 | 
             
                              if help?
         | 
| 137 | 
            -
                                puts(usage)
         | 
| 141 | 
            +
                                puts(usage.to_s)
         | 
| 138 142 | 
             
                                exit
         | 
| 139 143 | 
             
                              end
         | 
| 140 144 |  | 
| @@ -160,12 +164,12 @@ module Main | |
| 160 164 |  | 
| 161 165 | 
             
            # TODO
         | 
| 162 166 | 
             
                  def fully_qualified_mode
         | 
| 163 | 
            -
                    modes.map{|mode| mode.name} | 
| 167 | 
            +
                    modes.map{|mode| mode.name}
         | 
| 164 168 | 
             
                  end
         | 
| 165 169 |  | 
| 166 170 | 
             
                  def mode_name
         | 
| 167 171 | 
             
                    return 'main' if modes.empty?
         | 
| 168 | 
            -
                    fully_qualified_mode
         | 
| 172 | 
            +
                    fully_qualified_mode.join(' ')
         | 
| 169 173 | 
             
                  end
         | 
| 170 174 |  | 
| 171 175 | 
             
                  undef_method 'usage'
         | 
| @@ -203,8 +207,9 @@ module Main | |
| 203 207 |  | 
| 204 208 | 
             
                  def mode(name, &block)
         | 
| 205 209 | 
             
                    name = name.to_s
         | 
| 206 | 
            -
                    modes[name] = block
         | 
| 207 210 | 
             
                    block.fattr(:name => name)
         | 
| 211 | 
            +
                    modes[name] = block
         | 
| 212 | 
            +
                    breadth_first_modes[name] = block
         | 
| 208 213 | 
             
                    block
         | 
| 209 214 | 
             
                  end
         | 
| 210 215 |  | 
| @@ -112,7 +112,8 @@ module Main | |
| 112 112 | 
             
                        STDIN.reopen(@stdin)
         | 
| 113 113 | 
             
                      rescue
         | 
| 114 114 | 
             
                        $stdin = @stdin
         | 
| 115 | 
            -
                        ::Object. | 
| 115 | 
            +
                        ::Object.send(:remove_const, 'STDIN')
         | 
| 116 | 
            +
                        ::Object.send(:const_set, 'STDIN', @stdin)
         | 
| 116 117 | 
             
                      end
         | 
| 117 118 | 
             
                    end
         | 
| 118 119 | 
             
                  end
         | 
| @@ -132,7 +133,8 @@ module Main | |
| 132 133 | 
             
                        STDOUT.reopen(@stdout)
         | 
| 133 134 | 
             
                      rescue
         | 
| 134 135 | 
             
                        $stdout = @stdout
         | 
| 135 | 
            -
                        ::Object. | 
| 136 | 
            +
                        ::Object.send(:remove_const, 'STDOUT')
         | 
| 137 | 
            +
                        ::Object.send(:const_set, 'STDOUT', @stdout)
         | 
| 136 138 | 
             
                      end
         | 
| 137 139 | 
             
                    end
         | 
| 138 140 | 
             
                  end
         | 
| @@ -152,7 +154,8 @@ module Main | |
| 152 154 | 
             
                        STDERR.reopen(@stderr)
         | 
| 153 155 | 
             
                      rescue
         | 
| 154 156 | 
             
                        $stderr = @stderr
         | 
| 155 | 
            -
                        ::Object. | 
| 157 | 
            +
                        ::Object.send(:remove_const, 'STDERR')
         | 
| 158 | 
            +
                        ::Object.send(:const_set, 'STDERR', @stderr)
         | 
| 156 159 | 
             
                      end
         | 
| 157 160 | 
             
                    end
         | 
| 158 161 | 
             
                  end
         | 
    
        data/lib/main/test.rb
    ADDED
    
    | @@ -0,0 +1,89 @@ | |
| 1 | 
            +
             | 
| 2 | 
            +
            module Main
         | 
| 3 | 
            +
              class << Main
         | 
| 4 | 
            +
                def test(options = {}, &block)
         | 
| 5 | 
            +
            #    at_exit{ exit! }
         | 
| 6 | 
            +
                  opts = {}
         | 
| 7 | 
            +
                  options.each do |key, val|
         | 
| 8 | 
            +
                    opts[key.to_s.to_sym] = val
         | 
| 9 | 
            +
                  end
         | 
| 10 | 
            +
                  options.replace(opts)
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  argv = options[:argv]
         | 
| 13 | 
            +
                  env = options[:env]
         | 
| 14 | 
            +
                  logger = options[:logger]
         | 
| 15 | 
            +
                  stdin = options[:stdin]
         | 
| 16 | 
            +
                  stdout = options[:stdout]
         | 
| 17 | 
            +
                  stderr = options[:stderr]
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  Main.push_ios!
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  factory = Main.factory(&block)
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  program = factory.build(argv, env)
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  main = program.new
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  program.evaluate do
         | 
| 28 | 
            +
                    define_method :handle_exception do |exception|
         | 
| 29 | 
            +
                      if exception.respond_to?(:status)
         | 
| 30 | 
            +
                        main.status = exception.status
         | 
| 31 | 
            +
                      else
         | 
| 32 | 
            +
                        raise(exception)
         | 
| 33 | 
            +
                      end
         | 
| 34 | 
            +
                    end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                    define_method :handle_exit do |status|
         | 
| 37 | 
            +
                      main.status = status
         | 
| 38 | 
            +
                    end
         | 
| 39 | 
            +
                  end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                  keys = [:logger, :stdin, :stdout, :stderr]
         | 
| 42 | 
            +
                  keys.each do |key|
         | 
| 43 | 
            +
                    if options.has_key?(key)
         | 
| 44 | 
            +
                      val = options[key]
         | 
| 45 | 
            +
                      main.send("#{ key }=", val) if options.has_key?(key)
         | 
| 46 | 
            +
                    end
         | 
| 47 | 
            +
                  end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  run = main.method(:run)
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                  singleton_class =
         | 
| 52 | 
            +
                    class << main
         | 
| 53 | 
            +
                      self
         | 
| 54 | 
            +
                    end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                  singleton_class.module_eval do
         | 
| 57 | 
            +
                    define_method(:run) do
         | 
| 58 | 
            +
                      begin
         | 
| 59 | 
            +
                        run.call()
         | 
| 60 | 
            +
                      ensure
         | 
| 61 | 
            +
                        Main.pop_ios!
         | 
| 62 | 
            +
                      end
         | 
| 63 | 
            +
                    end
         | 
| 64 | 
            +
                  end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                  main
         | 
| 67 | 
            +
                end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                def push_ios!
         | 
| 70 | 
            +
                  @ios ||= []
         | 
| 71 | 
            +
                  @ios.push({
         | 
| 72 | 
            +
                    :STDIN => STDIN.dup, :STDOUT => STDOUT.dup, :STDERR => STDERR.dup
         | 
| 73 | 
            +
                  })
         | 
| 74 | 
            +
                end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                def pop_ios!
         | 
| 77 | 
            +
                  @ios ||= []
         | 
| 78 | 
            +
                  (@ios.pop||{}).each do |const, dup|
         | 
| 79 | 
            +
                    dst = eval(const.to_s)
         | 
| 80 | 
            +
                    begin
         | 
| 81 | 
            +
                      dst.reopen(dup)
         | 
| 82 | 
            +
                    rescue
         | 
| 83 | 
            +
                      ::Object.send(:remove_const, const)
         | 
| 84 | 
            +
                      ::Object.send(:const_set, const, dup)
         | 
| 85 | 
            +
                    end
         | 
| 86 | 
            +
                  end
         | 
| 87 | 
            +
                end
         | 
| 88 | 
            +
              end
         | 
| 89 | 
            +
            end
         | 
    
        data/lib/main/usage.rb
    CHANGED
    
    | @@ -31,8 +31,12 @@ module Main | |
| 31 31 | 
             
                    s << " #{ main.fully_qualified_mode.join ' ' }"
         | 
| 32 32 | 
             
                  end
         | 
| 33 33 |  | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 34 | 
            +
            #p 'main.breadth_first_modes' => main.breadth_first_modes.map{|m| m.name}
         | 
| 35 | 
            +
            #p 'main.depth_first_modes' => main.depth_first_modes.map{|m| m.name}
         | 
| 36 | 
            +
            #p 'main.modes' => main.modes.map{|m| m.name}
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  unless main.breadth_first_modes.empty?
         | 
| 39 | 
            +
                    modes = main.breadth_first_modes.map{|mode| mode.name}.join('|')
         | 
| 36 40 | 
             
                    s << " (#{ modes })"
         | 
| 37 41 | 
             
                  end
         | 
| 38 42 |  | 
    
        data/main.gemspec
    CHANGED
    
    | @@ -4,11 +4,11 @@ | |
| 4 4 | 
             
            Gem::Specification::new do |spec|
         | 
| 5 5 | 
             
              spec.name = "main"
         | 
| 6 6 | 
             
              spec.description = 'a class factory and dsl for generating command line programs real quick'
         | 
| 7 | 
            -
              spec.version = "4. | 
| 7 | 
            +
              spec.version = "4.2.0"
         | 
| 8 8 | 
             
              spec.platform = Gem::Platform::RUBY
         | 
| 9 9 | 
             
              spec.summary = "main"
         | 
| 10 10 |  | 
| 11 | 
            -
              spec.files = ["lib", "lib/main", "lib/main/cast.rb", "lib/main/dsl.rb", "lib/main/factories.rb", "lib/main/getoptlong.rb", "lib/main/logger.rb", "lib/main/mode.rb", "lib/main/parameter.rb", "lib/main/program", "lib/main/program/class_methods.rb", "lib/main/program/instance_methods.rb", "lib/main/program.rb", "lib/main/softspoken.rb", "lib/main/stdext.rb", "lib/main/usage.rb", "lib/main/util.rb", "lib/main.rb", "main.gemspec", "Rakefile", "README", "README.erb", "samples", "samples/a.rb", "samples/b.rb", "samples/c.rb", "samples/d.rb", "samples/e.rb", "samples/f.rb", "samples/g.rb", "samples/h.rb", "test", "test/main.rb", "TODO"]
         | 
| 11 | 
            +
              spec.files = ["a.rb", "lib", "lib/main", "lib/main/cast.rb", "lib/main/dsl.rb", "lib/main/factories.rb", "lib/main/getoptlong.rb", "lib/main/logger.rb", "lib/main/mode.rb", "lib/main/parameter.rb", "lib/main/program", "lib/main/program/class_methods.rb", "lib/main/program/instance_methods.rb", "lib/main/program.rb", "lib/main/softspoken.rb", "lib/main/stdext.rb", "lib/main/test.rb", "lib/main/usage.rb", "lib/main/util.rb", "lib/main.rb", "main.gemspec", "Rakefile", "README", "README.erb", "samples", "samples/a.rb", "samples/b.rb", "samples/c.rb", "samples/d.rb", "samples/e.rb", "samples/f.rb", "samples/g.rb", "samples/h.rb", "samples/j.rb", "test", "test/main.rb", "TODO"]
         | 
| 12 12 | 
             
              spec.executables = []
         | 
| 13 13 |  | 
| 14 14 |  | 
| @@ -17,8 +17,8 @@ Gem::Specification::new do |spec| | |
| 17 17 |  | 
| 18 18 | 
             
              spec.has_rdoc = true
         | 
| 19 19 | 
             
              spec.test_files = "test/main.rb"
         | 
| 20 | 
            -
              spec.add_dependency 'fattr', '>= 1.0 | 
| 21 | 
            -
              spec.add_dependency 'arrayfields', '>= 4. | 
| 20 | 
            +
              spec.add_dependency 'fattr', '>= 2.1.0'
         | 
| 21 | 
            +
              spec.add_dependency 'arrayfields', '>= 4.7.4'
         | 
| 22 22 |  | 
| 23 23 | 
             
              spec.extensions.push(*[])
         | 
| 24 24 |  | 
    
        data/samples/j.rb
    ADDED
    
    
    
        data/test/main.rb
    CHANGED
    
    | @@ -6,6 +6,7 @@ $:.unshift('../lib') | |
| 6 6 | 
             
            require('stringio')
         | 
| 7 7 | 
             
            require('test/unit')
         | 
| 8 8 | 
             
            require('main')
         | 
| 9 | 
            +
            require('main/test')
         | 
| 9 10 |  | 
| 10 11 |  | 
| 11 12 | 
             
            class T < Test::Unit::TestCase
         | 
| @@ -23,45 +24,19 @@ class T < Test::Unit::TestCase | |
| 23 24 | 
             
              end
         | 
| 24 25 |  | 
| 25 26 | 
             
              def main(argv=[], env={}, &block)
         | 
| 26 | 
            -
                 | 
| 27 | 
            +
                options = {}
         | 
| 28 | 
            +
                options[:argv] = argv
         | 
| 29 | 
            +
                options[:env] = env
         | 
| 30 | 
            +
                options[:logger] = logger
         | 
| 27 31 |  | 
| 28 | 
            -
                 | 
| 29 | 
            -
                ARGV.replace argv
         | 
| 30 | 
            -
                ENV.clear
         | 
| 31 | 
            -
                env.each{|k,v| ENV[k.to_s]=v.to_s}
         | 
| 32 | 
            -
             | 
| 33 | 
            -
                Main.push_ios!
         | 
| 32 | 
            +
                main = Main.test(options, &block)
         | 
| 34 33 |  | 
| 35 34 | 
             
                test = self
         | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
                main = program.new
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                program.evaluate do
         | 
| 44 | 
            -
                  define_method :handle_exception do |exception|
         | 
| 45 | 
            -
                    if exception.respond_to?(:status)
         | 
| 46 | 
            -
                      test.status = main.status = exception.status
         | 
| 47 | 
            -
                    else
         | 
| 48 | 
            -
                      test.status = main.status
         | 
| 49 | 
            -
                      raise(exception)
         | 
| 50 | 
            -
                    end
         | 
| 51 | 
            -
                  end
         | 
| 52 | 
            -
                  define_method :handle_exit do |status|
         | 
| 53 | 
            -
                    test.status = main.status = status
         | 
| 54 | 
            -
                  end
         | 
| 35 | 
            +
                begin
         | 
| 36 | 
            +
                  main.run()
         | 
| 37 | 
            +
                ensure
         | 
| 38 | 
            +
                  test.status = main.status
         | 
| 55 39 | 
             
                end
         | 
| 56 | 
            -
             | 
| 57 | 
            -
                main.logger = logger
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                main.run
         | 
| 60 | 
            -
             | 
| 61 | 
            -
                test.status ||= main.exit_status
         | 
| 62 | 
            -
             | 
| 63 | 
            -
                Main.pop_ios!
         | 
| 64 | 
            -
             | 
| 65 40 | 
             
                main
         | 
| 66 41 | 
             
              end
         | 
| 67 42 |  | 
| @@ -884,6 +859,20 @@ class T < Test::Unit::TestCase | |
| 884 859 | 
             
                end
         | 
| 885 860 | 
             
              end 
         | 
| 886 861 |  | 
| 862 | 
            +
              def test_0550
         | 
| 863 | 
            +
                name  = 'mode_argument_with_help_parameter_outputs_help'
         | 
| 864 | 
            +
                p = nil
         | 
| 865 | 
            +
                argv = %w( foo help )
         | 
| 866 | 
            +
                assert_nothing_raised{
         | 
| 867 | 
            +
                  main(argv){
         | 
| 868 | 
            +
                    mode( 'foo' ) {
         | 
| 869 | 
            +
                      argument 'bar'
         | 
| 870 | 
            +
                      define_method('run'){ p = param['bar'] }
         | 
| 871 | 
            +
                    }
         | 
| 872 | 
            +
                  }
         | 
| 873 | 
            +
                }
         | 
| 874 | 
            +
                assert( p.nil?, "p should not be set, help should have run" )
         | 
| 875 | 
            +
              end
         | 
| 887 876 | 
             
            end
         | 
| 888 877 |  | 
| 889 878 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: main
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              version: 4. | 
| 4 | 
            +
              version: 4.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors: 
         | 
| 7 7 | 
             
            - Ara T. Howard
         | 
| @@ -9,7 +9,7 @@ autorequire: | |
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 11 |  | 
| 12 | 
            -
            date: 2009- | 
| 12 | 
            +
            date: 2009-11-02 00:00:00 -07:00
         | 
| 13 13 | 
             
            default_executable: 
         | 
| 14 14 | 
             
            dependencies: 
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -20,7 +20,7 @@ dependencies: | |
| 20 20 | 
             
                requirements: 
         | 
| 21 21 | 
             
                - - ">="
         | 
| 22 22 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 23 | 
            -
                    version: 1.0 | 
| 23 | 
            +
                    version: 2.1.0
         | 
| 24 24 | 
             
                version: 
         | 
| 25 25 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 26 26 | 
             
              name: arrayfields
         | 
| @@ -30,7 +30,7 @@ dependencies: | |
| 30 30 | 
             
                requirements: 
         | 
| 31 31 | 
             
                - - ">="
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 33 | 
            -
                    version: 4. | 
| 33 | 
            +
                    version: 4.7.4
         | 
| 34 34 | 
             
                version: 
         | 
| 35 35 | 
             
            description: a class factory and dsl for generating command line programs real quick
         | 
| 36 36 | 
             
            email: ara.t.howard@gmail.com
         | 
| @@ -41,6 +41,7 @@ extensions: [] | |
| 41 41 | 
             
            extra_rdoc_files: []
         | 
| 42 42 |  | 
| 43 43 | 
             
            files: 
         | 
| 44 | 
            +
            - a.rb
         | 
| 44 45 | 
             
            - lib/main/cast.rb
         | 
| 45 46 | 
             
            - lib/main/dsl.rb
         | 
| 46 47 | 
             
            - lib/main/factories.rb
         | 
| @@ -53,6 +54,7 @@ files: | |
| 53 54 | 
             
            - lib/main/program.rb
         | 
| 54 55 | 
             
            - lib/main/softspoken.rb
         | 
| 55 56 | 
             
            - lib/main/stdext.rb
         | 
| 57 | 
            +
            - lib/main/test.rb
         | 
| 56 58 | 
             
            - lib/main/usage.rb
         | 
| 57 59 | 
             
            - lib/main/util.rb
         | 
| 58 60 | 
             
            - lib/main.rb
         | 
| @@ -68,6 +70,7 @@ files: | |
| 68 70 | 
             
            - samples/f.rb
         | 
| 69 71 | 
             
            - samples/g.rb
         | 
| 70 72 | 
             
            - samples/h.rb
         | 
| 73 | 
            +
            - samples/j.rb
         | 
| 71 74 | 
             
            - test/main.rb
         | 
| 72 75 | 
             
            - TODO
         | 
| 73 76 | 
             
            has_rdoc: true
         |