on master help sign in
better msg
commit16e9e97eb5f79814368cc388f1785ad7c11c6931 authoriko <mail@iko.soy> dateWed 6 Nov 2024, 21:15 (2 years ago) parenta2873ae
3 files changed+23−14
nock/wock.hoon+6−6 wock-web/src/lib.rs+17−8 wock.nock
nock/wock.hoon+6−6
@@ -6,7 +6,7 @@
66 |%
77 ++ init *model
88 ++ view |~ model *manx
9− ++ move |~ [model [event *]] *model
9+ ++ move |~ [model event] *model
1010 --
1111++ app
1212 |* [model=mold event=mold]
@@ -19,15 +19,15 @@
1919 (view.app (model args))
2020 %move
2121 =/ [=model event-tape=tape payload=*] (,[model tape *] args)
22− (move.app [model (event (crip event-tape)) payload])
22+ (move.app [model (event [(crip event-tape) payload])])
2323 ==
2424--
2525=>
2626|%
2727+$ event
28− $?
29− %inc
30− %dec
28+ $%
29+ [%inc ~]
30+ [%dec ~]
3131 ==
3232--
3333%- (app @ud event)
@@ -42,7 +42,7 @@
4242 ==
4343++ init 8
4444++ move
45− |= [model=@ud step=[event *]]
45+ |= [model=@ud step=event]
4646 ^- @ud
4747 ?- -.step
4848 %inc +(model)
wock-web/src/lib.rs+17−8
@@ -27,6 +27,9 @@ extern "C" {
2727
2828 #[wasm_bindgen(js_namespace = console)]
2929 fn log(s: &str);
30+
31+ #[wasm_bindgen(js_namespace = console)]
32+ fn error(s: &str);
3033}
3134
3235struct WockApp {
@@ -86,19 +89,25 @@ fn render_sail<'a>(ctx: &mut RenderContext<'a>, manx: Rc<Noun>) -> Node<'a> {
8689
8790 let sig = ctx.nouns.sig.clone();
8891
89− let new_model = slam(
92+ let event = cell(&value, &sig);
93+
94+ match slam(
9095 &mut ctx,
9196 &app.nock,
9297 &cell(
9398 &Rc::new(Noun::from_bytes(b"move")),
94− &cell(&app.model, &cell(&value, &sig)),
99+ &cell(&app.model, &event),
95100 ),
96− )
97− .unwrap();
98−
99− app.model = new_model;
100−
101− vdom.schedule_render();
101+ ) {
102+ Ok(new_model) => {
103+ app.model = new_model;
104+ vdom.schedule_render();
105+ }
106+ Err(_) => error(&*format!(
107+ "Application failed to process event: {}",
108+ event
109+ )),
110+ };
102111 },
103112 )
104113 },
wock.nock

Binary file not shown.