use alloc::string::String;
use alloc::vec::Vec;
use wasm_bindgen::prelude::*;
use crate::Parser;
use crate::model::{
load_default_japanese_parser, load_default_simplified_chinese_parser, load_default_thai_parser,
load_default_traditional_chinese_parser,
};
#[derive(Debug)]
#[wasm_bindgen(js_name = BudouY)]
pub struct JsParser {
inner: Parser,
}
#[wasm_bindgen(js_class = BudouY)]
impl JsParser {
#[wasm_bindgen(js_name = japanese)]
pub fn japanese() -> Self {
Self {
inner: load_default_japanese_parser(),
}
}
#[wasm_bindgen(js_name = simplifiedChinese)]
pub fn simplified_chinese() -> Self {
Self {
inner: load_default_simplified_chinese_parser(),
}
}
#[wasm_bindgen(js_name = traditionalChinese)]
pub fn traditional_chinese() -> Self {
Self {
inner: load_default_traditional_chinese_parser(),
}
}
#[wasm_bindgen(js_name = thai)]
pub fn thai() -> Self {
Self {
inner: load_default_thai_parser(),
}
}
#[wasm_bindgen]
pub fn parse(&self, sentence: &str) -> Vec<String> {
self.inner.parse(sentence)
}
#[wasm_bindgen(js_name = parseBoundaries)]
pub fn parse_boundaries(&self, sentence: &str) -> Vec<usize> {
self.inner.parse_boundaries(sentence)
}
}