Sha256: 253ba3bc5043b1fdf793e7741eec2cd55b6fbc681e55a67eed26c49977e3798a

Contents?: true

Size: 1.19 KB

Versions: 144

Compression:

Stored size: 1.19 KB

Contents

module Nokogiri
  module HTML
    class DocumentFragment < Nokogiri::XML::DocumentFragment
      ####
      # Create a Nokogiri::XML::DocumentFragment from +tags+, using +encoding+
      def self.parse tags, encoding = nil
        doc = HTML::Document.new

        encoding ||= tags.respond_to?(:encoding) ? tags.encoding.name : 'UTF-8'
        doc.encoding = encoding

        new(doc, tags)
      end

      def initialize document, tags = nil, ctx = nil
        return self unless tags

        if ctx
          preexisting_errors = document.errors.dup
          node_set = ctx.parse("<div>#{tags}</div>")
          node_set.first.children.each { |child| child.parent = self } unless node_set.empty?
          self.errors = document.errors - preexisting_errors
        else
          # This is a horrible hack, but I don't care
          if tags.strip =~ /^<body/i
            path = "/html/body"
          else
            path = "/html/body/node()"
          end

          temp_doc = HTML::Document.parse "<html><body>#{tags}", nil, document.encoding
          temp_doc.xpath(path).each { |child| child.parent = self }
          self.errors = temp_doc.errors
        end
        children
      end
    end
  end
end

Version data entries

144 entries across 137 versions & 15 rubygems

Version Path
daslabs-0.12.0 vendor/cache/ruby/2.5.0/gems/nokogiri-1.8.2/lib/nokogiri/html/document_fragment.rb
daslabs-0.11.0 vendor/cache/ruby/2.5.0/gems/nokogiri-1.8.2/lib/nokogiri/html/document_fragment.rb
tdiary-5.0.9 vendor/bundle/gems/nokogiri-1.8.2/lib/nokogiri/html/document_fragment.rb
tdiary-5.0.8 vendor/bundle/ruby/2.5.0/gems/nokogiri-1.8.2/lib/nokogiri/html/document_fragment.rb
tdiary-5.0.8 vendor/bundle/gems/tdiary-5.0.7/vendor/bundle/gems/nokogiri-1.8.1/lib/nokogiri/html/document_fragment.rb
tdiary-5.0.8 vendor/bundle/gems/nokogiri-1.8.2/lib/nokogiri/html/document_fragment.rb
daslabs-0.10.0 vendor/cache/ruby/2.5.0/gems/nokogiri-1.8.2/lib/nokogiri/html/document_fragment.rb
daslabs-0.9.0 vendor/cache/ruby/2.5.0/gems/nokogiri-1.8.2/lib/nokogiri/html/document_fragment.rb
daslabs-0.8.0 vendor/cache/ruby/2.5.0/gems/nokogiri-1.8.2/lib/nokogiri/html/document_fragment.rb
daslabs-0.7.0 vendor/cache/ruby/2.5.0/gems/nokogiri-1.8.2/lib/nokogiri/html/document_fragment.rb
daslabs-0.6.0 vendor/cache/ruby/2.5.0/gems/nokogiri-1.8.2/lib/nokogiri/html/document_fragment.rb
daslabs-0.5.0 vendor/cache/ruby/2.5.0/gems/nokogiri-1.8.2/lib/nokogiri/html/document_fragment.rb
daslabs-0.4.0 vendor/cache/ruby/2.5.0/gems/nokogiri-1.8.2/lib/nokogiri/html/document_fragment.rb
nokogiri-1.8.2 lib/nokogiri/html/document_fragment.rb
nokogiri-1.8.2-x86-mingw32 lib/nokogiri/html/document_fragment.rb
nokogiri-1.8.2-x64-mingw32 lib/nokogiri/html/document_fragment.rb
nokogiri-1.8.2-java lib/nokogiri/html/document_fragment.rb
tdiary-5.0.7 vendor/bundle/gems/nokogiri-1.8.1/lib/nokogiri/html/document_fragment.rb
pract6-0.1.0 .gem/ruby/2.3.0/gems/nokogiri-1.8.1/lib/nokogiri/html/document_fragment.rb
tdiary-5.0.6 vendor/bundle/gems/nokogiri-1.8.1/lib/nokogiri/html/document_fragment.rb