5 releases
0.1.4 | Feb 2, 2022 |
---|---|
0.1.3 | Jan 30, 2022 |
0.1.2 | Jan 30, 2022 |
0.1.1 | Jan 30, 2022 |
0.1.0 | Jan 30, 2022 |
#2966 in Parser implementations
14KB
262 lines
mico
This library implements a parser and emitter for mico
(minimalistic config file format).
Format example:
Name: mico
Description: minimalistic config file format
Benefits
- easy to read and write for everyone
- ludicrously simple parsing logic (roughly 30 lines of code)
Parsing and emitting mico
There are two convenience functions to parse and emit:
use mico::Mapping;
// parse string
let mappings = mico::from_str("foo: bar");
assert_eq!(mappings[0].key, "foo");
assert_eq!(mappings[0].value, "bar".into());
// emit mappings
let mappings = [Mapping::new("foo", "bar")];
assert_eq!(mico::to_string(&mappings, 0), "foo: bar\n");
Notes
mico
is meant for people to write simple config files very fast. There is no
indentation, escaping or quoting to worry about, so any text line can simply be
pasted to a mico
file without further editing.
There are only two types:
-
A mapping from key to string:
key: value
-
A mapping from key to a list of strings
key - value 1 - value 2
Here is a mico example:
foo: bar
indentation is possible: but does not matter
white space : will be trimmed
this is a key:this: is:a :value
empty string:
empty lines: will be ignored
list ...
- keys must not include a colon
- items start with '-'
this is an empty list, because this line does not include a colon
this is no list because of the colon at the end of this line:
- this is an empty list
Here is the corresponding JSON example:
[
{ "foo": "bar" },
{ "indentation is possible": "but does not matter" },
{ "white space": "will be trimmed" },
{ "this is a key": "this: is:a :value" },
{ "empty string": "" },
{ "empty lines": "will be ignored" },
{ "list ...": ["keys must not include a colon", "items start with '-'"] },
{ "This is an empty list, because this line does not include a colon": [] },
{ "This is no list because of the colon at the end of this line:": "" },
{ "- this is an empty list": [] }
]