4 个版本

0.4.5 2024年4月28日
0.4.4 2024年3月5日
0.4.3 2024年2月1日
0.4.2 2024年1月31日
0.4.1 2023年10月24日

#590 in 配置


2 个 Crates 中使用 (通过 afrim)

MPL-2.0 许可证

20KB
313

Afrim 配置管理器

管理 afrim 输入法的配置。

特性

  • rhai: 启用 rhai 脚本的用法。
  • rhai-wasm: 类似于 rhai 但支持 wasm。

lib.rs:

用于管理 afrim 输入法配置的库。

它基于 toml Crate 构建。

示例

use afrim_config::Config;
use std::path::Path;

let filepath = Path::new("./data/config_sample.toml");
let conf = Config::from_file(&filepath).unwrap();

如果您想控制文件系统(读取文件),可以使用 Config::from_filesystem 方法。

示例

use afrim_config::{Config, FileSystem};
use std::{error, path::Path, string::String};

// Implements a custom filesystem.
struct File {
    source: String,
}

impl File {
    pub fn new(source: String) -> Self {
        Self { source }
    }
}

impl FileSystem for File {
    fn read_to_string(&self, filepath: &Path) -> Result<String, std::io::Error> {
        Ok(self.source.to_string())
    }
}

// Sets the config file.
let config_file = File::new(r#"
[core]
auto_commit = false

[data]
"n*" = "ŋ"
"#.to_owned());

// Loads the config file.
let config = Config::from_filesystem(&Path::new("."), &config_file).unwrap();

assert_eq!(config.core.clone().unwrap().auto_commit, Some(false));
// Note that the auto_capitalize is enabled by default.
assert_eq!(
    Vec::from_iter(config.extract_data().into_iter()),
    vec![("n*".to_owned(), "ŋ".to_owned()), ("N*".to_owned(), "Ŋ".to_owned())]
);

依赖

~4.5–7MB
~129K SLoC