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("&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") }
+