From 894b6182cf64e03321f23fb19e860ec953c121b5 Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Thu, 7 Dec 2023 16:16:39 +0100 Subject: [PATCH] dom: implement document.createTextNode --- src/dom/document.zig | 9 +++++++++ src/netsurf.zig | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/src/dom/document.zig b/src/dom/document.zig index adf34d35..ea29dad8 100644 --- a/src/dom/document.zig +++ b/src/dom/document.zig @@ -129,6 +129,10 @@ pub const Document = struct { return try parser.documentCreateDocumentFragment(self); } + pub fn _createTextNode(self: *parser.Document, data: []const u8) !*parser.Text { + return try parser.documentCreateTextNode(self, data); + } + pub fn deinit(_: *parser.Document, _: std.mem.Allocator) void {} }; @@ -226,6 +230,11 @@ pub fn testExecFn( }; try checkCases(js_env, &createDocumentFragment); + var createTextNode = [_]Case{ + .{ .src = "document.createTextNode('foo')", .ex = "[object Text]" }, + }; + try checkCases(js_env, &createTextNode); + const tags = comptime parser.Tag.all(); comptime var createElements: [(tags.len) * 2]Case = undefined; inline for (tags, 0..) |tag, i| { diff --git a/src/netsurf.zig b/src/netsurf.zig index 0919e56a..b764c9dd 100644 --- a/src/netsurf.zig +++ b/src/netsurf.zig @@ -1137,6 +1137,13 @@ pub inline fn documentCreateDocumentFragment(doc: *Document) !*DocumentFragment return df.?; } +pub inline fn documentCreateTextNode(doc: *Document, s: []const u8) !*Text { + var txt: ?*Text = undefined; + const err = documentVtable(doc).dom_document_create_text_node.?(doc, try strFromData(s), &txt); + try DOMErr(err); + return txt.?; +} + // DocumentHTML pub const DocumentHTML = c.dom_html_document;