Class: Heist::Runtime::Identifier
- Inherits:
-
Object
- Object
- Heist::Runtime::Identifier
- Extended by:
- Forwardable
- Includes:
- Expression
- Defined in:
- lib/heist/runtime/data/identifier.rb
Overview
An Identifier
is used to represent any name that appears in Scheme code. We might throw it away and use symbols at some point. I had this idea for storing metadata on Identifier
objects to speed things up but it pretty much came to nothing. Its one saving grace is that it needs to be treated as an Expression
class, and also that we need to store some extra metadata on Identifier
objects, and I don’t want to modify core Ruby classes
Instance Attribute Summary
Attributes included from Expression
Instance Method Summary collapse
-
#==(other) ⇒ Object
Returns
true
if the receiver has the same name as the argument. -
#initialize(name, orginal_name = nil) ⇒ Identifier
constructor
An
Identifier
is initialized using a string that becomes the name of the identifier. - #name ⇒ Object
-
#to_ruby ⇒ Object
Returns a raw Ruby representation of the identifier, for which we use symbols.
Methods included from Expression
Constructor Details
#initialize(name, orginal_name = nil) ⇒ Identifier
An Identifier
is initialized using a string that becomes the name of the identifier. The optional second parameter is used to specify the original name of an identifier if it has been renamed during a macro expansion.
22 23 24 25 |
# File 'lib/heist/runtime/data/identifier.rb', line 22 def initialize(name, orginal_name = nil) @name = name.to_s @orginal_name = (orginal_name || name).to_s end |
Instance Method Details
#==(other) ⇒ Object
Returns true
if the receiver has the same name as the argument.
32 33 34 35 |
# File 'lib/heist/runtime/data/identifier.rb', line 32 def ==(other) return true if Binding === other and other == self Identifier === other and @orginal_name.downcase == other.name.downcase end |
#name ⇒ Object
27 28 29 |
# File 'lib/heist/runtime/data/identifier.rb', line 27 def name @orginal_name end |
#to_ruby ⇒ Object
Returns a raw Ruby representation of the identifier, for which we use symbols.
39 40 41 |
# File 'lib/heist/runtime/data/identifier.rb', line 39 def to_ruby @name.to_s.to_sym end |