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