class Lab42::Rgxargs::ArgumentMatcher

Constants

Error
Predefined

Attributes

arg_name[R]
converter[R]
matcher[R]

Public Class Methods

new(matcher, converter, arg_name: nil) click to toggle source
# File lib/lab42/rgxargs/argument_matcher.rb, line 24
def initialize(matcher, converter, arg_name: nil)
  @arg_name  = arg_name
  @matcher   = matcher
  @converter = converter || _get_predefined
end

Public Instance Methods

match(value) click to toggle source
# File lib/lab42/rgxargs/argument_matcher.rb, line 12
def match value
  case matcher
  when Regexp
    match = matcher.match(value)
    match && [converter.(*match.captures), arg_name] 
  else
    matcher.to_s == value && [converter.(), arg_name]
  end
end

Private Instance Methods

_get_predefined() click to toggle source
# File lib/lab42/rgxargs/argument_matcher.rb, line 30
def _get_predefined
  @matcher, converter = Predefined.fetch(matcher) { raise Error, "undefined syntax #{matcher}" }
  converter
end