remove bullet,order,check,uncheck with list

This commit is contained in:
appflowy 2021-09-15 20:19:16 +08:00
parent 09adad3875
commit e4db7222f8
5 changed files with 38 additions and 52 deletions

View File

@ -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![

View File

@ -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)?;
},
}

View File

@ -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);

View File

@ -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) => {

View File

@ -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"}}]"#,
),
];