class Slickplan::Parser::XML

Public Class Methods

parse(xml) click to toggle source
# File lib/slickplan/parser/xml.rb, line 4
def self.parse(xml)
  doc = Nokogiri::XML(xml)
  sitemap = Slickplan::Sitemap.new(title: doc.css('sitemap>title').text)
  sitemap.templates = doc.css('content_templates>template').collect do |t|
    Slickplan::Template.new(name: t.attr(:name), id: t.attr(:id))
  end
  sitemap.pages = doc.css('section#svgmainsection>cells>cell').collect do |p|
    template_id = p.css('contents>template').text
    parent_id = p.css('parent').text

    Slickplan::Page.new(id: p.attr(:id), title: p.css('text').text, content: p.css('contents>body>wysiwyg>content').text, template_id: template_id, template: sitemap.templates.find {|t| t.id == template_id}, parent_id: parent_id)
  end
  sitemap.pages.each do |page|
    page.parent = sitemap.pages.find {|p| p.id == page.parent_id}
  end
  return sitemap
end