aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/c.zig2
-rw-r--r--src/example.html5
-rw-r--r--src/main.zig26
3 files changed, 31 insertions, 2 deletions
diff --git a/src/c.zig b/src/c.zig
index d4d1414..861b874 100644
--- a/src/c.zig
+++ b/src/c.zig
@@ -1,3 +1,3 @@
pub usingnamespace @cImport({
- @cInclude("HtmlSearch.h");
+ @cInclude("quickmedia/HtmlSearch.h");
}); \ No newline at end of file
diff --git a/src/example.html b/src/example.html
new file mode 100644
index 0000000..51bc51a
--- /dev/null
+++ b/src/example.html
@@ -0,0 +1,5 @@
+<html>
+ <body>
+ <div class="cool">hello world</div>
+ </body>
+</html> \ No newline at end of file
diff --git a/src/main.zig b/src/main.zig
index 050e335..916742f 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -1,5 +1,29 @@
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];
+ }
} \ No newline at end of file