This is the base class of all AST nodes. This methods are available to all AST nodes.
Returns true if this node is falsey, and false if it's truthy.
Returns true if this node's textual representation is not the same as the other node.
Returns true if this node's textual representation is the same as the other node.
Returns a StringLiteral that contains this node's name.
Returns this node as a MacroId.
Tests if this node is of a specific type.
Returns a StringLiteral that contains this node's textual representation.
Returns true if this node is falsey, and false if it's truthy.
Returns true if this node's textual representation is not the same as the other node.
Returns true if this node's textual representation is the same as the other node.
Returns a StringLiteral that contains this node's name.
macro test
{{ "foo".class_name }}
end
puts test #=> prints StringLiteralReturns this node as a MacroId. Useful when you need an identifier
out of a StringLiteral, SymbolLiteral, Var or Call.
macro define_method(name, content)
def {{name.id}}
{{content}}
end
end
define_method :foo, 1
define_method "bar", 2
define_method baz, 3
puts foo #=> prints 1
puts bar #=> prints 2
puts baz #=> prints 3Tests if this node is of a specific type. For example:
macro test(node)
{% if node.is_a?(NumberLiteral) %}
puts "Got a number literal"
{% else %}
puts "Didn't get a number literal"
{% end %}
end
test 1 #=> prints "Got a number literal"
test "hi" #=> prints "Didn't get a number literal"Returns a StringLiteral that contains this node's textual representation.
Note that invoking stringify on a string literal will return a StringLiteral
that contains a string literal.
macro test
{{ "foo".stringify }}
end
puts test # prints "foo" (including the double quotes)