refactor(tvix/eval): rewrite xml emitter to be simple-stupid
In order to be compatible with the nix XML generator, it’s easier to generate the XML directly, instead of going through a library which we have to bend to do what we need. Removes dependency on `xml-rs`, which came with a full XML parser that we didn’t use. Only takes a tiny bit of code for the XML escaping, somewhat simplified. I add a little escaping value, to make sure we have the same behaviour as nix proper. Interestingly enough, we never need to escape XML attribute names, because the `builtins.toXML` format encodes user-defined values as attribute keys only. So we only escape attribute values. Fixes: https://b.tvl.fyi/issues/399 Change-Id: If4d407d324864b3bb9aa3160e2ec6889f7727127 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11697 Tested-by: BuildkiteCI Reviewed-by: flokli <flokli@flokli.de> Autosubmit: Profpatsch <mail@profpatsch.de>
This commit is contained in:
parent
e7be342256
commit
5b2ba0efa1
9 changed files with 205 additions and 89 deletions
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<expr>
|
||||
<attrs>
|
||||
</attrs>
|
||||
</expr>
|
||||
1
tvix/eval/src/tests/tvix_tests/eval-okay-toxml-empty.nix
Normal file
1
tvix/eval/src/tests/tvix_tests/eval-okay-toxml-empty.nix
Normal file
|
|
@ -0,0 +1 @@
|
|||
{ }
|
||||
1
tvix/eval/src/tests/tvix_tests/eval-okay-toxml.exp
Normal file
1
tvix/eval/src/tests/tvix_tests/eval-okay-toxml.exp
Normal file
|
|
@ -0,0 +1 @@
|
|||
"<?xml version='1.0' encoding='utf-8'?>\n<expr>\n <attrs>\n <attr name=\"&-{\">\n <string value=\";&"\" />\n </attr>\n <attr name=\"a\">\n <string value=\"s\" />\n </attr>\n </attrs>\n</expr>\n"
|
||||
2
tvix/eval/src/tests/tvix_tests/eval-okay-toxml.nix
Normal file
2
tvix/eval/src/tests/tvix_tests/eval-okay-toxml.nix
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
# Check some corner cases regarding escaping.
|
||||
builtins.toXML { a = "s"; "&-{" = ";&\""; }
|
||||
Loading…
Add table
Add a link
Reference in a new issue