#typing #language #ime #african #lib #load #clafrica

已废弃 clafrica-lib

此库包含一组工具,使处理 clafrica 代码更加方便。注意:此包已重命名为 afrim-memory。请使用其新名称

6 个版本

0.3.2 2024 年 2 月 7 日
0.3.1 2023 年 9 月 16 日
0.3.0 2023 年 6 月 3 日
0.2.0 2023 年 5 月 8 日
0.1.1 2023 年 4 月 28 日

#5 in #african


2 个包中使用(通过 clafrica

MIT 许可证

12KB
235 代码行,不包括注释

Clafrica Lib

clafrica-lib 是一组实用工具,用于使处理 clafrica 代码更加方便。

示例

use clafrica_lib::{text_buffer, utils};

// Build a TextBuffer
let root = text_buffer::Node::default();
root.insert(vec!['a', 'f'], "ɑ".to_owned());
root.insert(vec!['a', 'f', '1'], "ɑ̀".to_owned());

// Bulk insert of data in the TextBuffer
let data = vec![["af11", "ɑ̀ɑ̀"], ["?.", "ʔ"]];
utils::build_map(data);

// or directly from a file
let data = utils::load_data("data/sample.txt")
                  .expect("Failed to load the clafrica code file");
let data = data.iter()
               .map(|e| [e[0].as_str(), e[1].as_str()])
               .collect();

utils::build_map(data);

// Traverse the tree
let node = root.goto('a').and_then(|e| e.goto('f'));
assert_eq!(node.unwrap().take(), Some("ɑ".to_owned()));

// Test our cursor
let mut cursor = text_buffer::Cursor::new(root, 10);
let code = "af1";
code.chars().for_each(|c| {cursor.hit(c);});
assert_eq!(cursor.state(), (Some("ɑ̀".to_owned()), 3, '1'));
assert_eq!(cursor.undo(), Some("ɑ̀".to_owned()));

无运行时依赖