class Polymer::Rails::XmlAdapters::Nokogiri

Constants

XML_NODES

Nodes that should be parsed as XML nodes

XML_OPTIONS

XML options for to_xml method

Public Instance Methods

create_node(doc, name, content) click to toggle source
# File lib/polymer-rails/xml_adapters/nokogiri.rb, line 19
def create_node doc, name, content
  node = ::Nokogiri::XML::Node.new(name, doc)
  node.content = content
  node
end
css_select(doc, selector) click to toggle source
# File lib/polymer-rails/xml_adapters/nokogiri.rb, line 39
def css_select doc, selector
  doc.css selector
end
parse_document(data) click to toggle source
# File lib/polymer-rails/xml_adapters/nokogiri.rb, line 15
def parse_document data
  ::Nokogiri::HTML5 data
end
replace_node(old_node, new_node) click to toggle source
# File lib/polymer-rails/xml_adapters/nokogiri.rb, line 25
def replace_node old_node, new_node
  old_node.replace new_node
end
stringify(doc) click to toggle source
# File lib/polymer-rails/xml_adapters/nokogiri.rb, line 29
def stringify doc
  xml_nodes(doc).reduce(to_html(doc)) do |output, node|
    pattern = node.to_html
    replacement = node.to_xml(XML_OPTIONS)
    replacement.gsub!( /src="%5B%5B(.+?)%5D%5D"/i, 'src="[[\1]]"' )
    replacement.gsub!( /src="%7B%7B(.+?)%7D%7D"/i, 'src="{{\1}}"' )
    output.gsub(pattern, replacement).encode(ENCODING)
  end
end

Private Instance Methods

to_html(doc) click to toggle source
# File lib/polymer-rails/xml_adapters/nokogiri.rb, line 47
def to_html doc
  doc.css("head,body").children.to_html(encoding: ENCODING).lstrip
end
xml_nodes(doc) click to toggle source
# File lib/polymer-rails/xml_adapters/nokogiri.rb, line 44
def xml_nodes doc
  doc.css(XML_NODES.join(','))
end