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`), and. 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 namespace
user/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/yanlr
sudo 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
.