class Metamorpher::Builders::AST::LiteralBuilder

Public Instance Methods

literal!(name, *children) click to toggle source
# File lib/metamorpher/builders/ast/literal_builder.rb, line 7
def literal!(name, *children)
  Terms::Literal.new(name: name, children: children.map(&method(:termify)))
end
method_missing(method, *arguments, &block) click to toggle source
Calls superclass method
# File lib/metamorpher/builders/ast/literal_builder.rb, line 15
def method_missing(method, *arguments, &block)
  if shorthand?(method, *arguments, &block)
    literal!(method, *arguments)
  else
    super.method_missing(method, *arguments, &block)
  end
end
shorthand?(method, *_arguments, &_block) click to toggle source
# File lib/metamorpher/builders/ast/literal_builder.rb, line 11
def shorthand?(method, *_arguments, &_block)
  !method[/\p{Upper}/]
end

Private Instance Methods

termify(item) click to toggle source
# File lib/metamorpher/builders/ast/literal_builder.rb, line 25
def termify(item)
  item.is_a?(Terms::Term) ? item.dup : literal!(item)
end