comparison lib/js/urweb.js @ 2206:c1a62ce47083

Merge.
author Ziv Scully <ziv@mit.edu>
date Tue, 27 May 2014 21:38:01 -0400
parents 2b2d07946e65
children 534577e429e1
comparison
equal deleted inserted replaced
2205:cdea39473c78 2206:c1a62ce47083
1007 1007
1008 function active(s) { 1008 function active(s) {
1009 if (suspendScripts) 1009 if (suspendScripts)
1010 return; 1010 return;
1011 1011
1012 var span = document.createElement("span");
1013 addNode(span);
1014 var ms = maySuspend; 1012 var ms = maySuspend;
1015 maySuspend = false; 1013 maySuspend = false;
1016 try { 1014 try {
1017 var html = execF(s); 1015 var html = execF(s);
1018 } catch (e) { 1016 } catch (e) {
1019 maySuspend = ms; 1017 maySuspend = ms;
1020 throw e; 1018 throw e;
1021 } 1019 }
1022 maySuspend = ms; 1020 maySuspend = ms;
1023 setInnerHTML(span, html); 1021 if (html != "") {
1022 var span = document.createElement("span");
1023 addNode(span);
1024 setInnerHTML(span, html);
1025 }
1024 } 1026 }
1025 1027
1026 function input(x, s, recreate, type, name) { 1028 function input(x, s, recreate, type, name) {
1027 if (name) x.name = name; 1029 if (name) x.name = name;
1028 if (type) x.type = type; 1030 if (type) x.type = type;
1109 x.onkeyup = x.oninput = x.onchange = x.onpropertychange = function() { sv(s, x.value) }; 1111 x.onkeyup = x.oninput = x.onchange = x.onpropertychange = function() { sv(s, x.value) };
1110 1112
1111 return x; 1113 return x;
1112 } 1114 }
1113 1115
1114 function dynClass(html, s_class, s_style) { 1116 function dynClass(pnode, html, s_class, s_style) {
1115 if (suspendScripts) 1117 if (suspendScripts)
1116 return; 1118 return;
1117 1119
1118 var htmlCls = {v : null}; 1120 var htmlCls = {v : null};
1119 html = flatten(htmlCls, html); 1121 html = flatten(htmlCls, html);
1120 htmlCls = htmlCls.v; 1122 htmlCls = htmlCls.v;
1121 1123
1122 var dummy = document.createElement("body"); 1124 var dummy = document.createElement(pnode);
1123 suspendScripts = true; 1125 suspendScripts = true;
1124 dummy.innerHTML = html; 1126 dummy.innerHTML = html;
1125 suspendScripts = false; 1127 suspendScripts = false;
1126 var html = dummy.firstChild; 1128 var html = dummy.firstChild;
1127 dummy.removeChild(html); 1129 dummy.removeChild(html);
1148 populate(x); 1150 populate(x);
1149 } 1151 }
1150 1152
1151 if (s_style) { 1153 if (s_style) {
1152 var htmlCls2 = s_class ? null : htmlCls; 1154 var htmlCls2 = s_class ? null : htmlCls;
1153 var x = document.createElement("script"); 1155 var y = document.createElement("script");
1154 x.dead = false; 1156 y.dead = false;
1155 x.signal = s_style; 1157 y.signal = s_style;
1156 x.sources = null; 1158 y.sources = null;
1157 x.closures = htmlCls2; 1159 y.closures = htmlCls2;
1158 1160
1159 x.recreate = function(v) { 1161 y.recreate = function(v) {
1160 for (var ls = x.closures; ls != htmlCls2; ls = ls.next) 1162 for (var ls = y.closures; ls != htmlCls2; ls = ls.next)
1161 freeClosure(ls.data); 1163 freeClosure(ls.data);
1162 1164
1163 var cls = {v : null}; 1165 var cls = {v : null};
1164 html.style.cssText = flatten(cls, v); 1166 html.style.cssText = flatten(cls, v);
1165 x.closures = concat(cls.v, htmlCls2); 1167 y.closures = concat(cls.v, htmlCls2);
1166 } 1168 }
1167 1169
1168 html.appendChild(x); 1170 html.appendChild(y);
1169 populate(x); 1171 populate(y);
1170 } 1172 }
1171 } 1173 }
1172 1174
1173 function addOnChange(x, f) { 1175 function addOnChange(x, f) {
1174 var old = x.onchange; 1176 var old = x.onchange;
1938 er("Disallowed URL: " + s); 1940 er("Disallowed URL: " + s);
1939 return u; 1941 return u;
1940 } 1942 }
1941 1943
1942 1944
1945 // Attribute name blessing
1946
1947 function blessData(s) {
1948 for (var i = 0; i < s.length; ++i) {
1949 var c = s[i];
1950 if (!isAlnum(c) && c != '-' && c != '_')
1951 er("Disallowed character in data-* attribute name");
1952 }
1953
1954 return s;
1955 }
1956
1957
1943 // CSS validation 1958 // CSS validation
1944 1959
1945 function atom(s) { 1960 function atom(s) {
1946 for (var i = 0; i < s.length; ++i) { 1961 for (var i = 0; i < s.length; ++i) {
1947 var c = s[i]; 1962 var c = s[i];