#unicode #unicode-characters #spreadsheet #markup #data

usv

USV:Unicode分隔值(USV)用于数据标记。这适用于电子表格、数据库、内容管理等领域。它基于ASCII分隔值(ASV),与逗号分隔值(CSV)形成对比。

31个版本 (13个破坏性更新)

0.19.1 2024年4月10日
0.18.0 2024年4月4日
0.15.0 2024年3月26日

#280 in 编码

Download history 28/week @ 2024-04-22 34/week @ 2024-04-29 16/week @ 2024-05-06 30/week @ 2024-05-13 62/week @ 2024-05-20 46/week @ 2024-05-27 50/week @ 2024-06-03 43/week @ 2024-06-10 47/week @ 2024-06-17 51/week @ 2024-06-24 32/week @ 2024-07-01 20/week @ 2024-07-08 48/week @ 2024-07-15 43/week @ 2024-07-22 62/week @ 2024-07-29 40/week @ 2024-08-05

每月下载量197次
8 crates 中使用

MIT OR Apache-2.0 OR GPL-2.0 OR GPL-3.0

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请求和标准化帮助。

无运行时依赖