lib/hexp/node/domize.rb in hexp-0.2.0 vs lib/hexp/node/domize.rb in hexp-0.3.0

- old
+ new

@@ -7,33 +7,39 @@ }.freeze # The resulting DOM Document # # @return [Nokogiri::HTML::Document] - # @api private # + # @api private attr_reader :dom # Instanitiate a Domizer # - # @param hexp [Hexp::Node] - # @param options [Hash] :include_doctype defaults to true - # @api private + # @param [Hexp::Node] hexp # + # @param [Hash] options + # @options options [true,false] :include_doctype Defaults to true + # + # @api private def initialize(hexp, options = {}) @dom = Hexp::DOM @raw = hexp @options = DEFAULT_OPTIONS.merge(options).freeze end # Turn the hexp into a DOM # # @return [Nokogiri::HTML::Document] - # @api private # + # @api private def call @doc = dom::Document.new + if @options[:html5] + @doc.children = dom::NodeSet.new(@doc, []) + @doc.create_internal_subset(nil, nil, nil) + end @root = domize(@raw) @doc << @root if @options[:include_doctype] @doc @@ -44,40 +50,43 @@ private # Turn a Hexp::Node into a Document # - # @param hexp [Hexp::Node] + # @param [Hexp::Node] hexp + # # @return [Nokogiri::HTML::Document] - # @api private # + # @api private def domize(hexp) dom::Node.new(hexp.tag.to_s, @doc).tap do |node| set_attributes(node, hexp.attributes) set_children(node, hexp.children) end end # Set attributes on a DOM node # - # @param node [Nokogiri::XML::Element] - # @param attributes [Hash] + # @param [Nokogiri::XML::Element] node + # @param [Hash] attributes + # # @return [void] - # @api private # + # @api private def set_attributes(node, attributes) attributes.each do |key,value| node[key] = value end end # Set children on the DOM node # - # @param node [Nokogiri::XML::Element] - # @param children [Hexp::List] + # @param [Nokogiri::XML::Element] node + # @param [Hexp::List] children + # # @return [void] - # @api private # + # @api private def set_children(node, children) children.each do |child| if child.instance_of?(TextNode) node << dom::Text.new(child, @doc) else