summaryrefslogtreecommitdiff
path: root/lib/js
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-01-13 15:23:48 -0500
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-01-13 15:23:48 -0500
commitc6f717a90ca7cede8af4fd7aefd7b69cf069592e (patch)
treecec4ab72f97ce79bb10974b6ff714a43381d2e67 /lib/js
parent0d98ce87ef495ab8652327866b9a2253cbe824d7 (diff)
Combine lib* directories
Diffstat (limited to 'lib/js')
-rw-r--r--lib/js/urweb.js72
1 files changed, 72 insertions, 0 deletions
diff --git a/lib/js/urweb.js b/lib/js/urweb.js
new file mode 100644
index 00000000..0ee19992
--- /dev/null
+++ b/lib/js/urweb.js
@@ -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("&amp;").split("<").join("&lt;").split(">").join("&gt;");
+}
+
+function ts(x) { return x.toString() }
+function bs(b) { return (b ? "True" : "False") }
+
+function pf() { alert("Pattern match failure") }
+