class Crystal::Macros::MacroId
Overview
A fictitious node representing an identifier like, foo, Bar or something_else.
The parser doesn't create these 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 returns a MacroId for the node's content.
This allows you to treat strings, symbols, variables and calls uniformly. 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 hadn't used #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#+. - #<(other : StringLiteral | MacroId) : BoolLiteral
Similar to
String#< - #=~(range : RegexLiteral) : BoolLiteral
Similar to
String#=~. - #>(other : StringLiteral | MacroId) : BoolLiteral
Similar to
String#> - #[](range : RangeLiteral) : MacroId
Similar to
String#[]. - #camelcase(*, lower : BoolLiteral = false) : MacroId
Similar to
String#camelcase. - #capitalize : MacroId
Similar to
String#capitalize. - #chars : ArrayLiteral(CharLiteral)
Similar to
String#chars. - #chomp : MacroId
Similar to
String#chomp. - #count(other : CharLiteral) : NumberLiteral
Similar to
String#count. - #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 a
MacroIdfor this string's contents. - #includes?(search : StringLiteral | CharLiteral) : BoolLiteral
Similar to
String#includes?. - #lines : ArrayLiteral(StringLiteral)
Similar to
String#lines. - #size : NumberLiteral
Similar to
String#size. - #split(node : ASTNode) : ArrayLiteral(StringLiteral)
Similar to
String#split. - #split : ArrayLiteral(StringLiteral)
Similar to
String#split. - #starts_with?(other : StringLiteral | CharLiteral) : BoolLiteral
Similar to
String#starts_with?. - #strip : MacroId
Similar to
String#strip. - #titleize : MacroId
Similar to
String#titleize. - #to_i(base = 10)
Similar to
String#to_i. - #tr(from : StringLiteral, to : StringLiteral) : MacroId
Similar to
String#tr. - #underscore : MacroId
Similar to
String#underscore. - #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, is_a?(type : TypeNode) : BoolLiteral is_a?, line_number : StringLiteral | NilLiteral line_number, nil? : BoolLiteral nil?, raise(message) : NoReturn raise, stringify : StringLiteral stringify, symbolize : SymbolLiteral symbolize Instance Method Detail
def +(other : StringLiteral | CharLiteral) : MacroIdSource
Similar to String#+.
def <(other : StringLiteral | MacroId) : BoolLiteralSource
Similar to String#<
def =~(range : RegexLiteral) : BoolLiteralSource
Similar to String#=~.
def >(other : StringLiteral | MacroId) : BoolLiteralSource
Similar to String#>
def [](range : RangeLiteral) : MacroIdSource
Similar to String#[].
def camelcase(*, lower : BoolLiteral = false) : MacroIdSource
Similar to String#camelcase.
def capitalize : MacroIdSource
Similar to String#capitalize.
def chars : ArrayLiteral(CharLiteral)Source
Similar to String#chars.
def chomp : MacroIdSource
Similar to String#chomp.
def count(other : CharLiteral) : NumberLiteralSource
Similar to String#count.
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 : ArrayLiteral(StringLiteral)Source
Similar to String#lines.
def size : NumberLiteralSource
Similar to String#size.
def split(node : ASTNode) : ArrayLiteral(StringLiteral)Source
Similar to String#split.
def split : 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 titleize : MacroIdSource
Similar to String#titleize.
def to_i(base = 10)Source
Similar to String#to_i.
def tr(from : StringLiteral, to : StringLiteral) : MacroIdSource
Similar to String#tr.
def underscore : MacroIdSource
Similar to String#underscore.
def upcase : MacroIdSource
Similar to String#upcase.
© 2012–2021 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/1.2.1/Crystal/Macros/MacroId.html