Class: SyntaxTree::CHAR

Inherits:
Node
  • Object
show all
Defined in:
lib/syntax_tree/node.rb

Overview

CHAR irepresents a single codepoint in the script encoding.

?a

In the example above, the CHAR node represents the string literal “a”. You can use control characters with this as well, as in ?C-a.

Instance Attribute Summary collapse

Attributes inherited from Node

#location

Instance Method Summary collapse

Methods inherited from Node

#pretty_print, #to_json

Constructor Details

#initialize(value:, location:, comments: []) ⇒ CHAR

Returns a new instance of CHAR.



179
180
181
182
183
# File 'lib/syntax_tree/node.rb', line 179

def initialize(value:, location:, comments: [])
  @value = value
  @location = location
  @comments = comments
end

Instance Attribute Details

#commentsObject (readonly)

Array[ Comment | EmbDoc ]

the comments attached to this node



177
178
179
# File 'lib/syntax_tree/node.rb', line 177

def comments
  @comments
end

#valueObject (readonly)

String

the value of the character literal



174
175
176
# File 'lib/syntax_tree/node.rb', line 174

def value
  @value
end

Instance Method Details

#accept(visitor) ⇒ Object



185
186
187
# File 'lib/syntax_tree/node.rb', line 185

def accept(visitor)
  visitor.visit_CHAR(self)
end

#child_nodesObject Also known as: deconstruct



189
190
191
# File 'lib/syntax_tree/node.rb', line 189

def child_nodes
  []
end

#deconstruct_keys(keys) ⇒ Object



195
196
197
# File 'lib/syntax_tree/node.rb', line 195

def deconstruct_keys(keys)
  { value: value, location: location, comments: comments }
end

#format(q) ⇒ Object



199
200
201
202
203
204
205
206
207
# File 'lib/syntax_tree/node.rb', line 199

def format(q)
  if value.length != 2
    q.text(value)
  else
    q.text(q.quote)
    q.text(value[1] == "\"" ? "\\\"" : value[1])
    q.text(q.quote)
  end
end