Class: Sablon::HTMLConverter::ASTBuilder
- Inherits:
-
Object
- Object
- Sablon::HTMLConverter::ASTBuilder
- Defined in:
- lib/sablon/html/converter.rb
Defined Under Namespace
Classes: Layer
Instance Method Summary collapse
- #done? ⇒ Boolean
- #emit(node) ⇒ Object
- #ilvl ⇒ Object
-
#initialize(nodes) ⇒ ASTBuilder
constructor
A new instance of ASTBuilder.
- #nested? ⇒ Boolean
- #new_layer(ilvl: false) ⇒ Object
- #next ⇒ Object
- #push(node) ⇒ Object
- #push_all(nodes) ⇒ Object
- #to_ast ⇒ Object
Constructor Details
#initialize(nodes) ⇒ ASTBuilder
Returns a new instance of ASTBuilder.
9 10 11 12 |
# File 'lib/sablon/html/converter.rb', line 9 def initialize(nodes) @layers = [Layer.new(nodes, false)] @root = Root.new([]) end |
Instance Method Details
#done? ⇒ Boolean
34 35 36 |
# File 'lib/sablon/html/converter.rb', line 34 def done? !current_layer.items.any? end |
#emit(node) ⇒ Object
46 47 48 |
# File 'lib/sablon/html/converter.rb', line 46 def emit(node) @root.nodes << node end |
#ilvl ⇒ Object
42 43 44 |
# File 'lib/sablon/html/converter.rb', line 42 def ilvl @layers.select { |layer| layer.ilvl }.size - 1 end |
#nested? ⇒ Boolean
38 39 40 |
# File 'lib/sablon/html/converter.rb', line 38 def nested? ilvl > 0 end |
#new_layer(ilvl: false) ⇒ Object
18 19 20 |
# File 'lib/sablon/html/converter.rb', line 18 def new_layer(ilvl: false) @layers.push Layer.new([], ilvl) end |
#next ⇒ Object
22 23 24 |
# File 'lib/sablon/html/converter.rb', line 22 def next current_layer.items.shift end |
#push(node) ⇒ Object
26 27 28 |
# File 'lib/sablon/html/converter.rb', line 26 def push(node) @layers.last.items.push node end |
#push_all(nodes) ⇒ Object
30 31 32 |
# File 'lib/sablon/html/converter.rb', line 30 def push_all(nodes) nodes.each(&method(:push)) end |
#to_ast ⇒ Object
14 15 16 |
# File 'lib/sablon/html/converter.rb', line 14 def to_ast @root end |