Trait html5ever::tree_builder::interface::TreeSink [] [src]

pub trait TreeSink {
    type Handle: Clone;
    fn parse_error(&mut self, msg: Cow<'static, str>);
    fn get_document(&mut self) -> Self::Handle;
    fn same_node(&self, x: Self::Handle, y: Self::Handle) -> bool;
    fn elem_name(&self, target: Self::Handle) -> QualName;
    fn set_quirks_mode(&mut self, mode: QuirksMode);
    fn create_element(&mut self, name: QualName, attrs: Vec<Attribute>) -> Self::Handle;
    fn create_comment(&mut self, text: StrTendril) -> Self::Handle;
    fn append(&mut self, parent: Self::Handle, child: NodeOrText<Self::Handle>);
    fn append_before_sibling(&mut self, sibling: Self::Handle, new_node: NodeOrText<Self::Handle>) -> Result<()NodeOrText<Self::Handle>>;
    fn append_doctype_to_document(&mut self, name: StrTendril, public_id: StrTendril, system_id: StrTendril);
    fn add_attrs_if_missing(&mut self, target: Self::Handle, attrs: Vec<Attribute>);
    fn remove_from_parent(&mut self, target: Self::Handle);
    fn reparent_children(&mut self, node: Self::Handle, new_parent: Self::Handle);
    fn mark_script_already_started(&mut self, node: Self::Handle);

    fn complete_script(&mut self, _node: Self::Handle) -> NextParserState { ... }
}

Types which can process tree modifications from the tree builder.

Associated Types

type Handle: Clone

Handle is a reference to a DOM node. The tree builder requires that a Handle implements Clone to get another reference to the same node.

Required Methods

fn parse_error(&mut self, msg: Cow<'static, str>)

Signal a parse error.

fn get_document(&mut self) -> Self::Handle

Get a handle to the Document node.

fn same_node(&self, x: Self::Handle, y: Self::Handle) -> bool

Do two handles refer to the same node?

fn elem_name(&self, target: Self::Handle) -> QualName

What is the name of this element?

Should never be called on a non-element node; feel free to panic!.

fn set_quirks_mode(&mut self, mode: QuirksMode)

Set the document's quirks mode.

fn create_element(&mut self, name: QualName, attrs: Vec<Attribute>) -> Self::Handle

Create an element.

fn create_comment(&mut self, text: StrTendril) -> Self::Handle

Create a comment node.

fn append(&mut self, parent: Self::Handle, child: NodeOrText<Self::Handle>)

Append a node as the last child of the given node. If this would produce adjacent sibling text nodes, it should concatenate the text instead.

The child node will not already have a parent.

fn append_before_sibling(&mut self, sibling: Self::Handle, new_node: NodeOrText<Self::Handle>) -> Result<()NodeOrText<Self::Handle>>

Append a node as the sibling immediately before the given node. If that node has no parent, do nothing and return Err(new_node).

The tree builder promises that sibling is not a text node. However its old previous sibling, which would become the new node's previous sibling, could be a text node. If the new node is also a text node, the two should be merged, as in the behavior of append.

NB: new_node may have an old parent, from which it should be removed.

fn append_doctype_to_document(&mut self, name: StrTendril, public_id: StrTendril, system_id: StrTendril)

Append a DOCTYPE element to the Document node.

fn add_attrs_if_missing(&mut self, target: Self::Handle, attrs: Vec<Attribute>)

Add each attribute to the given element, if no attribute with that name already exists.

fn remove_from_parent(&mut self, target: Self::Handle)

Detach the given node from its parent.

fn reparent_children(&mut self, node: Self::Handle, new_parent: Self::Handle)

Remove all the children from node and append them to new_parent.

fn mark_script_already_started(&mut self, node: Self::Handle)

Mark a HTML <script> element as "already started".

Provided Methods

fn complete_script(&mut self, _node: Self::Handle) -> NextParserState

Indicate that a <script> element is complete.

Implementors