From 8438393affaf5f9c2c0237ca32dafac8833f4dd0 Mon Sep 17 00:00:00 2001 From: Francis Bouvier Date: Mon, 9 Oct 2023 14:37:45 +0200 Subject: [PATCH] characterdata: add replaceData method Signed-off-by: Francis Bouvier --- src/dom/character_data.zig | 10 ++++++++++ src/netsurf.zig | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/src/dom/character_data.zig b/src/dom/character_data.zig index ca8c1d7b..37c3f50b 100644 --- a/src/dom/character_data.zig +++ b/src/dom/character_data.zig @@ -66,6 +66,10 @@ pub const CharacterData = struct { pub fn _insertData(self: *parser.CharacterData, offset: u32, data: []const u8) void { return parser.characterDataInsertData(self, offset, data); } + + pub fn _replaceData(self: *parser.CharacterData, offset: u32, count: u32, data: []const u8) void { + return parser.characterDataReplaceData(self, offset, count, data); + } }; pub const Types = generate.Tuple(.{ @@ -138,4 +142,10 @@ pub fn testExecFn( .{ .src = "cdata.data == 'OmodifiedK'", .ex = "true" }, }; try checkCases(js_env, &insert_data); + + var replace_data = [_]Case{ + .{ .src = "cdata.replaceData('OK'.length-1, 'modified'.length, 'replaced')", .ex = "undefined" }, + .{ .src = "cdata.data == 'OreplacedK'", .ex = "true" }, + }; + try checkCases(js_env, &replace_data); } diff --git a/src/netsurf.zig b/src/netsurf.zig index a96310b5..f12e3d78 100644 --- a/src/netsurf.zig +++ b/src/netsurf.zig @@ -489,6 +489,11 @@ pub fn characterDataInsertData(cdata: *CharacterData, offset: u32, data: []const _ = characterDataVtable(cdata).dom_characterdata_insert_data.?(cdata, offset, s); } +pub fn characterDataReplaceData(cdata: *CharacterData, offset: u32, count: u32, data: []const u8) void { + const s = stringFromData(data); + _ = characterDataVtable(cdata).dom_characterdata_replace_data.?(cdata, offset, count, s); +} + // Text pub const Text = c.dom_text;