Class: SyntaxTree::CHAR

Inherits:
Object
  • Object
show all
Defined in:
lib/syntax_tree.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

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of CHAR.



513
514
515
516
517
# File 'lib/syntax_tree.rb', line 513

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



511
512
513
# File 'lib/syntax_tree.rb', line 511

def comments
  @comments
end

#locationObject (readonly)

Location

the location of this node



508
509
510
# File 'lib/syntax_tree.rb', line 508

def location
  @location
end

#valueObject (readonly)

String

the value of the character literal



505
506
507
# File 'lib/syntax_tree.rb', line 505

def value
  @value
end

Instance Method Details

#child_nodesObject



519
520
521
# File 'lib/syntax_tree.rb', line 519

def child_nodes
  []
end

#format(q) ⇒ Object



523
524
525
526
527
528
529
530
531
# File 'lib/syntax_tree.rb', line 523

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

#pretty_print(q) ⇒ Object



533
534
535
536
537
538
539
540
541
542
# File 'lib/syntax_tree.rb', line 533

def pretty_print(q)
  q.group(2, "(", ")") do
    q.text("CHAR")

    q.breakable
    q.pp(value)

    q.pp(Comment::List.new(comments))
  end
end

#to_json(*opts) ⇒ Object



544
545
546
547
548
# File 'lib/syntax_tree.rb', line 544

def to_json(*opts)
  { type: :CHAR, value: value, loc: location, cmts: comments }.to_json(
    *opts
  )
end