Confindent
Configuration by indentation. Read the spec inspired by
the format of the ssh client configuration commonly found on Linux machines
at ~/.ssh/config.
Example, short and sweet
use Confindent;
Quickstart!
The format, briefly.
It's a kind of tree, key-value thing. Lines are key-value pairs, the value starting at the first space after the indent. You can add a child to a value by indenting it with spaces or tabs. Indent the same amount to add another child to that same value. Indent more than you did initially to add a grandchild. Don't mix spaces and tabs. Like this!
Root this is the root
Child I'm a child!
Child You can have multiple children with the same keys!
Grandchild I'm a grandchild!
Using the crate, quickly! also, here are the docs
Open and parse a file with Confindent::from_file. Pass it a path. It returns
a Result.
Get a direct child with the child(key) function. Key needs to be able
to turn into a &str. This returns an Option<&Value>. Value is the main data-storing
struct. You can get multiple Value of the same name with children(key), which
returns a Vec<&Value>.
You can get a Value's value with [value()][fn-value]. It returns an Option<&str>.
Want to parse a possible value into a different type, T? Instead of value() use
parse(). It returns Result<T, ValueParseError>. That type
may look weird and that's because it is. ValueParseError is an enum
that can be NoValue or ParseError(error) where error is the error part of the
Result that T::FromStr returns.
Don't want to call child(key) and then value() or parse()? You can use
child_value(key) and child_parse(key) to do both of those
at once. Both of these functions return what value() and parse() normally return,
respectively.