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 在 解析器实现
15KB
285 行
bml
BML标记语言
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