From 42ec404bebc0b69e131eff48607cf109ee74718b Mon Sep 17 00:00:00 2001 From: Mathis Beer Date: Fri, 26 Jul 2024 15:05:04 +0200 Subject: [PATCH] Support SysTime as an element's text value. --- src/text/xml/Encode.d | 2 +- unittest/text/xml/EncodeTest.d | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/text/xml/Encode.d b/src/text/xml/Encode.d index 58dedf7..c215891 100644 --- a/src/text/xml/Encode.d +++ b/src/text/xml/Encode.d @@ -134,7 +134,7 @@ private void encodeNode(T, attributes...)(ref XMLWriter!(Appender!string) writer } else static if (udaIndex!(Xml.Text, memberAttrs) != -1) { - writer.writeText(memberValue.encodeText, Newline.no); + writer.writeText(encodeLeafImpl(memberValue).encodeText, Newline.no); } else static if (is(typeof(cast() memberValue) : SumType!U, U...)) { diff --git a/unittest/text/xml/EncodeTest.d b/unittest/text/xml/EncodeTest.d index 6f9208f..1a38048 100644 --- a/unittest/text/xml/EncodeTest.d +++ b/unittest/text/xml/EncodeTest.d @@ -479,3 +479,22 @@ unittest // then text.should.equal(``); } + +@("SysTime as text") +unittest +{ + @(Xml.Element) + struct Value + { + @(Xml.Text) + SysTime time; + + mixin(GenerateThis); + } + + // when + const text = Value(SysTime.fromISOExtString("2003-02-01T12:00:00")).encode; + + // then + text.should.equal(`2003-02-01T12:00:00`); +}