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+)$/