# -*- encoding: utf-8 -*- require 'nokogiri' module Genit # Build a document from various sources. class Builder # Public: Constructor. # # document - A Nokogiri::XML::Document def initialize document @document = document end # Public: Replace a tag (and its children) from the current document by a # string. # # css_rule - The String css rule to find the tag # replacement - The replacement String # # Examples # # doc = builder.replace('genit.pages', "") # # Return the updated Nokogiri::XML::Document document. def replace css_rule, replacement tag = @document.at_css(css_rule) tag.replace replacement @document end # Public: Mark the element of the menu that is selected (the displayed # page). # # page_name - The String filename of the page # # Examples # # menu = Nokogiri::XML(File.open('menu.html')) # builder = Builder.new(menu) # menu = builder.select_menu('index.html') # # Return the updated Nokogiri::XML::Document document. def select_menu page_name tags = @document.css("ul#menu a") tags.each {|tag| if tag['href'] == page_name.gsub(/\.markdown$/, '.html') tag['id'] = 'selected' break end } @document end end end