class Toys::Flag::Syntax


Representation of a single flag.
#

def configure_canonical(canonical_flag_type, canonical_value_type,

# @private
def configure_canonical(canonical_flag_type, canonical_value_type,
                        canonical_value_label, canonical_value_delim)
  return unless flag_type.nil?
  @flag_type = canonical_flag_type
  return unless canonical_flag_type == :value
  @value_type = canonical_value_type
  canonical_value_delim = "" if canonical_value_delim == "=" && flag_style == :short
  canonical_value_delim = "=" if canonical_value_delim == "" && flag_style == :long
  @value_delim = canonical_value_delim
  @value_label = canonical_value_label
  label = @value_type == :optional ? "[#{@value_label}]" : @value_label
  @canonical_str = "#{str_without_value}#{@value_delim}#{label}"
end

def initialize(str)

Parameters:
  • str (String) -- syntax.
def initialize(str)
  case str
  when /\A(-([\?\w]))\z/
    setup(str, $1, nil, $1, $2, :short, nil, nil, nil, nil)
  when /\A(-([\?\w]))( ?)\[(\w+)\]\z/
    setup(str, $1, nil, $1, $2, :short, :value, :optional, $3, $4)
  when /\A(-([\?\w]))\[( )(\w+)\]\z/
    setup(str, $1, nil, $1, $2, :short, :value, :optional, $3, $4)
  when /\A(-([\?\w]))( ?)(\w+)\z/
    setup(str, $1, nil, $1, $2, :short, :value, :required, $3, $4)
  when /\A--\[no-\](\w[\?\w-]*)\z/
    setup(str, "--#{$1}", "--no-#{$1}", str, $1, :long, :boolean, nil, nil, nil)
  when /\A(--(\w[\?\w-]*))\z/
    setup(str, $1, nil, $1, $2, :long, nil, nil, nil, nil)
  when /\A(--(\w[\?\w-]*))([= ])\[(\w+)\]\z/
    setup(str, $1, nil, $1, $2, :long, :value, :optional, $3, $4)
  when /\A(--(\w[\?\w-]*))\[([= ])(\w+)\]\z/
    setup(str, $1, nil, $1, $2, :long, :value, :optional, $3, $4)
  when /\A(--(\w[\?\w-]*))([= ])(\w+)\z/
    setup(str, $1, nil, $1, $2, :long, :value, :required, $3, $4)
  else
    raise ToolDefinitionError, "Illegal flag: #{str.inspect}"
  end
end

def setup(original_str, positive_flag, negative_flag, str_without_value, sort_str,

def setup(original_str, positive_flag, negative_flag, str_without_value, sort_str,
          flag_style, flag_type, value_type, value_delim, value_label)
  @original_str = original_str
  @positive_flag = positive_flag
  @negative_flag = negative_flag
  @flags = [positive_flag]
  @flags << negative_flag if negative_flag
  @str_without_value = str_without_value
  @sort_str = sort_str
  @flag_style = flag_style
  @flag_type = flag_type
  @value_type = value_type
  @value_delim = value_delim
  @value_label = value_label ? value_label.upcase : value_label
  @canonical_str = original_str
end