const std = @import("std"); const c = @import("c.zig"); const example = @embedFile("example.html"); pub fn main() !void { var html_search: c.QuickMediaHtmlSearch = undefined; if(c.quickmedia_html_search_init(&html_search, example.ptr, example.len) != 0) return error.FailedToInitHtmlSearch; defer c.quickmedia_html_search_deinit(&html_search); if(c.quickmedia_html_find_nodes_xpath(&html_search, "//div[class='cool']", resultCallback, null) != 0) return error.FailedToFindNodes; } fn resultCallback(node: [*c]c.QuickMediaMatchNode, userdata: ?*anyopaque) callconv(.C) c_int { _ = userdata; const text = stringViewToSlice(c.quickmedia_html_node_get_text(node)); std.debug.print("found match, text: {s}\n", .{text}); return 0; } fn stringViewToSlice(view: c.QuickMediaStringView) []const u8 { if(view.size == 0) { return ""; } else { return view.data[0..view.size]; } }