diff --git a/src/dom/character_data.zig b/src/dom/character_data.zig index b19325a0..10ed9133 100644 --- a/src/dom/character_data.zig +++ b/src/dom/character_data.zig @@ -51,6 +51,13 @@ pub const CharacterData = struct { pub fn set_data(self: *parser.CharacterData, data: []const u8) void { return parser.characterDataSetData(self, data); } + + // JS methods + // ---------- + + pub fn _appendData(self: *parser.CharacterData, data: []const u8) void { + return parser.characterDataAppendData(self, data); + } }; pub const Types = generate.Tuple(.{ @@ -105,4 +112,10 @@ pub fn testExecFn( .{ .src = "cdata.previousElementSibling.localName === 'div' ", .ex = "true" }, }; try checkCases(js_env, &get_prev_elem_sibling); + + var append_data = [_]Case{ + .{ .src = "cdata.appendData(' modified')", .ex = "undefined" }, + .{ .src = "cdata.data === 'OK modified' ", .ex = "true" }, + }; + try checkCases(js_env, &append_data); } diff --git a/src/netsurf.zig b/src/netsurf.zig index c244c5c3..409f98b0 100644 --- a/src/netsurf.zig +++ b/src/netsurf.zig @@ -475,6 +475,11 @@ pub fn characterDataLength(cdata: *CharacterData) u32 { return n; } +pub fn characterDataAppendData(cdata: *CharacterData, data: []const u8) void { + const s = stringFromData(data); + _ = characterDataVtable(cdata).dom_characterdata_append_data.?(cdata, s); +} + // Text pub const Text = c.dom_text;