module Anytick

Constants

VERSION

Public Class Methods

DefineMethod(**kw_args) click to toggle source
# File lib/anytick.rb, line 47
def self.DefineMethod(**kw_args)
  DefineMethod.new(**kw_args)
end
rule(rule_maker, *other_rule_makers) click to toggle source
# File lib/anytick.rb, line 34
def self.rule(rule_maker, *other_rule_makers)
  rule_maker_list = [ rule_maker ] + other_rule_makers
  rule_list = rule_maker_list.map(&:make_rule)
  action = make_backtick_action(rule_list)

  Module.new{
    define_method(:`, action)
    private :`
  }
end

Private Class Methods

make_backtick_action(rule_list) click to toggle source
Calls superclass method
# File lib/anytick.rb, line 20
def make_backtick_action(rule_list)
  lambda{|expr|
    for rule in rule_list
      if (match_result = (rule.match? expr)) then
        namespace = self
        return rule.execute(namespace, expr, match_result)
      end
    end
    super(expr)
  }
end