rdfa_wasm/
lib.rs

1#![cfg(target_arch = "wasm32")]
2mod utils;
3use graph_rdfa_processor::RdfaGraph;
4use lol_alloc::{AssumeSingleThreaded, FreeListAllocator};
5use tortank::turtle::turtle_doc::TurtleDoc;
6use wasm_bindgen::prelude::*;
7// SAFETY: This application is single threaded, so using AssumeSingleThreaded is allowed.
8#[global_allocator]
9static ALLOCATOR: AssumeSingleThreaded<FreeListAllocator> =
10    unsafe { AssumeSingleThreaded::new(FreeListAllocator::new()) };
11#[wasm_bindgen]
12pub fn html_to_rdfa(html: &str, base: &str, well_known_prefix: &str) -> String {
13    utils::set_panic_hook();
14    let wkp = {
15        let wkp = well_known_prefix.trim();
16        if wkp.is_empty() { None } else { Some(wkp) }
17    };
18    RdfaGraph::parse_str(html, base, wkp).unwrap()
19}
20
21#[wasm_bindgen]
22pub fn rdfa_to_turtle(rdfa_graph: &str) -> String {
23    utils::set_panic_hook();
24    let turtle_doc = TurtleDoc::try_from((rdfa_graph, None)).unwrap();
25    turtle_doc.as_turtle().unwrap()
26}