pub struct Document { /* private fields */ }Expand description
An owned Tiptap document (its root node, usually type: "doc").
Derefs to the root Node, so all query/mutation methods are available
directly on a Document.
Implementations§
Source§impl Document
impl Document
Sourcepub fn from_json_str(s: &str) -> Result<Self>
pub fn from_json_str(s: &str) -> Result<Self>
Parse from a JSON string.
use tiptap_rusty_parser::Document;
let d = Document::from_json_str(r#"{"type":"doc","content":[]}"#).unwrap();
assert_eq!(d.node_type.as_deref(), Some("doc"));Sourcepub fn from_value(value: Value) -> Result<Self>
pub fn from_value(value: Value) -> Result<Self>
Parse from a serde_json::Value.
Sourcepub fn from_reader(reader: impl Read) -> Result<Self>
pub fn from_reader(reader: impl Read) -> Result<Self>
Parse from any reader.
Sourcepub fn to_json_str(&self) -> Result<String>
pub fn to_json_str(&self) -> Result<String>
Serialize to a compact JSON string.
Sourcepub fn to_string_pretty(&self) -> Result<String>
pub fn to_string_pretty(&self) -> Result<String>
Serialize to a pretty JSON string.
Methods from Deref<Target = Node>§
Sourcepub fn get_mark(&self, mark_type: &str) -> Option<&Mark>
pub fn get_mark(&self, mark_type: &str) -> Option<&Mark>
Reference to the first mark of mark_type.
Sourcepub fn add_mark(&mut self, mark: Mark) -> bool
pub fn add_mark(&mut self, mark: Mark) -> bool
Add mark if no mark of that type exists yet. Returns true if added.
Sourcepub fn remove_mark(&mut self, mark_type: &str) -> usize
pub fn remove_mark(&mut self, mark_type: &str) -> usize
Remove every mark of mark_type. Returns count removed.
Sourcepub fn toggle_mark(&mut self, mark: Mark) -> bool
pub fn toggle_mark(&mut self, mark: Mark) -> bool
Toggle a mark: remove if present, else add. Returns true if now present.
Sourcepub fn set_mark_attr(
&mut self,
mark_type: &str,
key: impl Into<String>,
value: impl Into<Value>,
) -> bool
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.
Sourcepub fn clear_marks(&mut self)
pub fn clear_marks(&mut self)
Drop all marks.
Sourcepub fn attrs_mut(&mut self) -> &mut Map<String, Value>
pub fn attrs_mut(&mut self) -> &mut Map<String, Value>
Mutable access to the attrs map, creating it if absent.
Sourcepub fn set_attr(
&mut self,
key: impl Into<String>,
value: impl Into<Value>,
) -> Option<Value>
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.
Sourcepub fn remove_attr(&mut self, key: &str) -> Option<Value>
pub fn remove_attr(&mut self, key: &str) -> Option<Value>
Remove attr key, returning its value if present.
Sourcepub fn child_count(&self) -> usize
pub fn child_count(&self) -> usize
Number of direct children.
Sourcepub fn children_mut(&mut self) -> &mut Vec<Node>
pub fn children_mut(&mut self) -> &mut Vec<Node>
Mutable access to children, creating the vec if absent.
Sourcepub fn push_child(&mut self, node: Node)
pub fn push_child(&mut self, node: Node)
Append a child.
Sourcepub fn insert_child(&mut self, i: usize, node: Node)
pub fn insert_child(&mut self, i: usize, node: Node)
Insert a child at i (clamped to len).
Sourcepub fn remove_child(&mut self, i: usize) -> Option<Node>
pub fn remove_child(&mut self, i: usize) -> Option<Node>
Remove and return the child at i.
Sourcepub fn replace_child(&mut self, i: usize, node: Node) -> Option<Node>
pub fn replace_child(&mut self, i: usize, node: Node) -> Option<Node>
Replace the child at i, returning the old node.
Sourcepub fn clear_children(&mut self)
pub fn clear_children(&mut self)
Remove all children.
Sourcepub fn retain_children(&mut self, pred: impl FnMut(&Node) -> bool)
pub fn retain_children(&mut self, pred: impl FnMut(&Node) -> bool)
Retain only children matching pred.
Sourcepub fn replace_all(
&mut self,
pred: impl FnMut(&Node) -> bool,
f: impl FnMut(&mut Node),
) -> usize
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.
Sourcepub fn walk(&self, f: &mut impl FnMut(&Node))
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);Sourcepub fn walk_mut(&mut self, f: &mut impl FnMut(&mut Node))
pub fn walk_mut(&mut self, f: &mut impl FnMut(&mut Node))
Mutable pre-order visit of self and every descendant.
Sourcepub fn find(&self, pred: impl FnMut(&Node) -> bool) -> Option<&Node>
pub fn find(&self, pred: impl FnMut(&Node) -> bool) -> Option<&Node>
First node (incl. self) matching pred, pre-order.
Sourcepub fn find_mut(&mut self, pred: impl FnMut(&Node) -> bool) -> Option<&mut Node>
pub fn find_mut(&mut self, pred: impl FnMut(&Node) -> bool) -> Option<&mut Node>
Mutable variant of Node::find.
Sourcepub fn find_all(&self, pred: impl FnMut(&Node) -> bool) -> Vec<&Node>
pub fn find_all(&self, pred: impl FnMut(&Node) -> bool) -> Vec<&Node>
All nodes (incl. self) matching pred, pre-order.
Sourcepub fn find_all_mut(
&mut self,
pred: &mut impl FnMut(&Node) -> bool,
) -> Vec<&mut Node>
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.
Sourcepub fn descendants(&self) -> Descendants<'_> ⓘ
pub fn descendants(&self) -> Descendants<'_> ⓘ
Lazy pre-order iterator over self and all descendants.