123456789_123456789_123456789_123456789_123456789_

Class: Nokogiri::HTML5::DocumentFragment

Overview

Since v1.12.0

💡 ::Nokogiri::HTML5 functionality is not available when running JRuby.

Constant Summary

::Nokogiri::XML::PP::Node - Included

COLLECTIONS

::Nokogiri::XML::Searchable - Included

LOOKS_LIKE_XPATH

::Nokogiri::ClassResolver - Included

VALID_NAMESPACES

::Nokogiri::XML::Node - Inherited

ATTRIBUTE_DECL, ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DECONSTRUCT_KEYS, DECONSTRUCT_METHODS, DOCB_DOCUMENT_NODE, DOCUMENT_FRAG_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, DTD_NODE, ELEMENT_DECL, ELEMENT_NODE, ENTITY_DECL, ENTITY_NODE, ENTITY_REF_NODE, HTML_DOCUMENT_NODE, IMPLIED_XPATH_CONTEXTS, NAMESPACE_DECL, NOTATION_NODE, PI_NODE, TEXT_NODE, XINCLUDE_END, XINCLUDE_START

Class Method Summary

::Nokogiri::HTML4::DocumentFragment - Inherited

.new

Parse HTML4 fragment input from a String, and return a new ::Nokogiri::HTML4::DocumentFragment.

.parse

Parse HTML4 fragment input from a String, and return a new ::Nokogiri::HTML4::DocumentFragment.

::Nokogiri::XML::DocumentFragment - Inherited

.parse

Parse XML fragment input from a String, and return a new ::Nokogiri::XML::DocumentFragment.

.native_new,
.new

