cml 1.0.1
cml: ^1.0.1 copied to clipboard
CML(Context Mark Language)核心语法编解码的Dart实现。 CML是语义时代的Markdown,目标是让兼具人类可读和机器可运算特征的关系结构片段, 成为可大规模计算、任意传输、分布式存储的语义中间层。
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.0.1 - 2026-01-24 #
Fixed #
- 修复 A 模式 UTF-8 解码 bug:使用
String.fromCharCodes()改为Utf8Codec().decode() - 改进字符检测逻辑:从 rune code 比较改为直接字符比较
- 修复 Markdown 转换逻辑:
toMarkdown()不再添加"美化空格",直接输出关系符fromMarkdown()正确识别空格为有效的 CML 关系符(@, ., +, :, space)- 修复
normalizeWhitespace()的空白字符压缩处理
- 修复所有测试用例:
- 移除测试输入中的"美化空格"
- 更新测试期望值以反映空格作为有效关系符的行为
- 修正错误的 fragments 对称性测试
- 所有 70 个测试现已通过
Changed #
- Markdown 设计原则更新:
- 空格现在被正确识别为 CML 关系符而非纯粹的格式化符号
toMarkdown()和fromMarkdown()现在完全对称- 移除了与 CML 语义冲突的"美化"功能
Technical #
- 完整的测试覆盖率(70/70 测试通过)
- 无 warning 或 error(仅有编码风格 info)
1.0.0 - 2024-01-08 #
Added #
- 初始版本发布
- 实现CML(Context Mark Language)核心语法编解码功能
- 支持4种编码模式:
- A模式:双层Base58编码
- C模式:双层Base64URL编码
- P模式:单层明文混编
- Q模式:双层混编
- 实现两种中间结构:
- CmlElements:基元类型抽象的单序列
- CmlFragments:基元类型分类的双序列
- 支持编解码模式互转
- 支持Markdown格式转换
- 完整的错误处理和验证
- 100%测试覆盖率
- 完整的API文档
Features #
-
编解码功能:
- 字符串到基元序列解析
- 基元序列到字符串编码
- 4种编码模式相互转换
- 特殊字符自动转义处理
-
Markdown支持:
- CML到Markdown格式转换
- Markdown到CML基元序列解析
- 反引号包裹规则处理
- 空白字符标准化
-
验证和错误处理:
- CML格式合法性验证
- 基元序列奇偶交替特征检查
- 关系符合法性验证
- 详细的错误信息
-
性能优化:
- 双序列结构减少内存分配
- 高效的状态机解析
- 预分配内存优化
Technical Details #
-
语言特性:
- 完整的null safety支持
- 类型安全
- 扩展方法使用
- 异常处理机制
-
依赖管理:
- 最小化外部依赖
- 纯Dart实现
- 跨平台兼容
-
文档规范:
- 完整的dartdoc文档
- 中文注释
- 使用示例
- API参考
Breaking Changes #
- 此为初始版本,无破坏性变更
Migration Guide #
- 无迁移指南,此为初始版本
Dependencies #
convert: ^3.1.1bs58: ^1.0.2
Dev Dependencies #
lints: ^3.0.0test: ^1.24.0