Class: Pelusa::Iterator
- Inherits:
-
Object
- Object
- Pelusa::Iterator
- Defined in:
- lib/pelusa/iterator.rb
Constant Summary collapse
- NodeIterator =
lambda do |node, check| check.call(node) if node.respond_to?(:each) return node.each { |node| NodeIterator.call(node, check) } end ivars = node.instance_variables children = ivars.map { |ivar| node.instance_variable_get(ivar) } return children.each { |node| NodeIterator.call(node, check) } end
Instance Method Summary collapse
-
#call(node) ⇒ Object
Public: Calls the iterator with the given arguments.
-
#initialize(&lint) ⇒ Iterator
constructor
Public: Initializes a new Iterator with a particular lint check.
-
#to_proc ⇒ Object
Public: Returns the iterator.
Constructor Details
#initialize(&lint) ⇒ Iterator
Public: Initializes a new Iterator with a particular lint check.
lint - The lint block that yields a node to assert for particular conditions in that node.
20 21 22 |
# File 'lib/pelusa/iterator.rb', line 20 def initialize(&lint) @iterator = lambda { |node| NodeIterator.call(node, lint) } end |
Instance Method Details
#call(node) ⇒ Object
Public: Calls the iterator with the given arguments.
node - The root node from which to iterate.
27 28 29 |
# File 'lib/pelusa/iterator.rb', line 27 def call(node) @iterator.call(node) end |
#to_proc ⇒ Object
Public: Returns the iterator. Useful when using symbol to proc conversions, such as &iterator.
Returns the Proc iterator.
35 36 37 |
# File 'lib/pelusa/iterator.rb', line 35 def to_proc @iterator end |