Browse Source

remove bullet,order,check,uncheck with list

appflowy 3 years ago
parent
commit
e4db7222f8

+ 7 - 17
rust-lib/flowy-ot/src/core/attributes/attribute.rs

@@ -29,10 +29,6 @@ impl Attribute {
     block_attribute!(Indent, usize);
     block_attribute!(Align, String);
     block_attribute!(List, String);
-    block_attribute!(Bullet, bool);
-    block_attribute!(Ordered, bool);
-    block_attribute!(Checked, bool);
-    block_attribute!(UnChecked, bool);
     block_attribute!(CodeBlock, bool);
     block_attribute!(QuoteBlock, bool);
 
@@ -94,14 +90,6 @@ pub enum AttributeKey {
     Height,
     #[serde(rename = "header")]
     Header,
-    #[serde(rename = "bullet")]
-    Bullet,
-    #[serde(rename = "ordered")]
-    Ordered,
-    #[serde(rename = "checked")]
-    Checked,
-    #[serde(rename = "unchecked")]
-    UnChecked,
 }
 
 // pub trait AttributeValueData<'a>: Serialize + Deserialize<'a> {}
@@ -127,7 +115,13 @@ impl std::convert::From<&str> for AttributeValue {
 }
 
 impl std::convert::From<String> for AttributeValue {
-    fn from(val: String) -> Self { AttributeValue(Some(val)) }
+    fn from(val: String) -> Self {
+        if val.is_empty() {
+            AttributeValue(None)
+        } else {
+            AttributeValue(Some(val))
+        }
+    }
 }
 
 impl std::convert::From<&bool> for AttributeValue {
@@ -158,10 +152,6 @@ lazy_static! {
         AttributeKey::Align,
         AttributeKey::CodeBlock,
         AttributeKey::List,
-        AttributeKey::Bullet,
-        AttributeKey::Ordered,
-        AttributeKey::Checked,
-        AttributeKey::UnChecked,
         AttributeKey::QuoteBlock,
     ]);
     static ref INLINE_KEYS: HashSet<AttributeKey> = HashSet::from_iter(vec![

+ 1 - 9
rust-lib/flowy-ot/src/core/attributes/attributes_serde.rs

@@ -45,15 +45,7 @@ impl Serialize for Attributes {
                         Err(e) => log::error!("Serial {:?} failed. {:?}", k, e),
                     },
 
-                    AttributeKey::Link
-                    | AttributeKey::Color
-                    | AttributeKey::Background
-                    | AttributeKey::Align
-                    | AttributeKey::Bullet
-                    | AttributeKey::Ordered
-                    | AttributeKey::Checked
-                    | AttributeKey::UnChecked
-                    | AttributeKey::List => {
+                    AttributeKey::Link | AttributeKey::Color | AttributeKey::Background | AttributeKey::Align | AttributeKey::List => {
                         map.serialize_entry(k, v)?;
                     },
                 }

+ 16 - 16
rust-lib/flowy-ot/tests/attribute_test.rs

@@ -601,7 +601,7 @@ fn attributes_bullet_added() {
     let ops = vec![
         Insert(0, "12", 0),
         Bullet(0, Interval::new(0, 1), true),
-        AssertOpsJson(0, r#"[{"insert":"12"},{"insert":"\n","attributes":{"bullet":"true"}}]"#),
+        AssertOpsJson(0, r#"[{"insert":"12"},{"insert":"\n","attributes":{"list":"bullet"}}]"#),
     ];
 
     TestBuilder::new().run_script::<FlowyDoc>(ops);
@@ -612,13 +612,13 @@ fn attributes_bullet_added_2() {
     let ops = vec![
         Insert(0, "1", 0),
         Bullet(0, Interval::new(0, 1), true),
-        AssertOpsJson(0, r#"[{"insert":"1"},{"insert":"\n","attributes":{"bullet":"true"}}]"#),
+        AssertOpsJson(0, r#"[{"insert":"1"},{"insert":"\n","attributes":{"list":"bullet"}}]"#),
         Insert(0, NEW_LINE, 1),
-        AssertOpsJson(0, r#"[{"insert":"1"},{"insert":"\n\n","attributes":{"bullet":"true"}}]"#),
+        AssertOpsJson(0, r#"[{"insert":"1"},{"insert":"\n\n","attributes":{"list":"bullet"}}]"#),
         Insert(0, "2", 2),
         AssertOpsJson(
             0,
-            r#"[{"insert":"1"},{"insert":"\n","attributes":{"bullet":"true"}},{"insert":"2"},{"insert":"\n","attributes":{"bullet":"true"}}]"#,
+            r#"[{"insert":"1"},{"insert":"\n","attributes":{"list":"bullet"}},{"insert":"2"},{"insert":"\n","attributes":{"list":"bullet"}}]"#,
         ),
     ];
 
@@ -635,7 +635,7 @@ fn attributes_bullet_remove_partial() {
         Bullet(0, Interval::new(2, 3), false),
         AssertOpsJson(
             0,
-            r#"[{"insert":"1"},{"insert":"\n","attributes":{"bullet":"true"}},{"insert":"2\n"}]"#,
+            r#"[{"insert":"1"},{"insert":"\n","attributes":{"list":"bullet"}},{"insert":"2\n"}]"#,
         ),
     ];
 
@@ -651,7 +651,7 @@ fn attributes_bullet_auto_exit() {
         Insert(0, NEW_LINE, 2),
         AssertOpsJson(
             0,
-            r#"[{"insert":"1"},{"insert":"\n","attributes":{"bullet":"true"}},{"insert":"\n"}]"#,
+            r#"[{"insert":"1"},{"insert":"\n","attributes":{"list":"bullet"}},{"insert":"\n"}]"#,
         ),
     ];
 
@@ -664,30 +664,30 @@ fn attributes_preserve_block_when_insert_newline_inside() {
         Insert(0, "12", 0),
         Bullet(0, Interval::new(0, 2), true),
         Insert(0, NEW_LINE, 2),
-        AssertOpsJson(0, r#"[{"insert":"12"},{"insert":"\n\n","attributes":{"bullet":"true"}}]"#),
+        AssertOpsJson(0, r#"[{"insert":"12"},{"insert":"\n\n","attributes":{"list":"bullet"}}]"#),
         Insert(0, "34", 3),
         AssertOpsJson(
             0,
             r#"[
-            {"insert":"12"},{"insert":"\n","attributes":{"bullet":"true"}},
-            {"insert":"34"},{"insert":"\n","attributes":{"bullet":"true"}}
+            {"insert":"12"},{"insert":"\n","attributes":{"list":"bullet"}},
+            {"insert":"34"},{"insert":"\n","attributes":{"list":"bullet"}}
             ]"#,
         ),
         Insert(0, NEW_LINE, 3),
         AssertOpsJson(
             0,
             r#"[
-            {"insert":"12"},{"insert":"\n\n","attributes":{"bullet":"true"}},
-            {"insert":"34"},{"insert":"\n","attributes":{"bullet":"true"}}
+            {"insert":"12"},{"insert":"\n\n","attributes":{"list":"bullet"}},
+            {"insert":"34"},{"insert":"\n","attributes":{"list":"bullet"}}
             ]"#,
         ),
         Insert(0, "ab", 3),
         AssertOpsJson(
             0,
             r#"[
-            {"insert":"12"},{"insert":"\n","attributes":{"bullet":"true"}},
-            {"insert":"ab"},{"insert":"\n","attributes":{"bullet":"true"}},
-            {"insert":"34"},{"insert":"\n","attributes":{"bullet":"true"}}
+            {"insert":"12"},{"insert":"\n","attributes":{"list":"bullet"}},
+            {"insert":"ab"},{"insert":"\n","attributes":{"list":"bullet"}},
+            {"insert":"34"},{"insert":"\n","attributes":{"list":"bullet"}}
             ]"#,
         ),
     ];
@@ -720,10 +720,10 @@ fn attributes_preserve_list_format_on_merge() {
         Insert(0, NEW_LINE, 3),
         AssertOpsJson(
             0,
-            r#"[{"insert":"123"},{"insert":"\n","attributes":{"bullet":"true"}},{"insert":"456"},{"insert":"\n","attributes":{"bullet":"true"}}]"#,
+            r#"[{"insert":"123"},{"insert":"\n","attributes":{"list":"bullet"}},{"insert":"456"},{"insert":"\n","attributes":{"list":"bullet"}}]"#,
         ),
         Delete(0, Interval::new(3, 4)),
-        AssertOpsJson(0, r#"[{"insert":"123456"},{"insert":"\n","attributes":{"bullet":"true"}}]"#),
+        AssertOpsJson(0, r#"[{"insert":"123456"},{"insert":"\n","attributes":{"list":"bullet"}}]"#),
     ];
 
     TestBuilder::new().run_script::<FlowyDoc>(ops);

+ 6 - 2
rust-lib/flowy-ot/tests/helper/mod.rs

@@ -79,7 +79,7 @@ impl TestBuilder {
     }
 
     fn run_op(&mut self, op: &TestOp) {
-        log::debug!("***************** 😈{} *******************", &op);
+        log::trace!("***************** 😈{} *******************", &op);
         match op {
             TestOp::Insert(delta_i, s, index) => {
                 let document = &mut self.documents[*delta_i];
@@ -123,7 +123,11 @@ impl TestBuilder {
             },
             TestOp::Bullet(delta_i, iv, enable) => {
                 let document = &mut self.documents[*delta_i];
-                let attribute = Attribute::Bullet(*enable);
+                let value = match *enable {
+                    true => "bullet",
+                    false => "",
+                };
+                let attribute = Attribute::List(value.to_owned());
                 document.format(*iv, attribute).unwrap();
             },
             TestOp::Transform(delta_a_i, delta_b_i) => {

+ 8 - 8
rust-lib/flowy-ot/tests/undo_redo_test.rs

@@ -306,14 +306,14 @@ fn history_bullet_undo() {
         Insert(0, "2", 2),
         AssertOpsJson(
             0,
-            r#"[{"insert":"1"},{"insert":"\n","attributes":{"bullet":"true"}},{"insert":"2"},{"insert":"\n","attributes":{"bullet":"true"}}]"#,
+            r#"[{"insert":"1"},{"insert":"\n","attributes":{"list":"bullet"}},{"insert":"2"},{"insert":"\n","attributes":{"list":"bullet"}}]"#,
         ),
         Undo(0),
         AssertOpsJson(0, r#"[{"insert":"\n"}]"#),
         Redo(0),
         AssertOpsJson(
             0,
-            r#"[{"insert":"1"},{"insert":"\n","attributes":{"bullet":"true"}},{"insert":"2"},{"insert":"\n","attributes":{"bullet":"true"}}]"#,
+            r#"[{"insert":"1"},{"insert":"\n","attributes":{"list":"bullet"}},{"insert":"2"},{"insert":"\n","attributes":{"list":"bullet"}}]"#,
         ),
     ];
 
@@ -331,17 +331,17 @@ fn history_bullet_undo_with_lagging() {
         Wait(RECORD_THRESHOLD),
         AssertOpsJson(
             0,
-            r#"[{"insert":"1"},{"insert":"\n","attributes":{"bullet":"true"}},{"insert":"2"},{"insert":"\n","attributes":{"bullet":"true"}}]"#,
+            r#"[{"insert":"1"},{"insert":"\n","attributes":{"list":"bullet"}},{"insert":"2"},{"insert":"\n","attributes":{"list":"bullet"}}]"#,
         ),
         Undo(0),
-        AssertOpsJson(0, r#"[{"insert":"1"},{"insert":"\n","attributes":{"bullet":"true"}}]"#),
+        AssertOpsJson(0, r#"[{"insert":"1"},{"insert":"\n","attributes":{"list":"bullet"}}]"#),
         Undo(0),
         AssertOpsJson(0, r#"[{"insert":"\n"}]"#),
         Redo(0),
         Redo(0),
         AssertOpsJson(
             0,
-            r#"[{"insert":"1"},{"insert":"\n","attributes":{"bullet":"true"}},{"insert":"2"},{"insert":"\n","attributes":{"bullet":"true"}}]"#,
+            r#"[{"insert":"1"},{"insert":"\n","attributes":{"list":"bullet"}},{"insert":"2"},{"insert":"\n","attributes":{"list":"bullet"}}]"#,
         ),
     ];
 
@@ -358,14 +358,14 @@ fn history_undo_attribute_on_merge_between_line() {
         Wait(RECORD_THRESHOLD),
         AssertOpsJson(
             0,
-            r#"[{"insert":"123"},{"insert":"\n","attributes":{"bullet":"true"}},{"insert":"456"},{"insert":"\n","attributes":{"bullet":"true"}}]"#,
+            r#"[{"insert":"123"},{"insert":"\n","attributes":{"list":"bullet"}},{"insert":"456"},{"insert":"\n","attributes":{"list":"bullet"}}]"#,
         ),
         Delete(0, Interval::new(3, 4)), // delete the newline
-        AssertOpsJson(0, r#"[{"insert":"123456"},{"insert":"\n","attributes":{"bullet":"true"}}]"#),
+        AssertOpsJson(0, r#"[{"insert":"123456"},{"insert":"\n","attributes":{"list":"bullet"}}]"#),
         Undo(0),
         AssertOpsJson(
             0,
-            r#"[{"insert":"123"},{"insert":"\n","attributes":{"bullet":"true"}},{"insert":"456"},{"insert":"\n","attributes":{"bullet":"true"}}]"#,
+            r#"[{"insert":"123"},{"insert":"\n","attributes":{"list":"bullet"}},{"insert":"456"},{"insert":"\n","attributes":{"list":"bullet"}}]"#,
         ),
     ];