Crate ucl [−] [src]
UCL (Universal Configuration Library)
This library is parser for UCL files.
Basic structure
UCL provide support for 2 different syntaxes:
JSON
{ "param": "value", "section": { "flag": true, "number": 10000, "subsection": { "hosts": [ { "host": "localhost", "port": 9000 }, { "host": "remotehost", "port": 9090 } } } }
nginx like UCL
param = value; section { flag = true; number = 10k; subsection { hosts = { host = "localhost"; port = 9000 } hosts = { host = "remotehost" port = 9090 } } }
Differences between UCL and JSON:
- outmost braces are optional so
{"a": "b"}
is equivalent to"a": "b"
- quotes on keys and strings are optional
:
can be replaced with=
or even skipped for objects- comma can be replaced with semicolon
- trailing commas are allowed
- automatic array creation - non-unique keys in object are allowed and are automatically converted to arrays
Parser usage
Simple example:
static DOC: &'static str = r#" param = value; section { flag = true; number = 10k; subsection { hosts = { host = "localhost"; port = 9000 } hosts = { host = "remotehost" port = 9090 } } } "#; let parser = ucl::Parser::new(); let document = parser.parse(DOC).unwrap(); assert_eq!(document.fetch("param").unwrap().as_string(), Some("value".to_string()));
Reexports
pub use error::Error; |
pub use parser::Parser; |
pub use object::Object; |
Modules
error | |
object | |
parser |
Type Definitions
Result |