class Sanitize
def transform_element!(node)
def transform_element!(node) output = { :attr_whitelist => [], :node => node, :whitelist => false } @config[:transformers].inject(node) do |transformer_node, transformer| transform = transformer.call({ :config => @config, :node => transformer_node, :node_name => transformer_node.name.downcase }) if transform.nil? transformer_node elsif transform.is_a?(Hash) if transform[:whitelist_nodes].is_a?(Array) @whitelist_nodes += transform[:whitelist_nodes] @whitelist_nodes.uniq! end output[:attr_whitelist] += transform[:attr_whitelist] if transform[:attr_whitelist].is_a?(Array) output[:whitelist] ||= true if transform[:whitelist] output[:node] = transform[:node].is_a?(Nokogiri::XML::Node) ? transform[:node] : output[:node] else raise Error, "transformer output must be a Hash or nil" end end node.replace(output[:node]) if node != output[:node] return output end