class Baf::OptionsRegistrant
Constants
- HELP_PARSER_ARGS
- SUMMARY_HEADER
Attributes
options[R]
Public Class Methods
new(options = [])
click to toggle source
# File lib/baf/options_registrant.rb, line 15 def initialize options = [] @options = options end
Public Instance Methods
flag(*args, **opts)
click to toggle source
# File lib/baf/options_registrant.rb, line 19 def flag *args, **opts options << Flag.new(*args, **opts) end
option(*args)
click to toggle source
# File lib/baf/options_registrant.rb, line 23 def option *args options << Option.new(*args) end
register(env, parser) { || ... }
click to toggle source
# File lib/baf/options_registrant.rb, line 27 def register env, parser yield if block_given? parser.banner = banner if banner parser.separator SUMMARY_HEADER options_tail, options_standard = options.partition &:tail? options_standard.each { |opt| register_option env, parser, opt } register_default_options env, parser options_tail.each { |opt| register_option env, parser, opt } end
Private Instance Methods
define_env_accessor(env, name)
click to toggle source
# File lib/baf/options_registrant.rb, line 41 def define_env_accessor env, name (class << env; self end).send :attr_accessor, name end
define_env_predicate(env, name)
click to toggle source
# File lib/baf/options_registrant.rb, line 45 def define_env_predicate env, name define_env_accessor env, name env.send :"#{name}=", false env.define_singleton_method :"#{name}?" do instance_variable_get :"@#{name}" end env.instance_variable_set :"@#{name}", false end
register_default_options(env, parser)
click to toggle source
# File lib/baf/options_registrant.rb, line 54 def register_default_options env, parser parser.separator '' if options.any? parser.on_tail *HELP_PARSER_ARGS do env.print parser exit end end
register_option(env, parser, opt)
click to toggle source
# File lib/baf/options_registrant.rb, line 62 def register_option env, parser, opt send :"define_env_#{opt.env_definition}", env, opt.long unless opt.block? *args, block = opt.to_parser_arguments env parser.send *args, &block end