6 个版本
0.1.5 | 2024 年 3 月 6 日 |
---|---|
0.1.4 | 2023 年 10 月 8 日 |
0.1.3 | 2023 年 9 月 4 日 |
0.1.2 | 2023 年 8 月 3 日 |
0.1.0 | 2022 年 3 月 8 日 |
#139 在 文本处理
4,368 每月下载量
在 26 个 crates 中使用 (直接使用 2 个)
1MB
657 行
hypher
hypher 将单词分割为音节。
[dependencies]
hypher = "0.1"
功能
- 全部包含:连字符模式在构建时嵌入到二进制文件中,以高效编码的有限自动机形式。
- 零加载时间:连字符自动机直接在嵌入的二进制数据上运行,无需前置解码。
- 除非在分割非常长的单词(> 41 字节)时,否则不进行分配。您可以禁用
alloc
功能,但此时过长单词将导致 panic。 - 支持多种语言。
- 无不安全代码,无依赖,无 std。
示例
use hypher::{hyphenate, Lang};
let syllables = hyphenate("extensive", Lang::English);
assert_eq!(syllables.join("-"), "ex-ten-sive");
语言
默认情况下,此 crate 支持 30 多种语言的连字符处理。嵌入所有这些语言的自动机将增加 ~1.1 MiB 到您的二进制文件中。或者,您可以禁用所有语言的支持并手动选择要添加的语言
[dependencies]
hypher = { version = "0.1", default-features = false, features = ["english", "greek"] }
每个添加的语言单独贡献
语言 | 空间 |
---|---|
南非荷兰语 | 60 KiB |
阿尔巴尼亚语 | 1.4 KiB |
白俄罗斯语 | 3.9 KiB |
保加利亚语 | 13 KiB |
加泰罗尼亚语 | 1.7 KiB |
克罗地亚语 | 2.0 KiB |
捷克语 | 40 KiB |
丹麦语 | 5.7 KiB |
荷兰语 | 63 KiB |
英语 | 27 KiB |
爱沙尼亚语 | 19 KiB |
芬兰语 | 1.3 KiB |
法语 | 6.9 KiB |
格鲁吉亚语 | 11 KiB |
德语 | 192 KiB |
希腊语 | 2.0 KiB |
匈牙利语 | 346 KiB |
冰岛语 | 21 KiB |
意大利语 | 1.6 KiB |
库尔曼吉语 | 1.4 KiB |
拉丁语 | 1003 B |
立陶宛语 | 6.5 KiB |
蒙古语 | 4.9 KiB |
挪威语 | 153 KiB |
波兰语 | 16 KiB |
葡萄牙语 | 343 B |
俄语 | 33 KiB |
塞尔维亚语 | 13 KiB |
斯洛伐克语 | 13 KiB |
斯洛文尼亚语 | 5.5 KiB |
西班牙语 | 14 KiB |
瑞典语 | 24 KiB |
土耳其语 | 526 B |
土库曼语 | 1.4 KiB |
乌克兰语 | 21 KiB |
基准测试
任务 | hypher |
hyphenation |
---|---|---|
分割 extensive (英语) |
356ns | 698ns |
分割 διαμερίσματα (希腊语) |
503ns | 1121ns |
加载英文模式 | 0us | 151us |
加载希腊模式 | 0us | 0.826us |
基准测试在ARM、Apple M1上执行。
许可证
此crate的代码在MIT和Apache 2.0许可证下双重许可。
位于patterns/
中的文件受其中所述的个别许可证约束。模式在构建时进行处理,然后嵌入(即静态链接)到您的二进制文件中。然而,hypher仅包含在宽松许可证下可用的模式。模式许可证包括LPPL、MPL、MIT、BSD-3。