mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
chore: private the root node
This commit is contained in:
parent
9974539946
commit
ac23f81e24
@ -3,11 +3,11 @@ use crate::core::{
|
|||||||
DocumentOperation, NodeAttributes, NodeData, NodeSubTree, OperationTransform, TextDelta, Transaction,
|
DocumentOperation, NodeAttributes, NodeData, NodeSubTree, OperationTransform, TextDelta, Transaction,
|
||||||
};
|
};
|
||||||
use crate::errors::{ErrorBuilder, OTError, OTErrorCode};
|
use crate::errors::{ErrorBuilder, OTError, OTErrorCode};
|
||||||
use indextree::{Arena, Children, FollowingSiblings, Node, NodeId};
|
use indextree::{Arena, Children, FollowingSiblings, NodeId};
|
||||||
|
|
||||||
pub struct DocumentTree {
|
pub struct DocumentTree {
|
||||||
arena: Arena<NodeData>,
|
arena: Arena<NodeData>,
|
||||||
pub root: NodeId,
|
root: NodeId,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for DocumentTree {
|
impl Default for DocumentTree {
|
||||||
@ -19,6 +19,7 @@ impl Default for DocumentTree {
|
|||||||
impl DocumentTree {
|
impl DocumentTree {
|
||||||
pub fn new() -> DocumentTree {
|
pub fn new() -> DocumentTree {
|
||||||
let mut arena = Arena::new();
|
let mut arena = Arena::new();
|
||||||
|
|
||||||
let root = arena.new_node(NodeData::new("root"));
|
let root = arena.new_node(NodeData::new("root"));
|
||||||
DocumentTree { arena, root }
|
DocumentTree { arena, root }
|
||||||
}
|
}
|
||||||
@ -104,7 +105,7 @@ impl DocumentTree {
|
|||||||
///
|
///
|
||||||
/// let inserted_note = document.node_at_path(&inserted_path).unwrap();
|
/// let inserted_note = document.node_at_path(&inserted_path).unwrap();
|
||||||
/// let inserted_data = document.get_node_data(inserted_note).unwrap();
|
/// let inserted_data = document.get_node_data(inserted_note).unwrap();
|
||||||
/// assert_eq!(inserted_data.node_type, node.node_type);
|
/// assert_eq!(inserted_data.node_type, node.note_type);
|
||||||
/// ```
|
/// ```
|
||||||
pub fn child_from_node_with_index(&self, at_node: NodeId, index: usize) -> Option<NodeId> {
|
pub fn child_from_node_with_index(&self, at_node: NodeId, index: usize) -> Option<NodeId> {
|
||||||
let children = at_node.children(&self.arena);
|
let children = at_node.children(&self.arena);
|
||||||
|
@ -169,7 +169,7 @@ mod tests {
|
|||||||
let insert = DocumentOperation::Insert {
|
let insert = DocumentOperation::Insert {
|
||||||
path: Path(vec![0, 1]),
|
path: Path(vec![0, 1]),
|
||||||
nodes: vec![NodeSubTree {
|
nodes: vec![NodeSubTree {
|
||||||
node_type: "text".into(),
|
note_type: "text".into(),
|
||||||
attributes: NodeAttributes::new(),
|
attributes: NodeAttributes::new(),
|
||||||
delta: None,
|
delta: None,
|
||||||
children: vec![NodeSubTree::new("text")],
|
children: vec![NodeSubTree::new("text")],
|
||||||
|
@ -20,10 +20,13 @@ impl NodeData {
|
|||||||
#[derive(Clone, serde::Serialize, serde::Deserialize)]
|
#[derive(Clone, serde::Serialize, serde::Deserialize)]
|
||||||
pub struct NodeSubTree {
|
pub struct NodeSubTree {
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
pub node_type: String,
|
pub note_type: String,
|
||||||
|
|
||||||
pub attributes: NodeAttributes,
|
pub attributes: NodeAttributes,
|
||||||
|
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub delta: Option<TextDelta>,
|
pub delta: Option<TextDelta>,
|
||||||
|
|
||||||
#[serde(skip_serializing_if = "Vec::is_empty")]
|
#[serde(skip_serializing_if = "Vec::is_empty")]
|
||||||
pub children: Vec<NodeSubTree>,
|
pub children: Vec<NodeSubTree>,
|
||||||
}
|
}
|
||||||
@ -31,7 +34,7 @@ pub struct NodeSubTree {
|
|||||||
impl NodeSubTree {
|
impl NodeSubTree {
|
||||||
pub fn new(node_type: &str) -> NodeSubTree {
|
pub fn new(node_type: &str) -> NodeSubTree {
|
||||||
NodeSubTree {
|
NodeSubTree {
|
||||||
node_type: node_type.into(),
|
note_type: node_type.into(),
|
||||||
attributes: NodeAttributes::new(),
|
attributes: NodeAttributes::new(),
|
||||||
delta: None,
|
delta: None,
|
||||||
children: Vec::new(),
|
children: Vec::new(),
|
||||||
@ -40,7 +43,7 @@ impl NodeSubTree {
|
|||||||
|
|
||||||
pub fn to_node_data(&self) -> NodeData {
|
pub fn to_node_data(&self) -> NodeData {
|
||||||
NodeData {
|
NodeData {
|
||||||
node_type: self.node_type.clone(),
|
node_type: self.note_type.clone(),
|
||||||
attributes: self.attributes.clone(),
|
attributes: self.attributes.clone(),
|
||||||
delta: self.delta.clone(),
|
delta: self.delta.clone(),
|
||||||
}
|
}
|
||||||
|
@ -134,7 +134,7 @@ impl<'a> TransactionBuilder<'a> {
|
|||||||
});
|
});
|
||||||
|
|
||||||
NodeSubTree {
|
NodeSubTree {
|
||||||
node_type: node_data.node_type.clone(),
|
note_type: node_data.node_type.clone(),
|
||||||
attributes: node_data.attributes.clone(),
|
attributes: node_data.attributes.clone(),
|
||||||
delta: node_data.delta.clone(),
|
delta: node_data.delta.clone(),
|
||||||
children,
|
children,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use lib_ot::core::{DocumentOperation, DocumentTree, NodeAttributes, NodeSubTree, Path, TransactionBuilder};
|
use lib_ot::core::{DocumentTree, NodeAttributes, NodeSubTree, Path, TransactionBuilder};
|
||||||
use lib_ot::errors::OTErrorCode;
|
use lib_ot::errors::OTErrorCode;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ fn test_inserts_subtrees() {
|
|||||||
tb.insert_node_at_path(
|
tb.insert_node_at_path(
|
||||||
0,
|
0,
|
||||||
NodeSubTree {
|
NodeSubTree {
|
||||||
node_type: "text".into(),
|
note_type: "text".into(),
|
||||||
attributes: NodeAttributes::new(),
|
attributes: NodeAttributes::new(),
|
||||||
delta: None,
|
delta: None,
|
||||||
children: vec![NodeSubTree::new("image")],
|
children: vec![NodeSubTree::new("image")],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user