Skip to content
Snippets Groups Projects
lib.rs 688 B
Newer Older
Louis's avatar
Louis committed
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())
}