class MxxRu::CmdLineOptionProcessor
Singleton for centralized mechanizm of command line options parsing.
Since v.1.4.0
Each part of Mxx_ru which need some command line option must provider special option processor for CmdLineOptionProcessor
singleton:
module MxxRu module SomeLangSupport class OptionParser include Singleton ... def prepare( parser ) # Instance of OptionParser from stdlib. parser.separator '' parser.separator 'Some Language Support options:' parser.on( '-i', '--include PATH', 'Set up include path' ) do |path| ... some processig ... end ... setting another option handlers ... end end end end # OptionParser must be added to CmdLineOptionProcessor. MxxRu::CmdLineOptionProcessor.add_processor( MxxRu::SomeLangSupport::OptionParser.instance )
See examples of using this technique in MxxRu::Util::Mode
and MxxRu::Cpp::Mode
classes.
Public Class Methods
new()
click to toggle source
# File lib/mxx_ru/cmd_line_option_processor.rb, line 72 def initialize @processors = [] @parsed = false end
Public Instance Methods
add_processor( processor )
click to toggle source
Add yet another option processor for processors list.
# File lib/mxx_ru/cmd_line_option_processor.rb, line 78 def add_processor( processor ) @processors << processor @parsed = false end
parse()
click to toggle source
Performs parsing of ARGV content by current processors.
Finishes work of script if –help or –version found in ARGV.
# File lib/mxx_ru/cmd_line_option_processor.rb, line 86 def parse unless @parsed parser = OptionParser.new do |p| prepare_option_parser( p ) end begin parser.parse( ARGV ) rescue => x $stderr.puts "command line parsing error '#{x.message}'" exit( 2 ) end @parsed = true end end
Protected Instance Methods
prepare_option_parser( parser )
click to toggle source
Calls preparse() method for each processor. And then add common command line options to the parser.
# File lib/mxx_ru/cmd_line_option_processor.rb, line 106 def prepare_option_parser( parser ) @processors.each do |p| p.prepare( parser ) end parser.separator '' parser.separator 'Auxilary options:' parser.on_tail( '-h', '--help', 'Show usage help and options summary' ) do puts parser exit end parser.on_tail( '--version', 'Show version' ) do puts 'Mxx_ru v.' + MXX_RU_VERSION exit end end