Пример использования собственного OptionHandler
#
# Пример, который демонстрирует использование собственного
# OptionHandler.
#
require 'rubygems'
require 'RuCodeGen'
class LinesGenerator
def initialize
@file = nil
@lines = []
end
attr_reader :lines
def get_file; @file; end
def file( v ); @file = v; end
def line( length ); @lines << length; end
class OptionHandler < RuCodeGen::OptionHandler
def banner
"Just a test of OptionHandler usage\n"
end
def setup( parser, result )
result.lines_segment = '-'
parser.on( "-l", "--line TYPE", [ "single", "double" ],
{ 'single' => '-', 'double' => '=' },
"type of line (single or double)" ) do |type|
result.lines_segment = type
end
end
end
class Generator
def initialize( lines )
@lines = lines
end
def generate( to )
segment_type = RuCodeGen::RunMode.options.lines_segment
@lines.each do |length|
to << segment_type * length << "\n"
end
end
end
end
RuCodeGen::RunMode.add_option_handler( LinesGenerator::OptionHandler.new )
def lines( &blk )
data = LinesGenerator.new
blk[ data ]
RuCodeGen::Generators.add(
RuCodeGen::FilenameProducer.produce( $0, data.get_file ),
LinesGenerator::Generator.new( data.lines ) )
end
if __FILE__ == $0
lines { |d|
d.file :script_relative => 'lines.txt'
d.line 3
d.line 5
d.line 8
}
end