lib/rabbit/parser/ext/enscript.rb in rabbit-0.9.3 vs lib/rabbit/parser/ext/enscript.rb in rabbit-1.0.0

- old
+ new

@@ -1,9 +1,6 @@ -begin - require 'htree' -rescue LoadError -end +require 'nokogiri' require 'rabbit/utils' require 'rabbit/parser/ext/escape' module Rabbit @@ -56,20 +53,16 @@ nil end end def html_to_rabbit(html, logger) - unless defined?(HTree) - logger.warn(_("enscript: can't find HTree library")) - return nil - end - tree = HTree(extract_newline_around_pre(html)) - pre = find_element(tree, "pre") - address = find_element(tree, "address") - element = tree_to_rabbit(pre, logger) + node = Nokogiri::HTML(extract_newline_around_pre(html)) + pre = find_element(node, "pre") + address = find_element(node, "address") + element = node_to_rabbit(pre, logger) if element - logger.info(address.extract_text.to_s) + logger.info(address.text) if address PreformattedBlock.new(element) else nil end end @@ -77,30 +70,30 @@ def extract_newline_around_pre(html) html = html.gsub(/<pre[^>]*>\n/i, '<pre\1>') html.gsub(/\n<\/pre>/i, '</pre>') end - def find_element(tree, name) - tree.find_element("{http://www.w3.org/1999/xhtml}#{name}") + def find_element(node, name) + node.css(name)[0] end - def tree_to_rabbit(tree, logger) - element = element_to_rabbit(tree, logger) + def node_to_rabbit(node, logger) + element = element_to_rabbit(node, logger) return nil if element.nil? - tree.each_child do |child| + node.children.each do |child| if child.text? - element << Text.new(Escape.escape_meta_character(child.to_s)) + element << Text.new(Escape.escape_meta_character(child.text)) else - child_element = tree_to_rabbit(child, logger) + child_element = node_to_rabbit(child, logger) element << child_element unless child_element.nil? end end element end def element_to_rabbit(element, logger) - case element.qualified_name + case element.name when "pre" PreformattedText.new when "b" Keyword.new when "i" @@ -110,10 +103,10 @@ color = element.get_attribute("color").to_s text.add_default_prop("foreground", color) text else format = _("enscript: unsupported element name: %s") - logger.warn(format % element.qualified_name) + logger.warn(format % element.name) nil end end end end