Wrapper method to separate the concerns of: - the native object allocator’s parameter (it only requires #document) - the initializer’s parameters.

::Nokogiri::XML::Node - Inherited

.new

documented in lib/nokogiri/xml/node.rb.

Instance Attribute Summary

::Nokogiri::XML::DocumentFragment - Inherited

#errors

A list of ::Nokogiri::XML::SyntaxError found when parsing a document.

#parse_options

The options used to parse the document fragment.

#errors=

::Nokogiri::XML::Node - Inherited

#blank?
Returns

true if the node is an empty or whitespace-only text or cdata node, else false.

#cdata?

Returns true if this is a CDATA.

#children

:category: Traversing Document Structure.

#children=

Set the content for this Node node_or_tags

#comment?

Returns true if this is a Comment.

#content

[Returns].

#content=

Set the content of this node to input.

#default_namespace=

Adds a default namespace supplied as a string url href, to self.

#document

:category: Traversing Document Structure.

#document?

Returns true if this is a Document.

#elem?
#element?

Returns true if this is an Element node.

#fragment?

Returns true if this is a DocumentFragment.

#html?

Returns true if this is an ::Nokogiri::HTML4::Document or Document node.

#inner_html

Get the inner_html for this node’s Node#children

#inner_html=

Set the content for this Node to node_or_tags.

#inner_text
#lang

Searches the language of a node, i.e.

#lang=

Set the language of a node, i.e.

#line
Returns

The line number of this Node.

#line=

Sets the line for this Node.

#name
#namespace
Returns

The Namespace of the element or attribute node, or nil if there is no namespace.

#namespace=

Set the default namespace on this node (as would be defined with an “xmlns=” attribute in ::Nokogiri::XML source), as a Namespace object ns.

#native_content=

Set the content of this node to input.

#next
#next=
#node_name

Returns the name for this Node.

#node_name=

Set the name for this Node.

#parent

Get the parent Node for this Node.

#parent=

Set the parent Node for this Node.

#previous
#previous=
#processing_instruction?

Returns true if this is a ProcessingInstruction node.

#read_only?

Is this a read only node?

#text
#text?

Returns true if this is a Text node.

#to_str
#xml?

Returns true if this is an ::Nokogiri::XML::Document node.

#prepend_newline?, #data_ptr?

Instance Method Summary

::Nokogiri::XML::DocumentFragment - Inherited

#css

Search this fragment for ::Nokogiri::CSS rules.

#deconstruct

Returns the root nodes of this document fragment as an array, to use in pattern matching.

#dup, #fragment,
#initialize

Parse XML fragment input from a String, and return a new DocumentFragment that is associated with the given #document.

#name

return the name for DocumentFragment.

#search

Search this fragment for paths.

#serialize
#to_html

Convert this DocumentFragment to html See XML::NodeSet#to_html

#to_s

Convert this DocumentFragment to a string.

#to_xhtml

Convert this DocumentFragment to xhtml See XML::NodeSet#to_xhtml

#to_xml

Convert this DocumentFragment to xml See XML::NodeSet#to_xml

#namespace_declarations

fix for issue 770.

::Nokogiri::XML::Node - Inherited

#<<

Add node_or_tags as a child of this Node.

#<=>

Compare two Node objects with respect to their Document.

#==

::Nokogiri::Test to see if this Node is equal to other

#[]

Fetch an attribute from this node.

#[]=

Update the attribute name to value, or create the attribute if it does not exist.

#accept

Accept a visitor.

#add_child

Add node_or_tags as a child of this Node.

#add_class

Ensure HTML ::Nokogiri::CSS classes are present on self.

#add_namespace
#add_namespace_definition

:category: Manipulating Document Structure.

#add_next_sibling

Insert node_or_tags after this Node (as a sibling).

#add_previous_sibling

Insert node_or_tags before this Node (as a sibling).

#after

Insert node_or_tags after this node (as a sibling).

#ancestors

Get a list of ancestor Node for this Node.

#append_class

Add HTML ::Nokogiri::CSS classes to self, regardless of duplication.

#attr

Alias for XML::Node#[].

#attribute

:category: Working With Node Attributes.

#attribute_nodes

:category: Working With Node Attributes.

#attribute_with_ns

:category: Working With Node Attributes.

#attributes

Fetch this node’s attributes.

#before

Insert node_or_tags before this node (as a sibling).

#canonicalize,
#child

:category: Traversing Document Structure.

#classes

Fetch CSS class names of a Node.

#clone

Clone this node.

#create_external_subset

Create an external subset.

#create_internal_subset

Create the internal subset of a document.

#css_path

Get the path to this node as a ::Nokogiri::CSS expression.

#deconstruct_keys

Returns a hash describing the Node, to use in pattern matching.

#decorate!

Decorate this node with the decorators set up in this node’s Document.

#delete
#description

Fetch the ::Nokogiri::HTML4::ElementDescription for this node.

#do_xinclude

Do xinclude substitution on the subtree below node.

#dup

Duplicate this node.

#each

Iterate over each attribute name and value pair for this Node.

#element_children

[Returns].

#elements
#encode_special_chars

Encode any special characters in string

#external_subset

Get the external subset.

#first_element_child
Returns

The first child Node that is an element.

#fragment

Create a DocumentFragment containing tags that is relative to this context node.

#get_attribute

Alias for XML::Node#[].

#has_attribute?

Alias for XML::Node#key?.

#initialize

Create a new node with name that belongs to #document.

#internal_subset

Get the internal subset.

#key?

Returns true if attribute is set.

#keys

Get the attribute names for this Node.

#kwattr_add

Ensure that values are present in a keyword attribute.

#kwattr_append

Add keywords to a Node’s keyword attribute, regardless of duplication.

#kwattr_remove

Remove keywords from a keyword attribute.

#kwattr_values

Fetch values from a keyword attribute of a Node.

#last_element_child
Returns

The last child Node that is an element.

#matches?

Returns true if this Node matches selector

#namespace_definitions

[Returns].

#namespace_scopes
Returns

Array of all the Namespaces on this node and its ancestors.

#namespaced_key?

Returns true if attribute is set with namespace

#namespaces

Fetch all the namespaces on this node and its ancestors.

#next_element

Returns the next ::Nokogiri::XML::Element type sibling node.

#next_sibling

Returns the next sibling node.

#node_type

Get the type for this Node.

#parse

Parse string_or_io as a document fragment within the context of this node.

#path

Returns the path associated with this Node.

#pointer_id

[Returns].

#prepend_child

Add node_or_tags as the first child of this Node.

#previous_element

Returns the previous ::Nokogiri::XML::Element type sibling node.

#previous_sibling

Returns the previous sibling node.

#remove

Alias for XML::Node#unlink.

#remove_attribute

Remove the attribute named name

#remove_class

Remove HTML ::Nokogiri::CSS classes from this node.

#replace

Replace this Node with node_or_tags.

#serialize

Serialize Node using options.

#set_attribute

Alias for XML::Node#[]=.

#swap

Swap this Node for node_or_tags

#to_html

Serialize this Node to ::Nokogiri::HTML.

#to_s

Turn this node in to a string.

#to_xhtml

Serialize this Node to XHTML using options

#to_xml

Serialize this Node to ::Nokogiri::XML using options

#traverse

Yields self and all children to block recursively.

#type
#unlink

Unlink this node from its current context.

#value?

Does this Node’s attributes include <value>.

#values

Get the attribute values for this Node.

#wrap

Wrap this Node with the node parsed from markup or a dup of the node.

#write_html_to

Write Node as ::Nokogiri::HTML to io with options

#write_to

Serialize this node or document to io.

#write_xhtml_to

Write Node as XHTML to io with options

#write_xml_to

Write Node as ::Nokogiri::XML to io with options

#add_child_node_and_reparent_attrs, #add_sibling,
#compare

Compare this Node to other with respect to their Document.

#dump_html

Returns the Node as html.

#get

Get the value for attribute

#html_standard_serialize,
#in_context

TODO: DOCUMENT ME.

#inspect_attributes, #keywordify,
#native_write_to

Write this Node to io with encoding and options

#process_xincludes

Loads and substitutes all xinclude elements below the node.

#set

Set the property to value

#set_namespace

Set the namespace to namespace

#to_format, #write_format_to, #add_child_node, #add_next_sibling_node, #add_previous_sibling_node, #replace_node

::Nokogiri::ClassResolver - Included

#related_class

Find a class constant within the.

::Nokogiri::XML::Searchable - Included

#%
#/
#>

Search this node’s immediate children using ::Nokogiri::CSS selector selector

#at

Search this object for paths, and return only the first result.

#at_css

Search this object for ::Nokogiri::CSS rules, and return only the first match.

#at_xpath

Search this node for XPath paths, and return only the first match.

#css

Search this object for ::Nokogiri::CSS rules.

#search

Search this object for paths.

#xpath

Search this node for XPath paths.

#css_internal, #css_rules_to_xpath, #xpath_impl, #xpath_internal, #xpath_query_from_css_rule, #extract_params

::Nokogiri::XML::PP::Node - Included

Constructor Details

.new(document, input, **options) → HTML5::DocumentFragment) ⇒ DocumentFragment

