|
Elektra
0.8.26
|
This plugin uses ANTLR to generate a parser for the YAML serialization format. Apart from the hand written lexer, all other parts of the plugin use standard ANTLR tools, such as
The plugin requires
4.7.1 or later (antlr4), andantlr4-cpp-runtime or libantlr4-runtime-dev). If packages for those libraries are not available for your system, you can install them manually. For more information about that please take a look at ANTLR’s homepage and at the ReadMe of the ANTLR C++ runtime.
`` <h1>Mount plugin to namespaceuser/tests/yanlr` sudo kdb mount config.yaml user/tests/yanlr yanlr
printf 'all : circles presuppose
' > kdb file user/tests/yanlr printf 'hello : world
' >> kdb file user/tests/yanlr
kdb ls /tests/yanlr #> user/tests/yanlr/all #> user/tests/yanlr/hello
kdb get user/tests/yanlr/all #> circles presuppose
kdb set user/tests/yanlr 'Mount Eerie' kdb get user/tests/yanlr #> Mount Eerie
kdb set user/tests/yanlr/brand new kdb set user/tests/yanlr/brand/new eyes kdb set user/tests/yanlr/dance/gavin 'Dance!'
kdb ls /tests/yanlr #> user/tests/yanlr #> user/tests/yanlr/all #> user/tests/yanlr/brand #> user/tests/yanlr/brand/new #> user/tests/yanlr/dance/gavin #> user/tests/yanlr/hello
kdb get /tests/yanlr/hello #> world kdb get user/tests/yanlr/brand #> new kdb get /tests/yanlr/dance/gavin #> Dance!
kdb rm -r user/tests/yanlr sudo kdb umount user/tests/yanlr
/tests/yanlrsudo kdb mount config.yaml user/tests/yanlr yanlr
printf 'primes:
' > kdb file user/tests/yanlr printf ' - two
' >> kdb file user/tests/yanlr printf ' - three
' >> kdb file user/tests/yanlr printf ' - five
' >> kdb file user/tests/yanlr
kdb ls user/tests/yanlr #> user/tests/yanlr/primes #> user/tests/yanlr/primes/#0 #> user/tests/yanlr/primes/#1 #> user/tests/yanlr/primes/#2
kdb set user/tests/yanlr/primes/#3 seven
kdb getmeta user/tests/yanlr/primes array #> #3
kdb rm -r user/tests/yanlr sudo kdb umount user/tests/yanlr
sudo kdb mount config.yaml user/tests/yanlr yanlr
printf – 'key: - element 1
' > kdb file user/tests/yanlr printf – '- element 2 # Incorrect Indentation!' >> kdb file user/tests/yanlr
kdb ls user/tests/yanlr
config.yaml depends on the current user and OS,config.yaml as user/tests/error/prefix.kdb set user/tests/error "$(2>&1 kdb ls user/tests/yanlr)" kdb set user/tests/error/prefix "$(kdb get user/tests/error | grep 'config.yaml' | head -1 | sed -E 's/(.*)config.yaml.*/\1/')" kdb get user/tests/error/prefix
kdb set user/tests/error/prefix/length "$(kdb get user/tests/error/prefix | wc -c | sed 's/[ ]*//g')"
head and tail.kdb get user/tests/error | tail -n11 | head -n6 | cut -c"$(kdb get user/tests/error/prefix/length | tr -d '\n')"- #> config.yaml:2:1: mismatched input '- ' expecting end of map #> - element 2 # Incorrect Indentation! #> ^^ #> config.yaml:2:37: extraneous input 'end of map' expecting end of document #> - element 2 # Incorrect Indentation! #> ^
printf – 'key: - element 1
' > kdb file user/tests/yanlr printf – ' - element 2 # Fixed!' >> kdb file user/tests/yanlr
kdb ls user/tests/yanlr #> user/tests/yanlr/key #> user/tests/yanlr/key/#0 #> user/tests/yanlr/key/#1
kdb rm -r user/tests/error kdb rm -r user/tests/yanlr sudo kdb umount user/tests/yanlr
will produce a plain scalar containing a tab character followed by the text value. The correct behavior would be to report an error, since YAML does not allow tab characters in indentation.
Visualized error messages (containing ^ markers) might not point to the correct error location, if the input contains tabs or unicode characters with a length other than 1.
1.8.13