oficina / docs Public

Clone
git clone https://amadan.net/oficina/docs

Plain git — no account needed to clone.

Download

Download this file

1use docs_native_crdt::Editor;
2use serde_json::json;
3fn main() {
4 let arguments: Vec<_> = std::env::args().collect();
5 let mut editor = Editor::new("native-wire-fixture", 123456);
6 editor.command(&json!({"op":"insert_element","at":0,"type":"paragraph"})).unwrap();
7 let block = editor.projection()["children"][0]["id"].as_str().unwrap().to_owned();
8 editor.command(&json!({"op":"insert_text","node":block,"at":0,"text":"Native πŸ˜€ text"})).unwrap();
9 let text = editor.projection()["children"][0]["children"][0]["id"].as_str().unwrap().to_owned();
10 editor.command(&json!({"op":"format","node":text,"at":7,"length":2,"marks":{"strong":{},"size_18":{}}})).unwrap();
11 std::fs::write(&arguments[1], editor.snapshot()).unwrap();
12 if let Some(path) = arguments.get(2) {
13 editor.apply(&std::fs::read(path).unwrap()).unwrap();
14 let projection = editor.projection();
15 let runs = projection["children"][0]["children"][0]["runs"].as_array().unwrap();
16 let text: String = runs.iter().map(|run| run["insert"].as_str().unwrap()).collect();
17 assert_eq!(text, "browser Native πŸ˜€ text");
18 let emoji = runs.iter().find(|run| run["insert"] == "πŸ˜€").unwrap();
19 assert_eq!(emoji["marks"]["strong"], json!({}));
20 assert_eq!(emoji["marks"]["size_18"], json!({}));
21 }
22}
23