envjs19 0.3.8.20101029121421

Sign up to get free protection for your applications and to get access to all the features.
Files changed (279) hide show
  1. data/.jslintrbrc +30 -0
  2. data/.project +17 -0
  3. data/CHANGELOG.rdoc +57 -0
  4. data/DTD/xhtml-lat1.ent +196 -0
  5. data/DTD/xhtml-special.ent +80 -0
  6. data/DTD/xhtml-symbol.ent +237 -0
  7. data/DTD/xhtml.soc +14 -0
  8. data/DTD/xhtml1-frameset.dtd +1235 -0
  9. data/DTD/xhtml1-strict.dtd +978 -0
  10. data/DTD/xhtml1-transitional.dtd +1201 -0
  11. data/DTD/xhtml1.dcl +192 -0
  12. data/Makefile +7 -0
  13. data/Manifest.txt +280 -0
  14. data/README.rdoc +65 -0
  15. data/Rakefile +196 -0
  16. data/Wakefile +11 -0
  17. data/bin/envjsrb +257 -0
  18. data/build.properties +9 -0
  19. data/build.xml +247 -0
  20. data/gm/jquery.js +6002 -0
  21. data/gm/mainx.js +2648 -0
  22. data/gm/sensx.js +135 -0
  23. data/gm/t.js +6 -0
  24. data/gm/x.html +76 -0
  25. data/htmlparser/BrowserTreeBuilder.java +456 -0
  26. data/htmlparser/README +34 -0
  27. data/htmlparser/build.sh +38 -0
  28. data/jsl/jsl +0 -0
  29. data/jsl/jsl.default.conf +129 -0
  30. data/jsl/jsl.exe +0 -0
  31. data/lib/envjs.rb +35 -0
  32. data/lib/envjs/event_loop.js +206 -0
  33. data/lib/envjs/net.rb +3 -0
  34. data/lib/envjs/net/cgi.rb +94 -0
  35. data/lib/envjs/net/file.rb +69 -0
  36. data/lib/envjs/options.rb +11 -0
  37. data/lib/envjs/runtime.rb +346 -0
  38. data/lib/envjs/tempfile.rb +24 -0
  39. data/licenses/GPL-LICENSE.txt +278 -0
  40. data/licenses/MIT-LICENSE.txt +20 -0
  41. data/src/base64.js +80 -0
  42. data/src/build.js +6 -0
  43. data/src/cruft/bad.html +24 -0
  44. data/src/cruft/dom.js +606 -0
  45. data/src/cruft/element.js +297 -0
  46. data/src/cruft/good.html +30 -0
  47. data/src/cruft/good.js +32 -0
  48. data/src/cruft/internal.js +81 -0
  49. data/src/cruft/parser.js +458 -0
  50. data/src/css/properties.js +293 -0
  51. data/src/css/rule.js +22 -0
  52. data/src/css/sizzle.js +717 -0
  53. data/src/css/stylesheet.js +52 -0
  54. data/src/dom/attr.js +55 -0
  55. data/src/dom/cdatasection.js +31 -0
  56. data/src/dom/characterdata.js +119 -0
  57. data/src/dom/comment.js +30 -0
  58. data/src/dom/doctype.js +9 -0
  59. data/src/dom/document.js +1023 -0
  60. data/src/dom/dom.js +134 -0
  61. data/src/dom/element.js +217 -0
  62. data/src/dom/entities.js +273 -0
  63. data/src/dom/exception.js +28 -0
  64. data/src/dom/fragment.js +37 -0
  65. data/src/dom/implementation.js +140 -0
  66. data/src/dom/instruction.js +51 -0
  67. data/src/dom/namednodemap.js +374 -0
  68. data/src/dom/namespace.js +50 -0
  69. data/src/dom/node.js +618 -0
  70. data/src/dom/nodelist.js +195 -0
  71. data/src/dom/parser.js +1207 -0
  72. data/src/dom/text.js +73 -0
  73. data/src/event/event.js +47 -0
  74. data/src/event/mouseevent.js +4 -0
  75. data/src/event/uievent.js +8 -0
  76. data/src/html/a.js +110 -0
  77. data/src/html/anchor.js +80 -0
  78. data/src/html/area.js +57 -0
  79. data/src/html/base.js +26 -0
  80. data/src/html/blockquote-q.js +19 -0
  81. data/src/html/body.js +19 -0
  82. data/src/html/button.js +21 -0
  83. data/src/html/canvas.js +14 -0
  84. data/src/html/col-colgroup.js +49 -0
  85. data/src/html/collection.js +72 -0
  86. data/src/html/cookie.js +153 -0
  87. data/src/html/del-ins.js +25 -0
  88. data/src/html/div.js +28 -0
  89. data/src/html/document.js +364 -0
  90. data/src/html/element.js +382 -0
  91. data/src/html/fieldset.js +19 -0
  92. data/src/html/form.js +484 -0
  93. data/src/html/frame.js +89 -0
  94. data/src/html/frameset.js +25 -0
  95. data/src/html/head.js +44 -0
  96. data/src/html/html.js +0 -0
  97. data/src/html/htmlparser.js +340 -0
  98. data/src/html/iframe.js +26 -0
  99. data/src/html/image.js +0 -0
  100. data/src/html/img.js +62 -0
  101. data/src/html/input-elements.js +307 -0
  102. data/src/html/input.js +65 -0
  103. data/src/html/label.js +26 -0
  104. data/src/html/legend.js +19 -0
  105. data/src/html/link.js +82 -0
  106. data/src/html/map.js +22 -0
  107. data/src/html/meta.js +37 -0
  108. data/src/html/object.js +89 -0
  109. data/src/html/optgroup.js +25 -0
  110. data/src/html/option.js +103 -0
  111. data/src/html/param.js +38 -0
  112. data/src/html/script.js +122 -0
  113. data/src/html/select.js +132 -0
  114. data/src/html/style.js +31 -0
  115. data/src/html/table.js +199 -0
  116. data/src/html/tbody-thead-tfoot.js +92 -0
  117. data/src/html/td-th.js +18 -0
  118. data/src/html/textarea.js +31 -0
  119. data/src/html/title.js +20 -0
  120. data/src/html/tr.js +114 -0
  121. data/src/intro.js +141 -0
  122. data/src/outro.js +70 -0
  123. data/src/parser/html5.detailed.js +10762 -0
  124. data/src/parser/html5.min.js +503 -0
  125. data/src/parser/html5.pretty.js +10815 -0
  126. data/src/parser/intro.js +42 -0
  127. data/src/parser/outro.js +9 -0
  128. data/src/platform/core.js +323 -0
  129. data/src/platform/johnson.js +484 -0
  130. data/src/platform/rhino.js +327 -0
  131. data/src/platform/static/intro.js +41 -0
  132. data/src/platform/static/outro.js +30 -0
  133. data/src/profile/aop.js +238 -0
  134. data/src/profile/profile.js +402 -0
  135. data/src/serializer/xml.js +21 -0
  136. data/src/svg/animatedstring.js +25 -0
  137. data/src/svg/document.js +25 -0
  138. data/src/svg/element.js +22 -0
  139. data/src/svg/locatable.js +17 -0
  140. data/src/svg/rect.js +18 -0
  141. data/src/svg/rectelement.js +24 -0
  142. data/src/svg/stylable.js +49 -0
  143. data/src/svg/svgelement.js +22 -0
  144. data/src/svg/transformable.js +15 -0
  145. data/src/window/css.js +15 -0
  146. data/src/window/dialog.js +16 -0
  147. data/src/window/document.js +28 -0
  148. data/src/window/event.js +265 -0
  149. data/src/window/history.js +62 -0
  150. data/src/window/location.js +156 -0
  151. data/src/window/navigator.js +48 -0
  152. data/src/window/screen.js +53 -0
  153. data/src/window/timer.js +21 -0
  154. data/src/window/window.js +284 -0
  155. data/src/window/xhr.js +135 -0
  156. data/src/xpath/expression.js +49 -0
  157. data/src/xpath/implementation.js +2505 -0
  158. data/src/xpath/result.js +67 -0
  159. data/src/xpath/util.js +551 -0
  160. data/src/xpath/xmltoken.js +149 -0
  161. data/src/xslt/COPYING +34 -0
  162. data/src/xslt/ajaxslt-0.8.1/AUTHORS +1 -0
  163. data/src/xslt/ajaxslt-0.8.1/ChangeLog +136 -0
  164. data/src/xslt/ajaxslt-0.8.1/Makefile +49 -0
  165. data/src/xslt/ajaxslt-0.8.1/README +102 -0
  166. data/src/xslt/ajaxslt-0.8.1/TODO +15 -0
  167. data/src/xslt/ajaxslt-0.8.1/dom.js +566 -0
  168. data/src/xslt/ajaxslt-0.8.1/dom_unittest.html +24 -0
  169. data/src/xslt/ajaxslt-0.8.1/dom_unittest.js +131 -0
  170. data/src/xslt/ajaxslt-0.8.1/simplelog.js +79 -0
  171. data/src/xslt/ajaxslt-0.8.1/test/xpath.html +18 -0
  172. data/src/xslt/ajaxslt-0.8.1/test/xpath_script.js +45 -0
  173. data/src/xslt/ajaxslt-0.8.1/test/xslt.html +58 -0
  174. data/src/xslt/ajaxslt-0.8.1/test/xslt_script.js +33 -0
  175. data/src/xslt/ajaxslt-0.8.1/unittestsuite.html +26 -0
  176. data/src/xslt/ajaxslt-0.8.1/xmltoken.js +149 -0
  177. data/src/xslt/ajaxslt-0.8.1/xmltoken_unittest.html +18 -0
  178. data/src/xslt/ajaxslt-0.8.1/xmltoken_unittest.js +811 -0
  179. data/src/xslt/ajaxslt-0.8.1/xpath_unittest.html +39 -0
  180. data/src/xslt/ajaxslt-0.8.1/xpath_unittest.js +557 -0
  181. data/src/xslt/ajaxslt-0.8.1/xpathdebug.js +234 -0
  182. data/src/xslt/ajaxslt-0.8.1/xslt_unittest.html +138 -0
  183. data/src/xslt/ajaxslt-0.8.1/xslt_unittest.js +68 -0
  184. data/src/xslt/implementation.js +625 -0
  185. data/src/xslt/processor.js +37 -0
  186. data/src/xslt/util.js +449 -0
  187. data/test/base64.js +80 -0
  188. data/test/call-load-test.js +15 -0
  189. data/test/data.js +45 -0
  190. data/test/debug.js +53 -0
  191. data/test/firebug/errorIcon.png +0 -0
  192. data/test/firebug/firebug.css +209 -0
  193. data/test/firebug/firebug.html +23 -0
  194. data/test/firebug/firebug.js +672 -0
  195. data/test/firebug/firebugx.js +10 -0
  196. data/test/firebug/infoIcon.png +0 -0
  197. data/test/firebug/warningIcon.png +0 -0
  198. data/test/fixtures/html/events.html +171 -0
  199. data/test/fixtures/html/iframe1.html +46 -0
  200. data/test/fixtures/html/iframe1a.html +46 -0
  201. data/test/fixtures/html/iframe2.html +45 -0
  202. data/test/fixtures/html/iframe3.html +28 -0
  203. data/test/fixtures/html/iframeN.html +57 -0
  204. data/test/fixtures/html/malformed.html +181 -0
  205. data/test/fixtures/html/scope.html +81 -0
  206. data/test/fixtures/html/trivial.html +19 -0
  207. data/test/fixtures/html/with_js.html +26 -0
  208. data/test/fixtures/images/icon-blue.png +0 -0
  209. data/test/fixtures/js/external_script.js +1 -0
  210. data/test/fixtures/js/script.js +1 -0
  211. data/test/fixtures/js/script_error.js +2 -0
  212. data/test/foo.html +8 -0
  213. data/test/foo.js +40 -0
  214. data/test/html/events.html +171 -0
  215. data/test/html/iframe1.html +46 -0
  216. data/test/html/iframe1a.html +46 -0
  217. data/test/html/iframe2.html +45 -0
  218. data/test/html/iframe3.html +30 -0
  219. data/test/html/iframeN.html +57 -0
  220. data/test/html/malformed.html +181 -0
  221. data/test/html/scope.html +87 -0
  222. data/test/html/script.js +1 -0
  223. data/test/html/trivial.html +19 -0
  224. data/test/html/with_js.html +26 -0
  225. data/test/index.html +328 -0
  226. data/test/java-prototype.js +9 -0
  227. data/test/jquery.js +6002 -0
  228. data/test/primary-tests.js +26 -0
  229. data/test/prototype-test.js +13 -0
  230. data/test/qunit.js +61 -0
  231. data/test/qunit/qunit/qunit.css +17 -0
  232. data/test/qunit/qunit/qunit.js +997 -0
  233. data/test/scope.html +19 -0
  234. data/test/scope.rb +24 -0
  235. data/test/smp/dmathieu/index.html +8 -0
  236. data/test/specs/dist/env.spec.js +1534 -0
  237. data/test/specs/envjs.spec.css +46 -0
  238. data/test/specs/parser/html.js +31 -0
  239. data/test/specs/parser/spec.html +40 -0
  240. data/test/specs/parser/xml.js +31 -0
  241. data/test/specs/qunit.bdd.js +210 -0
  242. data/test/specs/qunit.css +17 -0
  243. data/test/specs/qunit.js +997 -0
  244. data/test/specs/template/spec-0.js +31 -0
  245. data/test/specs/template/spec-1.js +31 -0
  246. data/test/specs/template/spec.html +40 -0
  247. data/test/specs/window/css.js +23 -0
  248. data/test/specs/window/dialog.js +25 -0
  249. data/test/specs/window/document.js +23 -0
  250. data/test/specs/window/event.js +25 -0
  251. data/test/specs/window/history.js +34 -0
  252. data/test/specs/window/location.js +34 -0
  253. data/test/specs/window/navigator.js +71 -0
  254. data/test/specs/window/screen.js +42 -0
  255. data/test/specs/window/spec.html +48 -0
  256. data/test/specs/window/timer.js +26 -0
  257. data/test/specs/window/window.js +53 -0
  258. data/test/specs/xhr/spec.html +47 -0
  259. data/test/specs/xhr/xhr.js +31 -0
  260. data/test/test.js +10 -0
  261. data/test/unit/dom.js +44 -0
  262. data/test/unit/elementmembers.js +92 -0
  263. data/test/unit/events.js +195 -0
  264. data/test/unit/fixtures/external_script.js +1 -0
  265. data/test/unit/form.js +40 -0
  266. data/test/unit/iframe.js +234 -0
  267. data/test/unit/insertion.js +23 -0
  268. data/test/unit/multi-window.js +212 -0
  269. data/test/unit/nu.validator.js +34 -0
  270. data/test/unit/onload.js +90 -0
  271. data/test/unit/parser.js +122 -0
  272. data/test/unit/prototypecompat.js +22 -0
  273. data/test/unit/proxy.js +6 -0
  274. data/test/unit/scope.js +209 -0
  275. data/test/unit/timer.js +115 -0
  276. data/test/unit/window.js +57 -0
  277. data/test/x.js +1 -0
  278. data/test/y.js +1 -0
  279. metadata +367 -0
