Gura Dart 解析器
该存储库包含为 Dart 实现的 Gura 配置格式解析器,完全使用 Dart 编写。(符合规范版本 1.0.0)。
安装
dart pub add gura
用法
导入 package:gura/gura.dart 并使用 [parse()]、[parseFile()] 或 [parseFileSync()]
函数将您的 Gura 输入转换为 Map<String, dynamic> 以便在您的代码中使用。
示例
import 'package:gura/gura.dart';
final String guraString = '''
# This is a Gura document.
title: "Gura Example"
an_object:
username: "Stephen"
pass: "Hawking"
# Line breaks are ok when inside arrays
hosts: [
"alpha",
"omega"
]
''';
void main()
{
// parse: transforms a Gura string into a Map of Gura key/value pairs
final Map<String, dynamic> parsedGura = parse(guraString);
print(parsedGura);
// Access a specific field
print('Title -> ${parsedGura['title']}');
// Iterate over structures (parsedGura['hosts'] is List<dynamic> but we know
// it contains strings so we can safely cast to String when iterating over it)
for (final String host in parsedGura['hosts'])
print('Host -> $host');
// dump: stringifies Map<String, dynamic> as a Gura-compatible string
print(dump(parsedGura));
}
import 'dart:io';
import 'package:gura/gura.dart';
Future<void> main() async
{
final File guraFile = File('foo_bar.ura');
final Map<String, dynamic> parsedGura = await parseFile(guraFile);
...
}
import 'dart:io';
import 'package:gura/gura.dart';
void main()
{
final File guraFile = File('foo_bar.ura');
final Map<String, dynamic> parsedGura = parseFileSync(guraFile);
...
}
如果库函数名称(parse、parseFile 等)
与另一个库的函数发生冲突,请为 gura 创建一个别名,并通过该别名使用限定函数
调用
import 'dart:io';
import 'package:gura/gura.dart' as gura;
void main()
{
final File guraFile = File('foo_bar.ura');
final Map<String, dynamic> parsedGura = await gura.parseFile(guraFile);
...
}
贡献
- Fork 此项目
- 为您的功能创建新分支
- 提交并推送您的更改
- 提交拉取请求
遗憾的是,Dart 在维护一致代码风格方面的工具选择
不允许进行太多自定义以支持我的个人代码风格,并且
我不喜欢 dartfmt 的主观风格,因此如果您选择贡献,
请在您的贡献中尽力保持代码风格与仓库其余部分一致。
我将审查 PR 以确保这一点。
测试
要运行所有测试,请在项目根目录中运行 dart test。