31个版本 (13个破坏性更新)
0.19.1 | 2024年4月10日 |
---|---|
0.18.0 | 2024年4月4日 |
0.15.0 | 2024年3月26日 |
#280 in 编码
每月下载量197次
在 8 crates 中使用
185KB
3K SLoC
Unicode分隔值 (USV)™
Unicode分隔值 (USV)™ 是一种使用Unicode字符进行标记的数据格式。
此USV包实现了USV规范:https://github.com/sixarm/usv。
此USV包旨在帮助开发者构建新的USV应用、工具和工作流程。
USV字符
分隔符
-
文件分隔符 (FS) 是 U+001C 或 U+241C ␜
-
组分隔符 (GS) 是 U+001D 或 U+241D ␝
-
记录分隔符 (RS) 是 U+001E 或 U+241E ␞
-
单元分隔符 (US) 是 U+001F 或 U+241F ␟
修饰符
-
转义 (ESC) 是 U+001B 或 U+241B ␛
-
传输结束 (EOT) 是 U+0004 或 U+2404 ␄
单元
use usv::*;
let str = "a␟b␟";
let units: Units = str.units().collect();
assert_eq!(units, ["a", "b"]);
assert_eq!(units.into_usv_string(), str);
记录
use usv::*;
let str = "a␟b␟␞c␟d␟␞";
let records: Records = str.records().collect();
assert_eq!(records, [["a", "b"],["c", "d"]]);
assert_eq!(records.into_usv_string(), str);
组
use usv::*;
let str = "a␟b␟␞c␟d␟␞␝e␟f␟␞g␟h␟␞␝";
let groups: Groups = str.groups().collect();
assert_eq!(groups, [[["a", "b"],["c", "d"]],[["e", "f"],["g", "h"]]]);
assert_eq!(groups.into_usv_string(), str);
文件
use usv::*;
let str = "a␟b␟␞c␟d␟␞␝e␟f␟␞g␟h␟␞␝␜i␟j␟␞k␟l␟␞␝m␟n␟␞o␟p␟␞␝␜";
let files: Files = str.files().collect();
assert_eq!(files, [[[["a", "b"],["c", "d"]],[["e", "f"],["g", "h"]]],[[["i", "j"],["k", "l"]],[["m", "n"],["o", "p"]]]]);
assert_eq!(files.into_usv_string(), str);
架构
此包的架构如下,按重要性排序
-
lib.rs
:库的入口点。 -
constants.rs
:USV字符的常量。 -
token.rs
:USV Token枚举器,用于返回解析结果。 -
iter/
:用于单元、记录、组、文件、标记的迭代器。 -
style/
:符号、控制、括号的字符风格集。 -
layout/
:行、视觉显示和编辑器的布局格式。 -
from/
:将一种东西转换成另一种东西。 -
into_usv_string
:转换从数据到USV字符串的特性和实现。 -
examples.rs
:适合演示和测试的数据字符串。 -
str_ext.rs
:用于解析USV的字符串扩展特性。 -
svec.rs
:创建字符串向量的简单宏。 -
bench/
:基准测试;正在进行中。 -
tests/
:集成测试占位符;尚不需要。
标记
标记是解析字符串以输出底层USV枚举
pub enum Token {
Unit(String),
UnitSeparator,
RecordSeparator,
GroupSeparator,
FileSeparator,
EndOfTransmission,
}
类型别名
-
单元 = String
-
单元 = Vec
-
记录 = 单元
-
记录 = Vec
-
组 = 记录
-
组 = Vec
-
文件 = 组
-
文件 = Vec
标准化法律保护
USV项目旨在成为类似CSV和TDF的标准,成为免费开源的IETF标准和IANA标准。
在标准化实施之前,“Unicode 分隔值”和“USV”都是本项目的商标。此存储库的版权所有为2022-2024。商标和版权归Joel Parker Henderson和本人(个人)所有,非公司。
当IETF和IANA批准提交内容作为标准时,商标和版权将归一个自由、开源软件倡导基金会所有。我们欢迎就如何做好这件事提供建议。
结论
USV正在帮助我们进行数据项目。我们希望USV也能帮到您。
我们欢迎对USV的建设性反馈,以及git问题、pull请求和标准化帮助。