....
};
~~~
+
There are two internal macros provided by UCL:
* `include` - read a file `/path/to/file` or an url `http://example.com/file` and include it to the current place of
UCL can handle multiline strings as well as single line ones. It uses shell/perl like notation for such objects:
-~~~
-key = <<EOD
-some text
-splitted to
-lines
-EOD
-~~~
+
+ key = <<EOD
+ some text
+ splitted to
+ lines
+ EOD
+
In this example `key` will be interpreted as the following string: `some text\nsplitted to\nlines`.
Here are some rules for this syntax:
* To finish multiline string you need to include a terminator string just after newline and followed by a newline (no spaces or other characters are allowed as well);
* The initial and the final newlines are not inserted to the resulting string, but you can still specify newlines at the begin and at the end of a value, for example:
-~~~
-key <<EOD
-
-some
-text
+ key <<EOD
+
+ some
+ text
+
+ EOD
-EOD
-~~~
## Emitter
<http://www.json-generator.com/>). Then I checked jansson library that performs json
parsing and emitting and compared it with UCL. Here are results:
-~~~
-jansson: parsed json in 1.3899 seconds
-jansson: emitted object in 0.2609 seconds
-
-ucl: parsed input in 0.6649 seconds
-ucl: emitted config in 0.2423 seconds
-ucl: emitted json in 0.2329 seconds
-ucl: emitted compact json in 0.1811 seconds
-ucl: emitted yaml in 0.2489 seconds
-~~~
+ jansson: parsed json in 1.3899 seconds
+ jansson: emitted object in 0.2609 seconds
+
+ ucl: parsed input in 0.6649 seconds
+ ucl: emitted config in 0.2423 seconds
+ ucl: emitted json in 0.2329 seconds
+ ucl: emitted compact json in 0.1811 seconds
+ ucl: emitted yaml in 0.2489 seconds
So far, UCL seems to be significantly faster than jansson on parsing and slightly faster on emitting. Moreover,
UCL compiled with optimizations (-O3) performs significantly faster:
-~~~
-ucl: parsed input in 0.3002 seconds
-ucl: emitted config in 0.1174 seconds
-ucl: emitted json in 0.1174 seconds
-ucl: emitted compact json in 0.0991 seconds
-ucl: emitted yaml in 0.1354 seconds
-~~~
+
+ ucl: parsed input in 0.3002 seconds
+ ucl: emitted config in 0.1174 seconds
+ ucl: emitted json in 0.1174 seconds
+ ucl: emitted compact json in 0.0991 seconds
+ ucl: emitted yaml in 0.1354 seconds
+
You can do your own benchmarks by running `make test` in libucl top directory.