Crystal::Macros::MacroId
class Crystal::Macros::MacroId
Overview
A fictitious node representing an idenfitifer like, foo
, Bar
or something_else
.
The parser doesn't create this nodes. Instead, you create them by invoking #id
on some nodes. For example, invoking #id
on a StringLiteral
returns a MacroId for the string's content. Similarly, invoking ID on a SymbolLiteral
, Call
, Var
and Path
return MacroIds for the node's content.
This allows you to treat strings, symbols, variables and calls unifomly. For example:
macro getter(name) def {{name.id}} @{{name.id}} end end getter unicorns getter :unicorns getter "unicorns"
All of the above macro calls work because we invoked #id
, and the generated code looks like this:
def unicorns @unicorns end
If we hand't use #id
, the generated code would have been this:
def unicorns @unicorns end def :unicorns @:unicorns end def "unicorns" @"unicorns" end
The last two definitions are invalid and so will give a compile-time error.
Defined in:
compiler/crystal/macros.crInstance Method Summary
- #+(other : StringLiteral | CharLiteral) : MacroId
Similar to
String#+
. - #=~(range : RegexLiteral) : BoolLiteral
Similar to
String#=~
. - #[](range : RangeLiteral) : MacroId
Similar to
String#[]
. - #capitalize : MacroId
Similar to
String#capitalize
. - #chars : Crystal::Macros::ArrayLiteral(CharLiteral)
Similar to
String#chars
. - #chomp : MacroId
Similar to
String#chomp
. - #downcase : MacroId
Similar to
String#downcase
. - #empty? : BoolLiteral
Similar to
String#empty?
. - #ends_with?(other : StringLiteral | CharLiteral) : BoolLiteral
Similar to
String#ends_with?
. - #gsub(regex : RegexLiteral, replacement : StringLiteral) : MacroId
Similar to
String#gsub
. - #id : MacroId
Returns self.
- #includes?(search : StringLiteral | CharLiteral) : BoolLiteral
Similar to
String#includes?
. - #lines : Crystal::Macros::ArrayLiteral(StringLiteral)
Similar to
String#lines
. - #size : NumberLiteral
Similar to
String#size
. - #split(node : ASTNode) : Crystal::Macros::ArrayLiteral(StringLiteral)
Similar to
String#split
. - #split : Crystal::Macros::ArrayLiteral(StringLiteral)
Similar to
String#split
. - #starts_with?(other : StringLiteral | CharLiteral) : BoolLiteral
Similar to
String#starts_with?
. - #strip : MacroId
Similar to
String#strip
. - #tr(from : StringLiteral, to : StringLiteral) : MacroId
Similar to
String#tr
. - #upcase : MacroId
Similar to
String#upcase
.
Instance methods inherited from class Crystal::Macros::ASTNode
!=(other : ASTNode) : BoolLiteral !=, ==(other : ASTNode) : BoolLiteral ==, class_name : StringLiteral class_name, column_number : StringLiteral | NilLiteral column_number, end_column_number : StringLiteral | NilLiteral end_column_number, end_line_number : StringLiteral | NilLiteral end_line_number, filename : StringLiteral | NilLiteral filename, id : MacroId id, line_number : StringLiteral | NilLiteral line_number, raise(message) : NoReturn raise, stringify : StringLiteral stringify Instance methods inherited from class Reference
==(other : self)==(other) ==, dup dup, hash hash, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, pretty_print(pp) : Nil pretty_print, same?(other : Reference)
same?(other : Nil) same?, to_s(io : IO) : Nil to_s
Class methods inherited from class Reference
new new Instance methods inherited from class Object
!=(other) !=, !~(other) !~, ==(other) ==, ===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, class class, dup dup, hash hash, inspect(io : IO)
inspect inspect, itself itself, not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, tap(&block) tap, to_json(io : IO)
to_json to_json, to_pretty_json(indent : String = " ")
to_pretty_json(io : IO, indent : String = " ") to_pretty_json, to_s
to_s(io : IO) to_s, to_yaml(io : IO)
to_yaml to_yaml, try(&block) try
Class methods inherited from class Object
from_json(string_or_io, root : String) : selffrom_json(string_or_io) : self from_json, from_yaml(string_or_io) : self from_yaml
Instance Method Detail
def +(other : StringLiteral | CharLiteral) : MacroIdSource
Similar to String#+
.
def =~(range : RegexLiteral) : BoolLiteralSource
Similar to String#=~
.
def [](range : RangeLiteral) : MacroIdSource
Similar to String#[]
.
def capitalize : MacroIdSource
Similar to String#capitalize
.
def chars : Crystal::Macros::ArrayLiteral(CharLiteral)Source
Similar to String#chars
.
def chomp : MacroIdSource
Similar to String#chomp
.
def downcase : MacroIdSource
Similar to String#downcase
.
def empty? : BoolLiteralSource
Similar to String#empty?
.
def ends_with?(other : StringLiteral | CharLiteral) : BoolLiteralSource
Similar to String#ends_with?
.
def gsub(regex : RegexLiteral, replacement : StringLiteral) : MacroIdSource
Similar to String#gsub
.
def includes?(search : StringLiteral | CharLiteral) : BoolLiteralSource
Similar to String#includes?
.
def lines : Crystal::Macros::ArrayLiteral(StringLiteral)Source
Similar to String#lines
.
def size : NumberLiteralSource
Similar to String#size
.
def split(node : ASTNode) : Crystal::Macros::ArrayLiteral(StringLiteral)Source
Similar to String#split
.
def split : Crystal::Macros::ArrayLiteral(StringLiteral)Source
Similar to String#split
.
def starts_with?(other : StringLiteral | CharLiteral) : BoolLiteralSource
Similar to String#starts_with?
.
def strip : MacroIdSource
Similar to String#strip
.
def tr(from : StringLiteral, to : StringLiteral) : MacroIdSource
Similar to String#tr
.
def upcase : MacroIdSource
Similar to String#upcase
.
© 2012–2017 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.22.0/Crystal/Macros/MacroId.html