10 个版本 (6 个稳定)
1.2.0 | 2024年1月18日 |
---|---|
1.1.0 | 2023年6月23日 |
1.0.3 | 2022年12月5日 |
1.0.2 | 2022年11月26日 |
0.1.8 | 2022年8月20日 |
#238 in 文本处理
每月下载 27 次
用于 betaconvert
25KB
364 行
betacode
A rust library for Betacode conversion.
转换
示例
use betacode::converter;
let input = String::from("mh=nin a)/eide qea\\ *phlhi+a/dew *a)xilh=os");
let output = String::from("μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος");
let result = betacode::converter::convert(input);
assert_eq!(result, output);
验证
验证 Betacode 文本是否遵循规则
- 它仅由 ASCII 字符组成,否则返回
ValidationError::NotASCII
包含无效字符; - 其字符由转换模块处理,否则返回
ValidationError::InvalidChars
包含无效字符; - 其字符的排列顺序可由转换模块解释,否则返回
ValidationError::InvalidDiacriticOrder
包含无效序列。
后者可能更容易恢复,通过函数 converter::reorder_diacritics
。前者可能通过忽略无效字符来恢复。
详细信息
如果文本以正确的 ASCII Betacode 输入(并且转换器可以转换它),它返回 Ok().
let input = String::from("mh=nin a)/eide qea\\ *phlhi+a/dew *a)xilh=os");
assert!(betacode::validator::validate(input).is_ok());
否则,它指定发生了什么错误。
例如,如果传递包含非 ASCII 字符的字符串,如“ἄλγεα”,则在枚举 ValidationError::NotASCII
中存储所有违反验证的字符列表。
let input = String::from("ἄλγεα");
let result = betacode::validator::validate(input);
assert!(result.is_err());
match result {
Ok(_) => (),
Err(e) => {
if let betacode::validator::ValidationError::NotASCII(b) = e {
assert_eq!(b, vec!['ἄ', 'λ','γ','ε','α']);
}
}
}
如果字符串是 ASCII,但尚未实现正确的转换规则,则在枚举 ValidationError::InvalidChars
中存储无法转换的字符列表。
let input = String::from("9");
let result = betacode::validator::validate(input);
assert!(result.is_err());
match result {
Ok(_) => (),
Err(e) => {
if let betacode::validator::ValidationError::InvalidChars(b) = e {
assert_eq!(b, vec!['9']);
}
}
}
如果文本包含无法直接转换的变音符号顺序,它将返回不合法的序列列表。转换模块仍然可以转换它,但这样做是为了确保语料库正确构建,以便其他工具操作。它将所有违反 BREATH/DIAIRESIS + ACCENT + SUB-IOTA
顺序的样式存储在 ValidationError::InvalidDiacriticOrder
。
let input = String::from("h\\( a/)ndra");
let result = betacode::validator::validate(input);
assert!(result.is_err());
match result {
Ok(_) => (),
Err(e) => {
if let betacode::validator::ValidationError::InvalidDiacriticOrder(b) = e {
assert_eq!(b, vec!["\\(".to_string(), "/)".to_string()]);
}
}
}
依赖项
~2.7–4MB
~94K SLoC