6个版本 (3个重大更改)
0.6.0 | 2022年9月16日 |
---|---|
0.5.0 | 2021年6月4日 |
0.4.2 | 2020年11月17日 |
0.3.0 | 2020年1月9日 |
#1218 在 文本处理
每月27次 下载
675KB
7.5K SLoC
yeslogic-ucd-generate
一个用于在Rust源代码中生成Unicode表的命令行工具。表通常可以以以下三种格式之一生成:字符范围的有序序列、一个有限状态转换器或一个压缩字典树。还提供了对名称规范化的完全支持。此工具还支持使用regex-automata crate将正则表达式序列化为DFAs。
此版本的ucd-generate
在BurntSushi版本的基础上增加了以下内容
安装
由于这个工具主要是作为开发者在编写Rust程序时使用的开发工具,主要安装方法是来自crates.io
$ cargo install yeslogic-ucd-generate
yeslogic-ucd-generate --help
示例
以下示例展示了生成三个属性的表并将它们表示为正常的Rust字符字面量范围的输出
要运行此示例,您需要下载Unicode字符数据库(UCD)
$ mkdir /tmp/ucd-14.0.0
$ cd /tmp/ucd-14.0.0
$ curl -LO https://www.unicode.org/Public/zipped/14.0.0/UCD.zip
$ unzip UCD.zip
请注意,在版本13.0.0之前,emoji/emoji-data.txt
文件是与UCD捆绑包分开分发的。对于这些版本,您可能需要从https://unicode.org/Public/emoji 下载此文件,以便生成某些表格。
现在告诉 ucd-generate
您想要什么,并将其指向上面创建的目录
$ ucd-generate property-bool /tmp/ucd-14.0.0 --include Hyphen,Dash,Quotation_Mark --chars
然后是输出,这是有效的Rust源代码
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
// ucd-generate property-bool /tmp/ucd-14.0.0 --include Hyphen,Dash,Quotation_Mark --chars
//
// Unicode version: 14.0.0.
//
// ucd-generate 0.2.10 is available on crates.io.
pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("Dash", DASH), ("Hyphen", HYPHEN), ("Quotation_Mark", QUOTATION_MARK),
];
pub const DASH: &'static [(char, char)] = &[
('-', '-'), ('֊', '֊'), ('־', '־'), ('᐀', '᐀'), ('᠆', '᠆'),
('‐', '―'), ('⁓', '⁓'), ('⁻', '⁻'), ('₋', '₋'),
('−', '−'), ('⸗', '⸗'), ('⸚', '⸚'), ('⸺', '⸻'),
('⹀', '⹀'), ('\u{2e5d}', '\u{2e5d}'), ('〜', '〜'), ('〰', '〰'),
('゠', '゠'), ('︱', '︲'), ('﹘', '﹘'), ('﹣', '﹣'),
('-', '-'), ('𐺭', '𐺭'),
];
pub const HYPHEN: &'static [(char, char)] = &[
('-', '-'), ('\u{ad}', '\u{ad}'), ('֊', '֊'), ('᠆', '᠆'),
('‐', '‑'), ('⸗', '⸗'), ('・', '・'), ('﹣', '﹣'),
('-', '-'), ('・', '・'),
];
pub const QUOTATION_MARK: &'static [(char, char)] = &[
('"', '"'), ('\'', '\''), ('«', '«'), ('»', '»'), ('‘', '‟'),
('‹', '›'), ('⹂', '⹂'), ('「', '』'), ('〝', '〟'),
('﹁', '﹄'), ('"', '"'), (''', '''), ('「', '」'),
];
贡献
ucd-generate
工具没有特定的设计目标,除了收集Unicode表生成任务。如果您需要 ucd-generate
做某事,并且添加它是相对直接的,那么提交一个PR将非常好。否则,请提交一个问题,我们可以讨论。
未来工作
这个工具绝对不是全面的。事实上,它甚至远未达到全面,可能永远都无法做到。主要意图是收集几乎任何类型的Unicode生成任务。理论上,这将理想地取代今天在各个Unicode仓库中负责这一任务的Python程序的大杂烩。
很可能,并且可能是所希望的,这个工具最终会被像UNIC这样的更完整的项目所取代。《ucd-generate》工具的诞生源于为Rust的regex仓库添加更原则性的Unicode支持的愿望,并且为了满足我的特定需求,在独立开发中更容易实现。
最后,这个工具生成的结构可能不是最优的。特别是,我强烈怀疑trie集生成器可以大幅改进。
子仓库
本仓库包含三个子仓库
ucd-parse
- 一个用于将UCD文件解析成结构化数据的仓库。ucd-trie
- 处理由《ucd-generate》输出的trie集表格格式的辅助类型。这个仓库具有no_std
模式。ucd-util
- 一个专门小巧的仓库,用于Unicode辅助函数。这包括符号或字符名称规范化、表意文字名称生成以及用于搜索属性名称和值表的辅助函数。
许可证
本项目采用以下任一许可证:
- Apache许可证第2版(《LICENSE-APACHE》或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(《LICENSE-MIT》或https://opensource.org/licenses/MIT)供您选择。
依赖
~7.5MB
~100K SLoC