Skip to main content

module salix::demo::basic::Counter

rascal-0.42.0
org.rascalmpl.salix-core-0.2.11

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()), "-");
}