Parse HTML5 fragment input from a String, and return a new DocumentFragment.

💡 It’s recommended to use either .parse or Node#fragment rather than call this method directly.

Required Parameters
  • #document (HTML5::Document) The parent document to associate the returned fragment with.

Optional Parameters
  • input (String) The content to be parsed.

Optional Keyword Arguments
  • encoding: (String | Encoding) The encoding, or name of the encoding, that should be used when processing the document. When not provided, the encoding will be determined based on the document content. Also see Nokogiri::HTML5 for a longer explanation of how encoding is handled by the parser.

  • context: (String | ::Nokogiri::XML::Node) The node, or the name of an ::Nokogiri::HTML5 element, in which to parse the document fragment. (default “body”)

  • max_errors: (Integer) The maximum number of parse errors to record. (default Gumbo::DEFAULT_MAX_ERRORS which is currently 0)

  • max_tree_depth: (Integer) The maximum depth of the parse tree. (default Gumbo::DEFAULT_MAX_TREE_DEPTH)

  • max_attributes: (Integer) The maximum number of attributes allowed on an element. (default Gumbo::DEFAULT_MAX_ATTRIBUTES)

  • parse_noscript_content_as_text: (Boolean) Whether to parse the content of noscript elements as text. (default false)

See HTML5@Parsing+options for a complete description of these parsing options.

Returns

DocumentFragment

Context Node

If a context node is specified using context:, then the parser will behave as if that Node, or a hypothetical tag named as specified, is the parent of the fragment subtree.

[ GitHub ]

  
# File 'lib/nokogiri/html5/document_fragment.rb', line 144

