characterdata: add substringData method

Signed-off-by: Francis Bouvier <francis.bouvier@gmail.com>
This commit is contained in:
Francis Bouvier
2023-10-09 14:42:18 +02:00
parent 8438393aff
commit 6955285ed5
2 changed files with 16 additions and 0 deletions

View File

@@ -70,6 +70,10 @@ pub const CharacterData = struct {
pub fn _replaceData(self: *parser.CharacterData, offset: u32, count: u32, data: []const u8) void { pub fn _replaceData(self: *parser.CharacterData, offset: u32, count: u32, data: []const u8) void {
return parser.characterDataReplaceData(self, offset, count, data); return parser.characterDataReplaceData(self, offset, count, data);
} }
pub fn _substringData(self: *parser.CharacterData, offset: u32, count: u32) []const u8 {
return parser.characterDataSubstringData(self, offset, count);
}
}; };
pub const Types = generate.Tuple(.{ pub const Types = generate.Tuple(.{
@@ -148,4 +152,10 @@ pub fn testExecFn(
.{ .src = "cdata.data == 'OreplacedK'", .ex = "true" }, .{ .src = "cdata.data == 'OreplacedK'", .ex = "true" },
}; };
try checkCases(js_env, &replace_data); try checkCases(js_env, &replace_data);
var substring_data = [_]Case{
.{ .src = "cdata.substringData('OK'.length-1, 'replaced'.length) == 'replaced'", .ex = "true" },
.{ .src = "cdata.substringData('OK'.length-1, 0) == ''", .ex = "true" },
};
try checkCases(js_env, &substring_data);
} }

View File

@@ -494,6 +494,12 @@ pub fn characterDataReplaceData(cdata: *CharacterData, offset: u32, count: u32,
_ = characterDataVtable(cdata).dom_characterdata_replace_data.?(cdata, offset, count, s); _ = characterDataVtable(cdata).dom_characterdata_replace_data.?(cdata, offset, count, s);
} }
pub fn characterDataSubstringData(cdata: *CharacterData, offset: u32, count: u32) []const u8 {
var s: ?*String = undefined;
_ = characterDataVtable(cdata).dom_characterdata_substring_data.?(cdata, offset, count, &s);
return stringToData(s.?);
}
// Text // Text
pub const Text = c.dom_text; pub const Text = c.dom_text;