Newer
Older
use forge_script_lang::parse::parse_program;
use forge_script_lang::runtime::executor::{TreePrinter, Visitor};
use wasm_bindgen::prelude::*;
#[wasm_bindgen(start)]
pub fn init() {
std::panic::set_hook(Box::new(console_error_panic_hook::hook));
}
#[wasm_bindgen]
pub fn compile_ast(program: &str) -> Result<JsValue, serde_wasm_bindgen::Error> {
serde_wasm_bindgen::to_value(&parse_program(program).expect("Failed to parse"))
}
#[wasm_bindgen]
pub fn format_script(program: &str) -> Result<String, serde_wasm_bindgen::Error> {
let ast = &parse_program(program).expect("Failed to parse");
let mut writer = TreePrinter::new();
writer.evaluate_program(ast);
Ok(writer.take_value())
}