abstract class Crystal::Macros::ASTNode
inherits Reference
¶
This is the base class of all AST nodes. This methods are available to all AST nodes.
Direct known subclasses
Crystal::Macros::Annotation
Crystal::Macros::Arg
Crystal::Macros::ArrayLiteral
Crystal::Macros::Assign
Crystal::Macros::BinaryOp
Crystal::Macros::Block
Crystal::Macros::BoolLiteral
Crystal::Macros::Call
Crystal::Macros::Case
Crystal::Macros::Cast
Crystal::Macros::CharLiteral
Crystal::Macros::ClassDef
Crystal::Macros::ClassVar
Crystal::Macros::Def
Crystal::Macros::Expressions
Crystal::Macros::Generic
Crystal::Macros::Global
Crystal::Macros::HashLiteral
Crystal::Macros::If
Crystal::Macros::ImplicitObj
Crystal::Macros::InstanceVar
Crystal::Macros::IsA
Crystal::Macros::Macro
Crystal::Macros::MacroId
Crystal::Macros::MetaVar
Crystal::Macros::MultiAssign
Crystal::Macros::NamedArgument
Crystal::Macros::NamedTupleLiteral
Crystal::Macros::NilableCast
Crystal::Macros::NilLiteral
Crystal::Macros::Nop
Crystal::Macros::NumberLiteral
Crystal::Macros::OffsetOf
Crystal::Macros::Path
Crystal::Macros::ProcLiteral
Crystal::Macros::ProcNotation
Crystal::Macros::ProcPointer
Crystal::Macros::RangeLiteral
Crystal::Macros::ReadInstanceVar
Crystal::Macros::RegexLiteral
Crystal::Macros::Require
Crystal::Macros::RespondsTo
Crystal::Macros::Splat
Crystal::Macros::StringInterpolation
Crystal::Macros::StringLiteral
Crystal::Macros::SymbolLiteral
Crystal::Macros::TupleLiteral
Crystal::Macros::TypeDeclaration
Crystal::Macros::TypeNode
Crystal::Macros::UnaryExpression
Crystal::Macros::UninitializedVar
Crystal::Macros::Union
Crystal::Macros::Var
Crystal::Macros::VisibilityModifier
Crystal::Macros::When
Crystal::Macros::While
Methods¶
#!=(other : ASTNode) : BoolLiteral
¶
(other : ASTNode) : BoolLiteral
Returns true
if this node's textual representation is not the same as
the other node.
#==(other : ASTNode) : BoolLiteral
¶
(other : ASTNode) : BoolLiteral
Returns true
if this node's textual representation is the same as
the other node.
#class_name : StringLiteral
¶
: StringLiteral
Returns a StringLiteral
that contains this node's name.
macro test
{{ "foo".class_name }}
end
puts test # => prints StringLiteral
#column_number : StringLiteral | NilLiteral
¶
: StringLiteral | NilLiteral
Returns the column number where this node begins.
Might return nil
if the location is not known.
The first column number in a line is 1
.
#end_column_number : StringLiteral | NilLiteral
¶
: StringLiteral | NilLiteral
Returns the column number where this node ends.
Might return nil
if the location is not known.
The first column number in a line is 1
.
#end_line_number : StringLiteral | NilLiteral
¶
: StringLiteral | NilLiteral
Returns the line number where this node ends.
Might return nil
if the location is not known.
The first line number in a file is 1
.
#filename : StringLiteral | NilLiteral
¶
: StringLiteral | NilLiteral
Returns the filename where this node is located.
Might return nil
if the location is not known.
#id : MacroId
¶
: MacroId
Returns 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 3
#line_number : StringLiteral | NilLiteral
¶
: StringLiteral | NilLiteral
Returns the line number where this node begins.
Might return nil
if the location is not known.
The first line number in a file is 1.
#raise(message) : NoReturn
¶
(message) : NoReturn
Gives a compile-time error with the given message. This will highlight this node in the error message.
#stringify : StringLiteral
¶
: StringLiteral
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)
#symbolize : SymbolLiteral
¶
: SymbolLiteral
Returns a SymbolLiteral
that contains this node's textual representation.
{{ "foo".id.symbolize }} # => :foo