module Patm::DSL

Public Instance Methods

define_matcher(name, &rule) click to toggle source
# File lib/patm.rb, line 666
    def define_matcher(name, &rule)
      rule = Rule.new(&rule).compile
      ctx = rule.context
      self.class_variable_set("@@_patm_ctx_#{name}", ctx)
      src = <<-RUBY
      def #{name}(_obj)
        _self = self
        _ctx = self.#{self.name ? 'class' : 'singleton_class'}.class_variable_get(:@@_patm_ctx_#{name})
        _match = {}
#{rule.src_body}
      end
      RUBY
      class_eval(src)
    end