From 5284d75cb7b77aa71552928127c7b893920f94fe Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Mon, 8 Dec 2025 09:55:31 +0100 Subject: [PATCH] use CData.render for innerText --- src/browser/tests/element/inner.html | 2 +- src/browser/webapi/CData.zig | 5 ++++- src/browser/webapi/Element.zig | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/browser/tests/element/inner.html b/src/browser/tests/element/inner.html index 2c93a717..ada3f7c1 100644 --- a/src/browser/tests/element/inner.html +++ b/src/browser/tests/element/inner.html @@ -172,5 +172,5 @@ // TODO innerText is not rendered correctly for now. //testing.expectEqual("This is a\ntext", d2.innerText); - testing.expectEqual(" This is a \n text", d2.innerText); + testing.expectEqual(" This is a \n text ", d2.innerText); diff --git a/src/browser/webapi/CData.zig b/src/browser/webapi/CData.zig index 507031af..b1c78b03 100644 --- a/src/browser/webapi/CData.zig +++ b/src/browser/webapi/CData.zig @@ -102,7 +102,8 @@ pub fn render(self: *const CData, writer: *std.io.Writer, opts: RenderOpts) !voi // Write the reminder chunk. if (is_w) { // Last chunk is whitespaces. - if (opts.trim_right == false) { + // If the string contains only whitespaces, don't write it. + if (start > 0 and opts.trim_right == false) { try writer.writeByte(' '); } } else { @@ -285,6 +286,8 @@ test "WebApi: CData.render" { }; const test_cases = [_]TestCase{ + .{ .value = " ", .expected = "" }, + .{ .value = " ", .expected = "", .opts = .{ .trim_left = false, .trim_right = false } }, .{ .value = "foo bar", .expected = "foo bar" }, .{ .value = "foo bar", .expected = "foo bar" }, .{ .value = " foo bar", .expected = "foo bar" }, diff --git a/src/browser/webapi/Element.zig b/src/browser/webapi/Element.zig index b40791b5..4d50051d 100644 --- a/src/browser/webapi/Element.zig +++ b/src/browser/webapi/Element.zig @@ -239,7 +239,7 @@ pub fn getInnerText(self: *Element, writer: *std.Io.Writer) !void { }, .cdata => |c| switch (c._type) { .comment => continue, - .text => try c.render(writer, .{}), + .text => try c.render(writer, .{ .trim_right = false, .trim_left = false }), }, .document => {}, .document_type => {},