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



110
111
112
# File 'lib/johnson/visitors/enumerating_visitor.rb', line 110

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

#visit_For(o) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/johnson/visitors/enumerating_visitor.rb', line 40

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



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

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

#visit_Function(o) ⇒ Object

FUNCTION NODES ###



86
87
88
89
90
# File 'lib/johnson/visitors/enumerating_visitor.rb', line 86

def visit_Function(o)
  block.call(o)
  o.body.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



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

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