module Kenma::Macro::MacroPattern

Public Instance Methods

macro_patterns() click to toggle source
# File lib/kenma/macro/macro_pattern.rb, line 87
def macro_patterns
  singleton_class.ancestors.grep(Kenma::Macroable).map(&:macro_patterns).inject({}, &:merge)
end
node_missing(node, parent) click to toggle source
Calls superclass method
# File lib/kenma/macro/macro_pattern.rb, line 93
def node_missing(node, parent)
  macro = macro_patterns.lazy.reverse_each.map { |name, pat| [name, pat.match(node)] }.find { |name, captured| captured }
  if macro
    if macro[1].empty?
      send(macro[0], node)
    else
      send(macro[0], node, **macro[1])
    end
  else
    super(node, parent)
  end
end