class Baf::Option
Constants
- LONG_NORMALIZE_REPLACE
- LONG_NORMALIZE_SEARCH
- LONG_PREFIX
- LONG_WITH_ARG_GLUE
- PARSER_MESSAGE
- PARSER_MESSAGE_TAIL
Attributes
arg[RW]
block[RW]
desc[RW]
long[RW]
short[RW]
tail[RW]
Public Class Methods
new(*args, tail: false)
click to toggle source
# File lib/baf/option.rb, line 12 def initialize *args, tail: false attrs = args.size > 1 ? build_attrs(*args) : args[0] attrs.each { |k, v| send :"#{k}=", v } self.tail = tail end
Public Instance Methods
block?()
click to toggle source
# File lib/baf/option.rb, line 22 def block? !!block end
env_definition()
click to toggle source
# File lib/baf/option.rb, line 18 def env_definition :accessor end
tail?()
click to toggle source
# File lib/baf/option.rb, line 26 def tail? !!tail end
to_parser_arguments(env)
click to toggle source
# File lib/baf/option.rb, line 30 def to_parser_arguments env message = tail? ? PARSER_MESSAGE_TAIL : PARSER_MESSAGE mblock = if block? -> *args { block[*args, env] } else parser_argument_block env end [message, "-#{short}", parser_argument_long, parser_argument_desc, mblock] end
Private Instance Methods
build_attrs(short, long, arg_or_desc = nil, desc_or_block = nil, block = nil)
click to toggle source
# File lib/baf/option.rb, line 42 def build_attrs short, long, arg_or_desc = nil, desc_or_block = nil, block = nil { short: short, long: long, desc: arg_or_desc }.merge case desc_or_block when Proc { desc: arg_or_desc, block: desc_or_block } when String { arg: arg_or_desc, desc: desc_or_block, block: block } else {} end end
parser_argument_block(env)
click to toggle source
# File lib/baf/option.rb, line 77 def parser_argument_block env -> v { env.send :"#{long}=", v } end
parser_argument_desc()
click to toggle source
# File lib/baf/option.rb, line 73 def parser_argument_desc desc end
parser_argument_long()
click to toggle source
# File lib/baf/option.rb, line 64 def parser_argument_long [ LONG_PREFIX + long .to_s .tr(LONG_NORMALIZE_SEARCH, LONG_NORMALIZE_REPLACE), arg ].compact.join LONG_WITH_ARG_GLUE end