11 个版本 (5 个重大更新)
0.6.0 | 2023年2月28日 |
---|---|
0.5.0 | 2022年11月15日 |
0.4.0 | 2022年11月15日 |
0.3.0 | 2022年11月1日 |
0.1.0 | 2022年8月2日 |
#2063 在 编码
每月73次 下载
在 11 个crate中(10个直接) 使用
32KB
806 行
Litl V1
"Little term language"
结构化数据的自我描述、可读编码格式。
Litl 是 JSON 的方言,更准确地说,它是
- 具有以下约定的方言
- 编码二进制数据(Base58)
- 标记二进制数据
- 具有可选的规范编码
- 具有可选的流压缩算法(lil)
语义与编码
Litl 与 JSON 共享以下类型的值
true
、false
和null
- 数字(浮点数):
42
、2.8299e-10
- 字符串:
"Hello"
、"👾"
- 数组:
["a","b","c",5]
- 对象:
{"a":1,"b":2,"c":"d"}
这些将随后被称为 "JSON值"
此外,它还增加了两个概念
- 原始二进制数据:
"h3znn4pjays7u46h"
- 标记的二进制数据:
"hash_hbk5tfu4p3jncen"
原始二进制数据
原始二进制数据必须作为JSON字符串中的z-base32编码,前缀为"h"
。
所有这种格式的字符串(前缀 + 有效的Base58)必须被视为二进制数据。
由于原始二进制数据被编码为JSON字符串,它可以作为字典中的键,并且必须以与字符串相同的方式根据JCS进行编码。
标记的二进制数据
在Litl中的二进制数据可以被标记,以附加额外的类型信息。这可以用来表示更精确的类型、newtype风格的包装或区分枚举的不同变体。
标签是由任意UTF-8字符组成的字符串,但不能包含下划线"_"
。
多词标签应使用camelCase编写。
原始二进制数据必须通过在原始二进制字符串表示法前添加标签来标记
tag_hgrodomjqb5bcse
标记的二进制数据可以用额外的标签进行标记。额外的标签必须通过在每个标签前添加前缀,并通过下划线分隔来指定
outerTag_innerTag_z9jr402fnnsldkn
所有这些格式的字符串(下划线分隔的标签 + _h
前缀 + 有效的z-bae32)必须被视为标记的二进制数据。
由于标记的二进制数据被编码为JSON字符串,它可以作为字典中的键。
规范值编码
为了符合规范Litl编码,值必须根据JSON规范化方案(“JCS”,RFC 8785)进行编码,该方案定义了数字、字符串和对象中键值对的确定顺序的规范编码。
原始和标记二进制数据的规范编码
为了符合规范Litl编码,原始和标记二进制数据必须以与字符串根据JCS进行编码相同的方式进行编码。
依赖关系
~2.9–4.5MB
~81K SLoC