class MethodPattern::PatternMatchedFunction

Public Class Methods

new(name) click to toggle source
# File lib/method_pattern.rb, line 16
def initialize name
  @name = name
  @patterns = []
  @default = proc do |*args|
    raise ArgumentError,
      "method #{self.class.inspect}##{name} does not know how to handle arguments: #{args.map(&:inspect).join(', ')}"
  end
end

Public Instance Methods

match(args) click to toggle source
# File lib/method_pattern.rb, line 29
def match args
  @patterns.each do |pattern|
    if pattern.match? args
      return pattern.block
    end
  end

  @default
end
with(*patterns, &block) click to toggle source
# File lib/method_pattern.rb, line 25
def with *patterns, &block
  @patterns << Pattern.new(patterns, block)
end