bin/getopts/uttk.rb in uttk-0.3.6.1 vs bin/getopts/uttk.rb in uttk-0.4.5.0
- old
+ new
@@ -1,12 +1,12 @@
# Author:: The Uttk Team.
# Copyright:: Copyright (c) 2004 Uttk team. All rights reserved.
# License:: LGPL
-# $Id: /w/fey/uttk/trunk/bin/getopts/uttk.rb 22673 2006-03-11T19:16:37.840151Z pouillar $
+# $Id: /w/fey/uttk/trunk/bin/getopts/uttk.rb 53904 2007-01-13T12:03:13.952467Z ertai $
require 'optparse'
-Module::Hierarchy.import!
+ModuleExtensions::Hierarchy.import!
PpHierarchy.import!
module Uttk
module Getopts
@@ -82,11 +82,11 @@
### Loader options
optparser.separator ''
optparser.separator 'Loader options:'
- all_loaders = sub_modules(Loaders)
+ all_loaders = sub_modules(Loaders, Loaders::Loader)
optparser.on('-L',
'--loader [TYPE]',
all_loaders,
'Select a loader (no argument for the list)') do |aLoader|
@@ -121,25 +121,37 @@
end
end
end
optparser.on('--filter-help', 'More information about filters') do
- all_filters = sub_modules(Filters) + sub_modules(Dumpers)
+ all_filters = sub_modules(Filters, Filters::Filter)
+ all_dumpers = sub_modules(Dumpers, Dumpers::Dumper)
puts %Q{
|filters:
| The --filter (-F) option take a pipeline description which
| is a little yaml document.
|
| The syntax is basic:
|
- | Observer ::= <FilterClass>
- | | <FilterClass> ":" Observer
- | | "[" Observer* "]"
+ | Observer ::= Class
+ | | <filename>
+ | | Class ":" Observer
+ | | "[" Observers "]"
| ;
|
- | Filters ::= #{all_filters.join(' | ')} ;
+ | Observers ::= Observer
+ | | Observer "," Observers
+ | ;
|
+ | Class ::= FilterClass | DumperClass ;
+ |
+ | FilterClass ::= #{all_filters.join("\n| | ")}
+ | ;
+ |
+ | DumperClass ::= #{all_dumpers.join("\n| | ")}
+ | ;
+ |
| Examples:
| Yaml # Use the Yaml output format on the stdout
| Yaml: foo # Use Yaml on file foo
| Xml: foo, Yaml: bar # Use Xml on file foo and Yaml on file bar
| Xml: [ foo, bar] # Use Xml on files foo and bar
@@ -346,11 +358,12 @@
argv.map! { |x| x == '-' ? STDIN : Pathname.new(x) }
opts
end
protected
- def self.sub_modules(mod)
- mod.constants.sort!.map! { |c| c.to_sym }
+ def self.sub_modules(mod, top)
+ mod.constants.find_all { |c| mod.const_get(c) < top }.
+ sort!.map! { |c| c.to_sym }
end
protected
def self.pp_class_hierarchy(name, *others)
if name =~ /^(\w+)::(\w+)$/