Sha256: ea193d23713499d11eeb06b6eb9184bc1126113e167dbf63965bf513ac15860c
Contents?: true
Size: 1.86 KB
Versions: 6
Compression:
Stored size: 1.86 KB
Contents
module Coradoc module Input::HTML module Converters def self.register(tag_name, converter) @@converters ||= {} @@converters[tag_name.to_sym] = converter end def self.unregister(tag_name) @@converters.delete(tag_name.to_sym) end def self.lookup(tag_name) converter = @@converters[tag_name.to_sym] || default_converter(tag_name) converter = converter.new if converter.respond_to? :new converter end # Note: process won't run plugin hooks def self.process(node, state) node = node.to_a if node.is_a? Nokogiri::XML::NodeSet return node.map { |i| process(i, state) }.join if node.is_a? Array lookup(node.name).convert(node, state) end def self.process_coradoc(node, state) node = node.to_a if node.is_a? Nokogiri::XML::NodeSet return node.map { |i| process_coradoc(i, state) } if node.is_a? Array plugins = state[:plugin_instances] || {} process = proc { lookup(node.name).to_coradoc(node, state) } plugins.each do |i| prev_process = process process = proc { i.html_tree_run_hooks(node, state, &prev_process) } end process.(node, state) end def self.default_converter(tag_name) case Coradoc::Input::HTML.config.unknown_tags.to_sym when :pass_through Coradoc::Input::HTML::Converters::PassThrough.new when :drop Coradoc::Input::HTML::Converters::Drop.new when :bypass Coradoc::Input::HTML::Converters::Bypass.new when :raise raise UnknownTagError, "unknown tag: #{tag_name}" else raise InvalidConfigurationError, "unknown value #{Coradoc::Input::HTML.config.unknown_tags.inspect} for Coradoc::Input::HTML.config.unknown_tags" end end end end end
Version data entries
6 entries across 6 versions & 1 rubygems