#[macro_export]
macro_rules! script {
($init_func:ident) => {
struct Component;
impl Guest for Component {
fn init(our: String) {
use hyperware_process_lib::{await_message, println, Address, Message, Response};
let our: Address = our.parse().unwrap();
let Message::Request {
body,
expects_response,
..
} = await_message().unwrap()
else {
return;
};
let body_string = String::from_utf8_lossy(&body).to_string();
let response_string: String = $init_func(our, body_string);
if expects_response.is_some() {
Response::new()
.body(response_string.as_bytes())
.send()
.unwrap();
} else {
if !response_string.is_empty() {
println!("{response_string}");
}
}
}
}
export!(Component);
};
}
#[macro_export]
macro_rules! widget {
($widget_label:expr, $create_widget_func:ident) => {
struct Component;
impl Guest for Component {
fn init(_our: String) {
use hyperware_process_lib::Request;
Request::to(("our", "homepage", "homepage", "sys"))
.body(
serde_json::json!({
"Add": {
"label": $widget_label,
"widget": $create_widget_func(),
}
})
.to_string(),
)
.send()
.unwrap();
}
}
export!(Component);
};
}