Class: Deadfire::Interpreter

Inherits:
Object
  • Object
show all
Defined in:
lib/deadfire/interpreter.rb

Overview

:nodoc:

Instance Method Summary collapse

Constructor Details

#initialize(error_reporter, asset_loader) ⇒ Interpreter

Returns a new instance of Interpreter.



5
6
7
8
# File 'lib/deadfire/interpreter.rb', line 5

def initialize(error_reporter, asset_loader)
  @error_reporter = error_reporter
  @asset_loader = asset_loader
end

Instance Method Details

#interpret(node) ⇒ Object



10
11
12
# File 'lib/deadfire/interpreter.rb', line 10

def interpret(node)
  node.accept(self)
end

#visit_apply_node(node) ⇒ Object



49
50
51
# File 'lib/deadfire/interpreter.rb', line 49

def visit_apply_node(node)
  # do nothing for now
end

#visit_at_rule_node(node) ⇒ Object



18
19
20
21
22
# File 'lib/deadfire/interpreter.rb', line 18

def visit_at_rule_node(node)
  if node.block
    visit_block_node(node.block, node)
  end
end

#visit_block_node(node, parent) ⇒ Object



34
35
36
37
38
39
40
41
42
43
# File 'lib/deadfire/interpreter.rb', line 34

def visit_block_node(node, parent)
  node.declarations.each do |declaration|
    case declaration
    when ApplyNode
      apply_mixin(declaration, node)
    else
      # we may not need to visit this as we don't process/transform/optimize
    end
  end
end

#visit_comment_node(node) ⇒ Object



45
46
47
# File 'lib/deadfire/interpreter.rb', line 45

def visit_comment_node(node)
  # node.accept(self)
end

#visit_newline_node(node) ⇒ Object



53
54
# File 'lib/deadfire/interpreter.rb', line 53

def visit_newline_node(node)
end

#visit_ruleset_node(node) ⇒ Object



24
25
26
27
28
29
30
31
32
# File 'lib/deadfire/interpreter.rb', line 24

def visit_ruleset_node(node)
  if node.block
    visit_block_node(node.block, node)

    unless @asset_loader.cached_css(node.selector.selector)
      @asset_loader.cache_css(node.selector.selector, node.block) if node.selector.cacheable?
    end
  end
end

#visit_stylesheet_node(node) ⇒ Object



14
15
16
# File 'lib/deadfire/interpreter.rb', line 14

def visit_stylesheet_node(node)
  node.statements.each { |child| child.accept(self) }
end