Module: Loofah::ScrubBehavior

Defined in:
lib/loofah/concerns.rb

Overview

Mixes scrub! into Document, DocumentFragment, Node and NodeSet.

Traverse the document or fragment, invoking the +scrubber+ on each node.

+scrubber+ must either be one of the symbols representing the built-in scrubbers (see
Scrubbers), or a Scrubber instance.

  span2div = Loofah::Scrubber.new do |node|
    node.name = "div" if node.name == "span"
  end
  Loofah.html5_fragment("<span>foo</span><p>bar</p>").scrub!(span2div).to_s
  # => "<div>foo</div><p>bar</p>"

or

  unsafe_html = "ohai! <div>div is safe</div> <script>but script is not</script>"
  Loofah.html5_fragment(unsafe_html).scrub!(:strip).to_s
  # => "ohai! <div>div is safe</div> "

Note that this method is called implicitly from the shortcuts Loofah.scrub_html5_fragment et
al.

Please see Scrubber for more information on implementation and traversal, and README.rdoc for
more example usage.

Defined Under Namespace

Modules: Node, NodeSet

Class Method Summary collapse

Class Method Details

.resolve_scrubber(scrubber) ⇒ Object

:nodoc:



59
60
61
62
63
64
65
66
# File 'lib/loofah/concerns.rb', line 59

def resolve_scrubber(scrubber) # :nodoc:
  scrubber = Scrubbers::MAP[scrubber].new if Scrubbers::MAP[scrubber]
  unless scrubber.is_a?(Loofah::Scrubber)
    raise Loofah::ScrubberNotFound, "not a Scrubber or a scrubber name: #{scrubber.inspect}"
  end

  scrubber
end