Class: Opal::Sexp
Overview
[Opal::Sexp] is used to build up the syntax tree inside [Opal::Parser]. The compiler then steps through the sexp trees to generate the javascript code.
For example, an array of integers [1, 2] might be represented by:
s(:array, s(:int, 1), s(:int, 2))
Instance Attribute Summary collapse
-
#array ⇒ Object
readonly
Returns the value of attribute array.
-
#source ⇒ Object
Returns the value of attribute source.
Instance Method Summary collapse
- #<<(other) ⇒ Object
- #==(other) ⇒ Object (also: #eql?)
- #children ⇒ Object
- #column ⇒ Object
- #dup ⇒ Object
-
#initialize(args) ⇒ Sexp
constructor
A new instance of Sexp.
- #inspect ⇒ Object (also: #to_s)
- #line ⇒ Object
- #method_missing(sym, *args, &block) ⇒ Object
- #pretty_inspect ⇒ Object
- #push(*parts) ⇒ Object
- #to_ary ⇒ Object
- #type ⇒ Object
- #type=(type) ⇒ Object
Constructor Details
#initialize(args) ⇒ Sexp
Returns a new instance of Sexp
15 16 17
# File 'opal/lib/opal/parser/sexp.rb', line 15 def initialize(args) @array = args end
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args, &block) ⇒ Object
31 32 33
# File 'opal/lib/opal/parser/sexp.rb', line 31 def method_missing(sym, *args, &block) @array.send sym, *args, &block end
Instance Attribute Details
#array ⇒ Object (readonly)
Returns the value of attribute array
11 12 13
# File 'opal/lib/opal/parser/sexp.rb', line 11 def array @array end
#source ⇒ Object
Returns the value of attribute source
13 14 15
# File 'opal/lib/opal/parser/sexp.rb', line 13 def source @source end
Instance Method Details
#<<(other) ⇒ Object
35 36 37 38
# File 'opal/lib/opal/parser/sexp.rb', line 35 def <<(other) @array << other self end
#==(other) ⇒ Object Also known as: eql?
53 54 55 56 57 58 59
# File 'opal/lib/opal/parser/sexp.rb', line 53 def ==(other) if other.is_a? Sexp @array == other.array else @array == other end end
#children ⇒ Object
27 28 29
# File 'opal/lib/opal/parser/sexp.rb', line 27 def children @array[1..-1] end
#column ⇒ Object
67 68 69
# File 'opal/lib/opal/parser/sexp.rb', line 67 def column @source && @source[1] end
#dup ⇒ Object
#inspect ⇒ Object Also known as: to_s
71 72 73
# File 'opal/lib/opal/parser/sexp.rb', line 71 def inspect "(#{@array.map { |e| e.inspect }.join ', '})" end
#line ⇒ Object
63 64 65
# File 'opal/lib/opal/parser/sexp.rb', line 63 def line @source && @source[0] end
#pretty_inspect ⇒ Object
75 76 77
# File 'opal/lib/opal/parser/sexp.rb', line 75 def pretty_inspect "(#{line ? "#{line}" : ''}#{@array.map { |e| e.inspect }.join ', '})" end
#push(*parts) ⇒ Object
40 41 42 43
# File 'opal/lib/opal/parser/sexp.rb', line 40 def push(*parts) @array.push(*parts) self end
#to_ary ⇒ Object
45 46 47
# File 'opal/lib/opal/parser/sexp.rb', line 45 def to_ary @array end
#type ⇒ Object
19 20 21
# File 'opal/lib/opal/parser/sexp.rb', line 19 def type @array[0] end
#type=(type) ⇒ Object
23 24 25
# File 'opal/lib/opal/parser/sexp.rb', line 23 def type=(type) @array[0] = type end