Mercurial > urweb
diff lib/js/urweb.js @ 602:1d34d916c206
Combine lib* directories
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Tue, 13 Jan 2009 15:23:48 -0500 |
parents | jslib/urweb.js@7c3c21eb5b4c |
children | b1064de2b1f9 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/js/urweb.js Tue Jan 13 15:23:48 2009 -0500 @@ -0,0 +1,72 @@ +function cons(v, ls) { + return { n : ls, v : v }; +} +function callAll(ls) { + for (; ls; ls = ls.n) + ls.v(); +} + +function sc(v) { + return {v : v, h : null}; +} +function sv(s, v) { + s.v = v; + callAll(s.h); +} +function sg(s) { + return s.v; +} + +function ss(s) { + return s; +} +function sr(v) { + return {v : v, h : null}; +} +function sb(x,y) { + var z = y(x.v); + var s = {v : z.v, h : null}; + + function reZ() { + z.h = cons(function() { s.v = z.v; callAll(s.h); }, z.h); + } + + x.h = cons(function() { z = y(x.v); reZ(); s.v = z.v; callAll(s.h); }, x.h); + reZ(); + + return s; +} + +function myParent() { + var pos = document; + + while (pos.lastChild && pos.lastChild.nodeType == 1) + pos = pos.lastChild; + + return pos.parentNode; +} + +function dyn(s) { + var x = document.createElement("span"); + x.innerHTML = s.v; + myParent().appendChild(x); + s.h = cons(function() { x.innerHTML = s.v }, s.h); +} + +function inp(t, s) { + var x = document.createElement(t); + x.value = s.v; + myParent().appendChild(x); + s.h = cons(function() { x.value = s.v }, s.h); + x.onkeyup = function() { sv(s, x.value) }; +} + +function eh(x) { + return x.split("&").join("&").split("<").join("<").split(">").join(">"); +} + +function ts(x) { return x.toString() } +function bs(b) { return (b ? "True" : "False") } + +function pf() { alert("Pattern match failure") } +