Class: Sablon::HTMLConverter::ASTBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/sablon/html/converter.rb

Defined Under Namespace

Classes: Layer

Instance Method Summary collapse

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

Returns:

  • (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

#ilvlObject



42
43
44
# File 'lib/sablon/html/converter.rb', line 42

def ilvl
  @layers.select { |layer| layer.ilvl }.size - 1
end

#nested?Boolean

Returns:

  • (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

#nextObject



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_astObject



14
15
16
# File 'lib/sablon/html/converter.rb', line 14

def to_ast
  @root
end