class MethodPattern::PatternMatchedFunction::Pattern

Attributes

accepted[R]
block[R]

Public Class Methods

new(accepted, block) click to toggle source
# File lib/method_pattern.rb, line 42
def initialize accepted, block
  @accepted = accepted
  @block = block
end

Public Instance Methods

match?(args) click to toggle source
# File lib/method_pattern.rb, line 47
def match? args
  @accepted.each_with_index do |pattern, index|
    return false unless match_arg?(pattern, args[index])
  end

  true
end
match_arg?(pattern, arg) click to toggle source
# File lib/method_pattern.rb, line 55
def match_arg? pattern, arg
  case pattern
  when Hash
    return false unless arg.is_a? Hash

    pattern.each do |key, value|
      return false unless arg.key?(key) && match_arg?(value, arg[key])
    end

    true
  else
    pattern === arg
  end
end