Skip to main content

Node

Struct Node 

Source
pub struct Node {
    pub node_type: Option<String>,
    pub attrs: Option<Map<String, Value>>,
    pub content: Option<Vec<Node>>,
    pub marks: Option<Vec<Mark>>,
    pub text: Option<String>,
    pub extra: Map<String, Value>,
}
Expand description

A single Tiptap/ProseMirror node.

All structural fields are optional to faithfully distinguish “missing” from “empty” on roundtrip. Unknown top-level keys land in Node::extra.

Fields§

§node_type: Option<String>

Node type, e.g. "doc", "paragraph", "text".

§attrs: Option<Map<String, Value>>

Node attributes.

§content: Option<Vec<Node>>

Child nodes.

§marks: Option<Vec<Mark>>

Marks applied to this node (typically text nodes).

§text: Option<String>

Text payload (text nodes only).

§extra: Map<String, Value>

Any unknown/extra top-level fields, preserved verbatim.

Implementations§

Source§

impl Node

Source

pub fn element(node_type: impl Into<String>) -> Node

Start an element node of node_type (no content/marks/attrs yet).

use tiptap_rusty_parser::Node;
let p = Node::element("paragraph")
    .with_attr("textAlign", "center")
    .with_text("hello");
assert_eq!(p.child_count(), 1);
Source

pub fn text(text: impl Into<String>) -> Node

A text node with the given string.

Source

pub fn text_with_marks( text: impl Into<String>, marks: impl IntoIterator<Item = Mark>, ) -> Node

A text node with text and the given marks.

Source

pub fn with_attr(self, key: impl Into<String>, value: impl Into<Value>) -> Self

Builder: set one attr (consuming).

Source

pub fn with_child(self, node: Node) -> Self

Builder: add a child (consuming).

Source

pub fn with_children(self, nodes: impl IntoIterator<Item = Node>) -> Self

Builder: add several children (consuming).

Source

pub fn with_text(self, text: impl Into<String>) -> Self

Builder: add a text child (consuming).

Source

pub fn with_mark(self, mark: Mark) -> Self

Builder: add a mark (consuming).

Source§

impl Node

Source

pub fn has_mark(&self, mark_type: &str) -> bool

True if a mark of mark_type is present.

Source

pub fn get_mark(&self, mark_type: &str) -> Option<&Mark>

Reference to the first mark of mark_type.

Source

pub fn add_mark(&mut self, mark: Mark) -> bool

Add mark if no mark of that type exists yet. Returns true if added.

Source

pub fn remove_mark(&mut self, mark_type: &str) -> usize

Remove every mark of mark_type. Returns count removed.

Source

pub fn toggle_mark(&mut self, mark: Mark) -> bool

Toggle a mark: remove if present, else add. Returns true if now present.

Source

pub fn set_mark_attr( &mut self, mark_type: &str, key: impl Into<String>, value: impl Into<Value>, ) -> bool

Set an attr on the (first) mark of mark_type. Returns false if absent.

Source

pub fn clear_marks(&mut self)

Drop all marks.

Source

pub fn attr(&self, key: &str) -> Option<&Value>

Reference to attr key.

Source

pub fn attrs_mut(&mut self) -> &mut Map<String, Value>

Mutable access to the attrs map, creating it if absent.

Source

pub fn set_attr( &mut self, key: impl Into<String>, value: impl Into<Value>, ) -> Option<Value>

Set attr key, returning the previous value if any.

Source

pub fn remove_attr(&mut self, key: &str) -> Option<Value>

Remove attr key, returning its value if present.

Source

pub fn child_count(&self) -> usize

Number of direct children.

Source

pub fn children(&self) -> &[Node]

Direct children slice (empty if none).

Source

pub fn children_mut(&mut self) -> &mut Vec<Node>

Mutable access to children, creating the vec if absent.

Source

pub fn child(&self, i: usize) -> Option<&Node>

Direct child at i.

Source

pub fn child_mut(&mut self, i: usize) -> Option<&mut Node>

Mutable direct child at i.

Source

pub fn push_child(&mut self, node: Node)

Append a child.

Source

pub fn insert_child(&mut self, i: usize, node: Node)

Insert a child at i (clamped to len).

Source

pub fn remove_child(&mut self, i: usize) -> Option<Node>

Remove and return the child at i.

Source

pub fn replace_child(&mut self, i: usize, node: Node) -> Option<Node>

Replace the child at i, returning the old node.

Source

pub fn clear_children(&mut self)

Remove all children.

Source

pub fn retain_children(&mut self, pred: impl FnMut(&Node) -> bool)

Retain only children matching pred.

Source

pub fn get_text(&self) -> Option<&str>

Text payload, if any.

Source

pub fn set_text(&mut self, text: impl Into<String>)

Set text payload.

Source

pub fn replace_all( &mut self, pred: impl FnMut(&Node) -> bool, f: impl FnMut(&mut Node), ) -> usize

Apply f to every node (incl. self) matching pred. Returns count.

Source§

impl Node

Source

pub fn walk(&self, f: &mut impl FnMut(&Node))

Visit self and every descendant, pre-order.

use tiptap_rusty_parser::Document;
let doc = Document::from_json_str(r#"{"type":"doc","content":[{"type":"paragraph"}]}"#).unwrap();
let mut n = 0;
doc.root().walk(&mut |_| n += 1);
assert_eq!(n, 2);
Source

pub fn walk_mut(&mut self, f: &mut impl FnMut(&mut Node))

Mutable pre-order visit of self and every descendant.

Source

pub fn find(&self, pred: impl FnMut(&Node) -> bool) -> Option<&Node>

First node (incl. self) matching pred, pre-order.

Source

pub fn find_mut(&mut self, pred: impl FnMut(&Node) -> bool) -> Option<&mut Node>

Mutable variant of Node::find.

Source

pub fn find_all(&self, pred: impl FnMut(&Node) -> bool) -> Vec<&Node>

All nodes (incl. self) matching pred, pre-order.

Source

pub fn find_all_mut( &mut self, pred: &mut impl FnMut(&Node) -> bool, ) -> Vec<&mut Node>

Mutable variant of Node::find_all. Collects matching &mut Node.

Source

pub fn descendants(&self) -> Descendants<'_>

Lazy pre-order iterator over self and all descendants.

Trait Implementations§

Source§

impl Clone for Node

Source§

fn clone(&self) -> Node

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Node

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Node

Source§

fn default() -> Node

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Node

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<Node> for Document

Source§

fn from(root: Node) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for Node

Source§

fn eq(&self, other: &Node) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for Node

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Node

Auto Trait Implementations§

§

impl Freeze for Node

§

impl RefUnwindSafe for Node

§

impl Send for Node

§

impl Sync for Node

§

impl Unpin for Node

§

impl UnsafeUnpin for Node

§

impl UnwindSafe for Node

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,