4个版本 (2个破坏性版本)

0.3.1 2023年2月23日
0.3.0 2020年10月16日
0.2.0 2019年5月13日
0.1.0 2019年5月8日

#1893解析器实现

ISC 许可证

15KB
285

bml

BML标记语言

Build Documentation Downloads Version Rust License

BML 是一种简化的 XML,用作静态 数据库,请参阅使用 PEG 作为输入的 pest 解析器的 语法

与它的C++ 参考实现相比,这个Rust实现通过将缩进推入栈中而不是计数字符来比较缩进(基于栈的缩进),并且它允许在属性之间使用制表符(表格属性)以及在冒号和多行数据之间使用制表符(表格冒号数据),支持基于制表符和基于空格的对齐。

语法高亮很简单,请参阅 vim-bml

示例

use bml::BmlNode;

let root = BmlNode::try_from(concat!(
	"server\n",
	"  path: /core/www/\n",
	"  host: example.com\n",
	"  port: 80\n",
	"  service: true\n",
	"  proxy\n",
	"    host: proxy.example.com\n",
	"    port: 8080\n",
	"    authentication: plain\n",
	"  description\n",
	"    :Primary web-facing server\n",
	"    :Provides commerce-related functionality\n",
	"\n",
	"server\n",
	"  // ...\n",
	"  proxy host=\"proxy.example.com\" port=\"8080\"\n",
	"    authentication: plain\n",
)).unwrap();

let (name, node) = root.nodes().next().unwrap();

assert_eq!(name, "server");
assert_eq!(node.named("port").next().unwrap().value(), "80");

许可证

根据 ISC 许可。

贡献

除非您明确声明,否则您提交的任何有意包含在您的工作中的贡献都应按照上述条款许可,不附加任何额外条款或条件。

依赖项

~4MB
~80K SLoC