require "nokogiri" module Pricecut class MarkdownVisitor attr_reader :output def initialize @output = "" end def visit(node) begin element = Pricecut::Elements.const_get(node.name.capitalize) element.new(self, node).output! rescue NameError # Unsupported element, continue visiting children. visit_children(node) end self end def append_output(string) @output << string end def visit_children(node) node.children.each {|child| child.accept(self) } end end end