Class: Johnson::Visitors::EnumeratingVisitor

Inherits:
Object
  • Object
show all
Defined in:
lib/johnson/visitors/enumerating_visitor.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(block) ⇒ EnumeratingVisitor

Returns a new instance of EnumeratingVisitor.



5
6
7
# File 'lib/johnson/visitors/enumerating_visitor.rb', line 5

def initialize(block)
  @block = block
end

Instance Attribute Details

#blockObject

Returns the value of attribute block.



4
5
6
# File 'lib/johnson/visitors/enumerating_visitor.rb', line 4

def block
  @block
end

Instance Method Details

#accept(target) ⇒ Object



116
117
118
# File 'lib/johnson/visitors/enumerating_visitor.rb', line 116

def accept(target)
  target.accept(self)
end

#visit_For(o) ⇒ Object



46
47
48
49
50
51
52
53
# File 'lib/johnson/visitors/enumerating_visitor.rb', line 46

def visit_For(o)
  block.call(o)
  o.init && o.init.accept(self)
  o.cond && o.cond.accept(self)
  o.update && o.update.accept(self)
  o.body.accept(self)
  self
end

#visit_ForIn(o) ⇒ Object



55
56
57
58
59
60
# File 'lib/johnson/visitors/enumerating_visitor.rb', line 55

def visit_ForIn(o)
  block.call(o)
  o.in_cond.accept(self)
  o.body.accept(self)
  self
end

#visit_Function(o) ⇒ Object

FUNCTION NODES ###



92
93
94
95
96
# File 'lib/johnson/visitors/enumerating_visitor.rb', line 92

def visit_Function(o)
  block.call(o)
  o.body.accept(self)
  self
end

#visit_LexicalScope(o) ⇒ Object



15
16
17
18
19
# File 'lib/johnson/visitors/enumerating_visitor.rb', line 15

def visit_LexicalScope(o)
  block.call(o)
  o.right.accept(self)
  self
end

#visit_SourceElements(o) ⇒ Object



9
10
11
12
13
# File 'lib/johnson/visitors/enumerating_visitor.rb', line 9

def visit_SourceElements(o)
  block.call(o)
  o.value.each { |x| x.accept(self) }
  self
end

#visit_Try(o) ⇒ Object



62
63
64
65
66
67
68
# File 'lib/johnson/visitors/enumerating_visitor.rb', line 62

def visit_Try(o)
  block.call(o)
  o.cond.accept(self)
  o.b_then && o.b_then.map { |x| x.accept(self) }
  o.b_else && o.b_else.accept(self)
  self
end