def initialize(
  doc, input = nil,
  context_ = nil, positional_options_hash = nil,
  context: context_,
  **options
) # rubocop:disable Lint/MissingSuper
  unless positional_options_hash.nil? || positional_options_hash.empty?
    options.merge!(positional_options_hash)
  end

  @document = doc
  @errors = []
  return self unless input

  input = Nokogiri::HTML5.read_and_encode(input, nil)

  context = options.delete(:context) if options.key?(:context)

  options[:max_attributes] ||= Nokogiri::Gumbo::DEFAULT_MAX_ATTRIBUTES
  options[:max_errors] ||= options.delete(:max_parse_errors) || Nokogiri::Gumbo::DEFAULT_MAX_ERRORS
  options[:max_tree_depth] ||= Nokogiri::Gumbo::DEFAULT_MAX_TREE_DEPTH

  Nokogiri::Gumbo.fragment(self, input, context, **options)
end

Class Method Details

.parse(input, **options) → HTML5::DocumentFragment)

Parse HTML5 fragment input from a String, and return a new DocumentFragment. This method creates a new, empty Document to contain the fragment.

Parameters
  • input (String | IO) The HTML5 document fragment to parse.

Optional Keyword Arguments
  • encoding: (String | Encoding) The encoding, or name of the encoding, that should be used when processing the document. When not provided, the encoding will be determined based on the document content. Also see Nokogiri::HTML5 for a longer explanation of how encoding is handled by the parser.

  • context: (String | ::Nokogiri::XML::Node) The node, or the name of an ::Nokogiri::HTML5 element, “in context” of which to parse the document fragment. See below for more information. (default “body”)

  • max_errors: (Integer) The maximum number of parse errors to record. (default Gumbo::DEFAULT_MAX_ERRORS which is currently 0)

  • max_tree_depth: (Integer) The maximum depth of the parse tree. (default Gumbo::DEFAULT_MAX_TREE_DEPTH)

  • max_attributes: (Integer) The maximum number of attributes allowed on an element. (default Gumbo::DEFAULT_MAX_ATTRIBUTES)

  • parse_noscript_content_as_text: (Boolean) Whether to parse the content of noscript elements as text. (default false)

See HTML5@Parsing+options for a complete description of these parsing options.

Returns

DocumentFragment

Context Node

If a context node is specified using context:, then the parser will behave as if that Node, or a hypothetical tag named as specified, is the parent of the fragment subtree.

[ GitHub ]

  
# File 'lib/nokogiri/html5/document_fragment.rb', line 69

def parse(
  input,
  encoding_ = nil, positional_options_hash = nil,
  encoding: encoding_, **options
)
  unless positional_options_hash.nil? || positional_options_hash.empty?
    options.merge!(positional_options_hash)
  end

  context = options.delete(:context)

  document = HTML5::Document.new
  document.encoding = "UTF-8"
  input = HTML5.read_and_encode(input, encoding)

  new(document, input, context, options)
end

Instance Attribute Details

#document (rw)

[ GitHub ]

  
# File 'lib/nokogiri/html5/document_fragment.rb', line 88

attr_accessor :document

#errors (rw)

[ GitHub ]

  
# File 'lib/nokogiri/html5/document_fragment.rb', line 89

attr_accessor :errors

#quirks_mode (readonly)

Get the parser’s quirks mode value. See QuirksMode.

This method returns nil if the parser was not invoked (e.g., ‘Nokogiri::HTML5::DocumentFragment.new(doc)`).

Since v1.14.0

[ GitHub ]

  
# File 'lib/nokogiri/html5/document_fragment.rb', line 97

attr_reader :quirks_mode

Instance Method Details

#extract_params(params)

This method is for internal use only.
[ GitHub ]

  
# File 'lib/nokogiri/html5/document_fragment.rb', line 175

def extract_params(params) # :nodoc:
  handler = params.find do |param|
    ![Hash, String, Symbol].include?(param.class)
  end
  params -= [handler] if handler

  hashes = []
  while Hash === params.last || params.last.nil?
    hashes << params.pop
    break if params.empty?
  end
  ns, binds = hashes.reverse

  ns ||=
    begin
      ns = {}
      children.each { |child| ns.merge!(child.namespaces) }
      ns
    end

  [params, handler, ns, binds]
end

#serialize(options = {}, &block)

This method is for internal use only.
[ GitHub ]

  
# File 'lib/nokogiri/html5/document_fragment.rb', line 169

def serialize(options = {}, &block) # :nodoc:
  # Bypass XML::Document.serialize which doesn't support options even
  # though XML::Node.serialize does!
  XML::Node.instance_method(:serialize).bind_call(self, options, &block)
end