Class | Loofah::Scrubber |
In: |
lib/loofah/scrubber.rb
|
Parent: | Object |
A Scrubber wraps up a block (or method) that is run on an HTML node (element):
# change all <span> tags to <div> tags span2div = Loofah::Scrubber.new do |node| node.name = "div" if node.name == "span" end
Alternatively, this scrubber could have been implemented as:
class Span2Div < Loofah::Scrubber def scrub(node) node.name = "div" if node.name == "span" end end span2div = Span2Div.new
This can then be run on a document:
Loofah.fragment("<span>foo</span><p>bar</p>").scrub!(span2div).to_s # => "<div>foo</div><p>bar</p>"
Scrubbers can be run on a document in either a top-down traversal (the default) or bottom-up. Top-down scrubbers can optionally return Scrubber::STOP to terminate the traversal of a subtree.
block | [R] | When a scrubber is initialized, the optional block is saved as :block. Note that, if no block is passed, then the scrub method is assumed to have been implemented. |
direction | [R] | When a scrubber is initialized, the :direction may be specified as :top_down (the default) or :bottom_up. |
Options may include
:direction => :top_down (the default)
or
:direction => :bottom_up
For top_down traversals, if the block returns Loofah::Scrubber::STOP, then the traversal will be terminated for the current node‘s subtree.
Alternatively, a Scrubber may inherit from Loofah::Scrubber, and implement scrub, which is slightly faster than using a block.