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:
Profpatsch 2024-05-20 15:50:33 +02:00 committed by clbot
parent e7be342256
commit 5b2ba0efa1
9 changed files with 205 additions and 89 deletions

View file

@ -0,0 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
<expr>
<attrs>
</attrs>
</expr>

View file

@ -0,0 +1 @@
{ }

View file

@ -0,0 +1 @@
"<?xml version='1.0' encoding='utf-8'?>\n<expr>\n <attrs>\n <attr name=\"&amp;-{\">\n <string value=\";&amp;&quot;\" />\n </attr>\n <attr name=\"a\">\n <string value=\"s\" />\n </attr>\n </attrs>\n</expr>\n"

View file

@ -0,0 +1,2 @@
# Check some corner cases regarding escaping.
builtins.toXML { a = "s"; "&-{" = ";&\""; }