class EacRubyUtils::RegexpParser

Attributes

builder_proc[R]
pattern[R]

Public Class Methods

new(pattern, &builder_proc) click to toggle source
# File lib/eac_ruby_utils/regexp_parser.rb, line 7
def initialize(pattern, &builder_proc)
  @pattern = pattern
  @builder_proc = builder_proc
end

Public Instance Methods

parse(string) click to toggle source
# File lib/eac_ruby_utils/regexp_parser.rb, line 12
def parse(string)
  internal_parse(string)[1]
end
parse!(string) click to toggle source
# File lib/eac_ruby_utils/regexp_parser.rb, line 16
def parse!(string)
  match, result = internal_parse(string)
  return result if match

  raise ::ArgumentError, "String \"#{string}\" does not match pattern \"#{pattern}\""
end

Private Instance Methods

internal_parse(string) click to toggle source
# File lib/eac_ruby_utils/regexp_parser.rb, line 25
def internal_parse(string)
  m = pattern.match(string)
  if m
    [true, builder_proc ? builder_proc.call(m) : m]
  else
    [false, nil]
  end
end