@@ -0,0 +1,92 @@
1
+ $debug("Defining HTMLTableSectionElement");
2
+ /*
3
+ * HTMLxElement - DOM Level 2
4
+ * - Contributed by Steven Wood
5
+ */
6
+ var HTMLTableSectionElement = function(ownerDocument) {
7
+ this.HTMLElement = HTMLElement;
8
+ this.HTMLElement(ownerDocument);
9
+ };
10
+ HTMLTableSectionElement.prototype = new HTMLElement;
11
+ __extend__(HTMLTableSectionElement.prototype, {
12
+
13
+ /* commented out upstream
14
+ appendChild : function (child) {
15
+
16
+ // disallow nesting of these elements.
17
+ if (child.tagName.match(/TBODY|TFOOT|THEAD/)) {
18
+ return this.parentNode.appendChild(child);
19
+ } else {
20
+ return DOMNode.prototype.appendChild.apply(this, arguments);
21
+ }
22
+
23
+ }, */
24
+
25
+ get align() {
26
+ return this.getAttribute("align");
27
+ },
28
+
29
+ get ch() {
30
+ return this.getAttribute("ch");
31
+ },
32
+
33
+ set ch(ch) {
34
+ this.setAttribute("ch", ch);
35
+ },
36
+
37
+ // ch gets or sets the alignment character for cells in a column.
38
+ set chOff(chOff) {
39
+ this.setAttribute("chOff", chOff);
40
+ },
41
+
42
+ get chOff(chOff) {
43
+ return this.getAttribute("chOff");
44
+ },
45
+
46
+ get vAlign () {
47
+ return this.getAttribute("vAlign");
48
+ },
49
+
50
+ get rows() {
51
+ return new HTMLCollection(this.getElementsByTagName("tr"));
52
+ },
53
+
54
+ insertRow : function (idx) {
55
+ if (idx === undefined) {
56
+ throw new Error("Index omitted in call to HTMLTableSectionElement.insertRow ");
57
+ }
58
+
59
+ var numRows = this.rows.length,
60
+ node = null;
61
+
62
+ if (idx > numRows) {
63
+ throw new Error("Index > rows.length in call to HTMLTableSectionElement.insertRow");
64
+ }
65
+
66
+ var row = this.ownerDocument.createElement("tr");
67
+ // If index is -1 or equal to the number of rows,
68
+ // the row is appended as the last row. If index is omitted
69
+ // or greater than the number of rows, an error will result
70
+ if (idx === -1 || idx === numRows) {
71
+ this.appendChild(row);
72
+ } else {
73
+ node = this.firstChild;
74
+
75
+ for (var i=0; i<idx; i++) {
76
+ node = node.nextSibling;
77
+ }
78
+ }
79
+
80
+ this.insertBefore(row, node);
81
+
82
+ return row;
83
+ },
84
+
85
+ deleteRow : function (idx) {
86
+ var elem = this.rows[idx];
87
+ this.removeChild(elem);
88
+ }
89
+
90
+ });
91
+
92
+ // $w.HTMLTableSectionElement = HTMLTableSectionElement;
data/src/html/td-th.js ADDED
@@ -0,0 +1,18 @@
1
+ $debug("Defining HTMLTableCellElement");
2
+ /*
3
+ * HTMLTableCellElement - DOM Level 2
4
+ * Implementation Provided by Steven Wood
5
+ */
6
+ var HTMLTableCellElement = function(ownerDocument) {
7
+ this.HTMLElement = HTMLElement;
8
+ this.HTMLElement(ownerDocument);
9
+ };
10
+ HTMLTableCellElement.prototype = new HTMLElement;
11
+ __extend__(HTMLTableCellElement.prototype, {
12
+
13
+
14
+ // TODO :
15
+
16
+ });
17
+
18
+ // $w.HTMLTableCellElement = HTMLTableCellElement;
@@ -0,0 +1,31 @@
1
+ $debug("Defining HTMLTextAreaElement");
2
+ /*
3
+ * HTMLTextAreaElement - DOM Level 2
4
+ */
5
+ var HTMLTextAreaElement = function(ownerDocument) {
6
+ this.HTMLInputAreaCommon = HTMLInputAreaCommon;
7
+ this.HTMLInputAreaCommon(ownerDocument);
8
+ };
9
+ HTMLTextAreaElement.prototype = new HTMLInputAreaCommon;
10
+ __extend__(HTMLTextAreaElement.prototype, {
11
+ get cols(){
12
+ return this.getAttribute('cols');
13
+ },
14
+ set cols(value){
15
+ this.setAttribute('cols', value);
16
+ },
17
+ get rows(){
18
+ return this.getAttribute('rows');
19
+ },
20
+ get value(){
21
+ return this.innerText;
22
+ },
23
+ set value(value){
24
+ this.innerText=value;
25
+ },
26
+ set rows(value){
27
+ this.setAttribute('rows', value);
28
+ }
29
+ });
30
+
31
+ // $w.HTMLTextAreaElement = HTMLTextAreaElement;
data/src/html/title.js ADDED
@@ -0,0 +1,20 @@
1
+ $debug("Defining HTMLTitleElement");
2
+ /*
3
+ * HTMLTitleElement - DOM Level 2
4
+ */
5
+ var HTMLTitleElement = function(ownerDocument) {
6
+ this.HTMLElement = HTMLElement;
7
+ this.HTMLElement(ownerDocument);
8
+ };
9
+ HTMLTitleElement.prototype = new HTMLElement;
10
+ __extend__(HTMLTitleElement.prototype, {
11
+ get text() {
12
+ return this.innerText;
13
+ },
14
+
15
+ set text(titleStr) {
16
+ this.innerHTML = titleStr; // if paranoid, would error on embedded HTML
17
+ }
18
+ });
19
+
20
+ // $w.HTMLTitleElement = HTMLTitleElement;
data/src/html/tr.js ADDED
@@ -0,0 +1,114 @@
1
+ $debug("Defining HTMLTableRowElement");
2
+ /*
3
+ * HTMLRowElement - DOM Level 2
4
+ * Implementation Provided by Steven Wood
5
+ */
6
+ var HTMLTableRowElement = function(ownerDocument) {
7
+ this.HTMLElement = HTMLElement;
8
+ this.HTMLElement(ownerDocument);
9
+
10
+ };
11
+ HTMLTableRowElement.prototype = new HTMLElement;
12
+ __extend__(HTMLTableRowElement.prototype, {
13
+
14
+ appendChild : function (child) {
15
+
16
+ var retVal = DOMNode.prototype.appendChild.apply(this, arguments);
17
+ retVal.cellIndex = this.cells.length -1;
18
+
19
+ return retVal;
20
+ },
21
+ // align gets or sets the horizontal alignment of data within cells of the row.
22
+ get align() {
23
+ return this.getAttribute("align");
24
+ },
25
+
26
+ get bgColor() {
27
+ return this.getAttribute("bgcolor");
28
+ },
29
+
30
+ get cells() {
31
+ var nl = this.getElementsByTagName("td");
32
+ return new HTMLCollection(nl);
33
+ },
34
+
35
+ get ch() {
36
+ return this.getAttribute("ch");
37
+ },
38
+
39
+ set ch(ch) {
40
+ this.setAttribute("ch", ch);
41
+ },
42
+
43
+ // ch gets or sets the alignment character for cells in a column.
44
+ set chOff(chOff) {
45
+ this.setAttribute("chOff", chOff);
46
+ },
47
+
48
+ get chOff(chOff) {
49
+ return this.getAttribute("chOff");
50
+ },
51
+
52
+ get rowIndex() {
53
+ var nl = this.parentNode.childNodes;
54
+ for (var i=0; i<nl.length; i++) {
55
+ if (nl[i] === this) {
56
+ return i;
57
+ }
58
+ }
59
+ },
60
+
61
+ get sectionRowIndex() {
62
+ var nl = this.parentNode.getElementsByTagName(this.tagName);
63
+ for (var i=0; i<nl.length; i++) {
64
+ if (nl[i] === this) {
65
+ return i;
66
+ }
67
+ }
68
+ },
69
+
70
+ get vAlign () {
71
+ return this.getAttribute("vAlign");
72
+ },
73
+
74
+ insertCell : function (idx) {
75
+ if (idx === undefined) {
76
+ throw new Error("Index omitted in call to HTMLTableRow.insertCell");
77
+ }
78
+
79
+ var numCells = this.cells.length,
80
+ node = null;
81
+
82
+ if (idx > numCells) {
83
+ throw new Error("Index > rows.length in call to HTMLTableRow.insertCell");
84
+ }
85
+
86
+ var cell = this.ownerDocument.createElement("td");
87
+
88
+ if (idx === -1 || idx === numCells) {
89
+ this.appendChild(cell);
90
+ } else {
91
+
92
+
93
+ node = this.firstChild;
94
+
95
+ for (var i=0; i<idx; i++) {
96
+ node = node.nextSibling;
97
+ }
98
+ }
99
+
100
+ this.insertBefore(cell, node);
101
+ cell.cellIndex = idx;
102
+
103
+ return cell;
104
+ },
105
+
106
+
107
+ deleteCell : function (idx) {
108
+ var elem = this.cells[idx];
109
+ this.removeChild(elem);
110
+ }
111
+
112
+ });
113
+
114
+ // $w.HTMLTableRowElement = HTMLTableRowElement;
data/src/intro.js ADDED
@@ -0,0 +1,141 @@
1
+ (function(){
2
+
3
+ try {
4
+
5
+ (function(){
6
+ for(var symbol in $master["static"]) {
7
+ if(symbol.match(/^(DOM|HTML|XPath)/)){
8
+ // $master.print("import",symbol);
9
+ if(typeof $master["static"][symbol] === "undefined") {
10
+ throw new Error("Cannot import " + symbol + ": undefined");
11
+ }
12
+ this[symbol] = $master["static"][symbol];
13
+ }
14
+ }
15
+ var symbols = [ "Event" ];
16
+ for(var i in symbols) {
17
+ symbol = symbols[i];
18
+ // $master.print("import",symbol);
19
+ if(typeof $master["static"][symbol] === "undefined") {
20
+ throw new Error("Cannot import " + symbol + ": undefined");
21
+ }
22
+ this[symbol] = $master["static"][symbol];
23
+ }
24
+ }());
25
+
26
+ var $env = (function(){
27
+
28
+ var $env = {};
29
+ var $master;
30
+
31
+ var $public = (function(){
32
+ var $public = {};
33
+ return $public;
34
+ }());
35
+
36
+ var $platform = function(master){
37
+
38
+ var $platform = {};
39
+
40
+ $platform.new_split_global_outer = function() {
41
+ return $master.new_split_global_outer();
42
+ };
43
+
44
+ $platform.new_split_global_inner = function(proxy) {
45
+ return $master.new_split_global_inner(proxy,undefined);
46
+ };
47
+
48
+ $platform.init_window = function(inner) {
49
+ var index = master.next_window_index()+0;
50
+ inner.toString = function(){
51
+ return "[object Window "+index+"]";
52
+ // return "[object Window]";
53
+ };
54
+ };
55
+
56
+ return $platform;
57
+ };
58
+
59
+ $env.new_window = function(proxy){
60
+ var swap_script_window; // = ( $master.first_script_window.window === proxy );
61
+ if(!proxy){
62
+ proxy = $platform.new_split_global_outer();
63
+ }
64
+ $master.proxy = proxy;
65
+ // try{throw new Error("huh?");}catch(e){print("here",e.stack);}
66
+ // var now = Date.now();
67
+ var new_window = $platform.new_split_global_inner(proxy,undefined);
68
+ // print("nw "+(Date.now()-now));
69
+ new_window.$inner = new_window;
70
+ if(swap_script_window) {
71
+ $master.first_script_window = new_window;
72
+ }
73
+ new_window.$master = $master;
74
+ for(var index in $master.symbols) {
75
+ var symbol = $master.symbols[index];
76
+ new_window[symbol] = $master[symbol];
77
+ }
78
+ return [ proxy, new_window ];
79
+ };
80
+
81
+ $env.init = function(){
82
+ $env.$master = $master = this.$master;
83
+ $platform = $platform($master);
84
+ var $inner = this.$inner;
85
+ var options = this.$options;
86
+ // delete $inner.$master;
87
+ delete $inner.$platform;
88
+ delete $inner.$options;
89
+ $inner.$envx = $env;
90
+ $env.init_window.call($inner,$inner,options);
91
+ };
92
+
93
+ $env.init_window = function(inner,options){
94
+ var $inner = inner;
95
+ var $w = this;
96
+
97
+ inner.load = function(){
98
+ for(var i = 0; i < arguments.length; i++){
99
+ var f = arguments[i];
100
+ $master.load(f,inner);
101
+ }
102
+ };
103
+
104
+ inner.evaluate = function(string){
105
+ return $master.evaluate.call(string,inner);
106
+ };
107
+
108
+ options = options || {};
109
+
110
+ var copy_opts = function copy_opts(options){
111
+ var new_opts = {};
112
+ var undef;
113
+ for(var xxx in options){
114
+ if (typeof options[xxx] === "undefined") {
115
+ new_opts[xxx] = undef;
116
+ } else if (options[xxx] === null) {
117
+ new_opts[xxx] = null;
118
+ } else if (typeof options[xxx] == "object" && options[xxx]+"" === "[object split_global]") {
119
+ new_opts[xxx] = options[xxx];
120
+ } else if (typeof options[xxx] == "object" && ((options[xxx]+"").match(/^\[object Window[ 0-9]*\]$/))) {
121
+ new_opts[xxx] = options[xxx];
122
+ } else if (typeof options[xxx] == "string") {
123
+ new_opts[xxx] = options[xxx]+"";
124
+ } else if (typeof options[xxx] == "object" && (options[xxx].constructor+"").match(/^function Object\(\)/) ) {
125
+ new_opts[xxx] = copy_opts(options[xxx]);
126
+ } else {
127
+ throw new Error("copy "+xxx+ " "+typeof options[xxx] + " " +options[xxx] + " " + options[xxx].constructor);
128
+ }
129
+ }
130
+ return new_opts;
131
+ };
132
+
133
+ options = copy_opts(options);
134
+
135
+ $platform.init_window($w);
136
+
137
+ var print = $master.print;
138
+
139
+ if (!this.window) {
140
+ this.window = this;
141
+ }
data/src/outro.js ADDED
@@ -0,0 +1,70 @@
1
+ // faux-intro ...
2
+ // (function(){
3
+ // (function(){
4
+ // function(){
5
+
6
+ // User accesible interface ...
7
+ var Envjs = $w.Envjs = $env.Envjs = function(){
8
+ if(arguments.length === 2){
9
+ for ( var i in arguments[1] ) {
10
+ var g = arguments[1].__lookupGetter__(i),
11
+ s = arguments[1].__lookupSetter__(i);
12
+ if ( g || s ) {
13
+ if ( g ) $env.__defineGetter__(i, g);
14
+ if ( s ) $env.__defineSetter__(i, s);
15
+ } else
16
+ $env[i] = arguments[1][i];
17
+ }
18
+ }
19
+ if (arguments[0] != null && arguments[0] != "")
20
+ window.location = arguments[0];
21
+ };
22
+ Envjs.$env = $env;
23
+ Envjs.wait = $env.wait;
24
+ Envjs.interpreter = window.whichInterpreter;
25
+ Envjs.evaluate = $env.$master.evaluate;
26
+
27
+ // $w.__loadAWindowsDocument__(options.url || "about:blank");
28
+
29
+ (function(){
30
+ var fns = [];
31
+ for(var key in $master["static"]) {
32
+ if(key.match(/^envjs_init_\d+$/)){
33
+ fns.push(key);
34
+ }
35
+ }
36
+ fns.sort();
37
+ var nu = this.__nu__ = {};
38
+ nu.base = '';
39
+ nu.metaProps = {};
40
+ for(var i in fns) {
41
+ // print(fns[i]);
42
+ // print($master["static"][fns[i]]);
43
+ $master["static"][fns[i]](this,this.document);
44
+ }
45
+ }());
46
+
47
+ $env.load(options.url || "about:blank", options.xhr);
48
+ };
49
+
50
+ return $env;
51
+
52
+ })(); // close function definition begun in 'intro.js'
53
+
54
+ // Initial window setup
55
+ var init = $env.init;
56
+ init();
57
+
58
+ } catch(e) {
59
+ // $warn("Exception during load: "+e);
60
+ throw e;
61
+ }
62
+
63
+ })();
64
+
65
+ // Local Variables:
66
+ // espresso-indent-level:4
67
+ // c-basic-offset:4
68
+ // tab-width:4
69
+ // mode:auto-revert
70
+ // End: