module salix::demo::basic::Counter
rascal-0.41.2
org.rascalmpl.salix-core-0.2.9
Usage
import salix::demo::basic::Counter;
Dependencies
import salix::App;
import salix::HTML;
import salix::Index;
function counterApp
SalixApp[Model] counterApp(str id = "root")
= makeApp(id, init, withIndex("Counter", id, view), update);
function counterWebApp
App[Model] counterWebApp()
= webApp(counterApp(),|project://salix-core/src/main/rascal|);
alias Model
tuple[int count]
function init
Model init() = <0>;
data Msg
data Msg
= inc()
| dec()
;
function update
Model update(Msg msg, Model m) {
switch (msg) {
case inc(): m.count += 1;
case dec(): m.count -= 1;
}
return m;
}
function view
void view(Model m) {
h2("My first counter app in Rascal");
counterView(m);
}
function counterView
void counterView(Model m) {
button(onClick(inc()), "+");
span("<m.count>");
button(onClick(dec()), "-");
}