non-crap config language
It's as easy as five cents. Also not crap, which is kind of the point.
In rust:
rust
let config = nccl::parse_file("config.nccl").unwrap();
let ports = config["server"]["port"].keys_as::<i64>().unwrap();
assert_eq!(ports, vec![80, 443]);
config.nccl:
server
domain
example.com
www.example.com
port
80
443
root
/var/www/html
Nccl lets you define your own configuration to inherit from. Just use
nccl::parse_file_with
with the result from the configuration you would like
to inherit from.
inherit.nccl:
``` hello world panama friends doggos
sandwich meat bologne ham cheese provolone cheddar ```
inherit2.nccl:
``` hello world alaska neighbor friends John Alex
sandwich meat turkey cheese muenster ```
In rust:
rust
let schemas = nccl::parse_file("examples/inherit.nccl").unwrap();
let user = nccl::parse_file_with("examples/inherit2.nccl", schemas).unwrap();
assert_eq!(user["sandwich"]["meat"].keys().len(), 3);
assert_eq!(user["hello"]["world"].keys().len(), 3);
```
key value
bool one t
bool too false
ints 5280 thirteen 1738
dates 2017-03-21 20170321T234442+0400 2017-03-21T23:44:42+04 tomorrow
strings are bare words unless you want newlines in which case: "just\nuse quotes" "this is still valid" this """too"""
lists juan deaux key value 3 false
indentation? must use the same for top-level values eg 2 or 4 spaces for one key or tabs for one key ```