24 lines
622 B
Rust
24 lines
622 B
Rust
pub fn highlight(code: &str) -> String {
|
|
unsafe {
|
|
let mut html_len: u64 = 0;
|
|
let html_ptr = highlight_swift(code.as_ptr(), code.len() as u64, &mut html_len);
|
|
String::from_raw_parts(html_ptr, html_len as usize, html_len as usize)
|
|
}
|
|
}
|
|
|
|
extern "C" {
|
|
fn highlight_swift(code_ptr: *const u8, code_len: u64, html_len_ptr: *mut u64) -> *mut u8;
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
#[test]
|
|
fn test_highlight() {
|
|
let result = super::highlight("1+1");
|
|
assert_eq!(
|
|
result,
|
|
r#"<span class="hl-num">1</span>+<span class="hl-num">1</span>"#
|
|
);
|
|
}
|
|
}
|