Method: EsiForRack::Node::Context#parse

Defined in:
lib/esi_for_rack/node.rb

#parse(document) ⇒ Object



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/esi_for_rack/node.rb', line 112

def parse(document)
  document.gsub!('esi:', 'esi_')
  document.gsub!(/(<\/?esi_[^>]*>)/, ']]>\1<![CDATA[')
  document[0,0] = %|<?xml version="1.0"?>\n<esi_root><![CDATA[|
  document << ']]></esi_root>'
  
  @doc = Nokogiri::XML(document)
  
  @doc.css('esi_comment').each do |esi_comment|
    esi_comment.replace(Nokogiri::XML::CDATA.new(doc, ''))
  end
  
  process(@doc.css('esi_root')[0])
  
  result = ''
  @doc.css('esi_root')[0].children.each do |n|
    result << n.to_str
  end
  
  result
end