on master help sign in
better msg
16e9e97iko
nock/wock.hoon+6−6
@@ -6,7 +6,7 @@
6 |%
6 |%
7 ++ init *model
7 ++ init *model
8 ++ view |~ model *manx
8 ++ view |~ model *manx
9− ++ move |~ [model [event *]] *model
9+ ++ move |~ [model event] *model
10 --
10 --
11++ app
11++ app
12 |* [model=mold event=mold]
12 |* [model=mold event=mold]
@@ -19,15 +19,15 @@
19 (view.app (model args))
19 (view.app (model args))
20 %move
20 %move
21 =/ [=model event-tape=tape payload=*] (,[model tape *] args)
21 =/ [=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])])
23 ==
23 ==
24--
24--
25=>
25=>
26|%
26|%
27+$ event
27+$ event
28− $?
28+ $%
29− %inc
29+ [%inc ~]
30− %dec
30+ [%dec ~]
31 ==
31 ==
32--
32--
33%- (app @ud event)
33%- (app @ud event)
@@ -42,7 +42,7 @@
42 ==
42 ==
43++ init 8
43++ init 8
44++ move
44++ move
45− |= [model=@ud step=[event *]]
45+ |= [model=@ud step=event]
46 ^- @ud
46 ^- @ud
47 ?- -.step
47 ?- -.step
48 %inc +(model)
48 %inc +(model)
wock-web/src/lib.rs+17−8
@@ -27,6 +27,9 @@ extern "C" {
27
27
28 #[wasm_bindgen(js_namespace = console)]
28 #[wasm_bindgen(js_namespace = console)]
29 fn log(s: &str);
29 fn log(s: &str);
30+
31+ #[wasm_bindgen(js_namespace = console)]
32+ fn error(s: &str);
30}
33}
31
34
32struct WockApp {
35struct WockApp {
@@ -86,19 +89,25 @@ fn render_sail<'a>(ctx: &mut RenderContext<'a>, manx: Rc<Noun>) -> Node<'a> {
86
89
87 let sig = ctx.nouns.sig.clone();
90 let sig = ctx.nouns.sig.clone();
88
91
89− let new_model = slam(
92+ let event = cell(&value, &sig);
93+
94+ match slam(
90 &mut ctx,
95 &mut ctx,
91 &app.nock,
96 &app.nock,
92 &cell(
97 &cell(
93 &Rc::new(Noun::from_bytes(b"move")),
98 &Rc::new(Noun::from_bytes(b"move")),
94− &cell(&app.model, &cell(&value, &sig)),
99+ &cell(&app.model, &event),
95 ),
100 ),
96− )
101+ ) {
97− .unwrap();
102+ Ok(new_model) => {
98−
99− app.model = new_model;
103+ app.model = new_model;
100−
101− vdom.schedule_render();
104+ vdom.schedule_render();
105+ }
106+ Err(_) => error(&*format!(
107+ "Application failed to process event: {}",
108+ event
109+ )),
110+ };
102 },
111 },
103 )
112 )
104 },
113 },
wock.nock

Binary file not shown.