Mercurial > repos > tabletprog
annotate mquery.js @ 19:132c7756860e
Use populateSymbols to generate symbol tables during compilation rather than populating them as we go. This change allows us to refer to symbols defined later in the input stream and also gives the symbol table logic a single home that can be used both by the compiler and editor.
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 25 Mar 2012 16:11:19 -0700 |
parents | 85fb6ba15bc6 |
children | 068d63627b16 |
rev | line source |
---|---|
0 | 1 function each(container, fun) |
2 { | |
3 if (container instanceof Array) { | |
4 for (var i = 0; i < container.length; i++) { | |
5 fun(i, conatiner[i]); | |
6 } | |
7 } else { | |
8 for (var i in container) { | |
9 if (container.hasOwnProperty(i)) { | |
10 fun(i, container[i]); | |
11 } | |
12 } | |
13 } | |
14 } | |
15 | |
16 function q(query) | |
17 { | |
18 return document.querySelector(query); | |
19 } | |
20 function qall(query) | |
21 { | |
22 return document.querySelectorAll(query); | |
23 } | |
24 | |
25 function hide(el) | |
26 { | |
27 el.style.display = 'none'; | |
28 } | |
29 | |
30 function show(el, dtype) | |
31 { | |
32 if (dtype === undefined) { | |
33 dtype = 'block'; | |
34 } | |
9
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
35 el.style.display = dtype; |
0 | 36 } |
37 | |
38 function onReady(fun) | |
39 { | |
40 if (document.readyState == 'complete') { | |
41 fun(); | |
42 } else { | |
43 document.onreadystatechange = function() { | |
44 if (document.readyState == 'complete') { | |
45 fun(); | |
46 document.onreadystatechange = null; | |
47 } | |
48 } | |
49 } | |
50 } | |
51 | |
52 function addClass(el, classname) | |
53 { | |
54 var classes = el.className.split(' '); | |
55 if (classes.indexOf(classname) == -1) { | |
56 classes.push(classname); | |
57 el.className = classes.join(' '); | |
58 } | |
59 } | |
60 | |
61 function removeClass(el, classname) | |
62 { | |
63 var classes = el.className.split(' '); | |
64 var idx = classes.indexOf(classname); | |
65 if (idx > -1) { | |
66 classes.splice(idx, 1); | |
67 el.className = classes.join(' '); | |
68 } | |
69 } | |
70 | |
9
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
71 function ajax(method, url, data, onSuccess, onFail, onOthers) |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
72 { |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
73 var req; |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
74 try { |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
75 req = new XMLHttpRequest(); |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
76 } catch (e) { |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
77 req = new ActiveXObject("Microsoft.XMLHTTP"); |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
78 } |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
79 req.onreadystatechange = function() { |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
80 if (req.readyState == 4) { |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
81 if ((req.status >= 200 && req.status <= 299) || req.status == 0) { |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
82 onSuccess(req); |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
83 } else if(onFail) { |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
84 onFail(req); |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
85 } else { |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
86 console.log('request failed:', req); |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
87 } |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
88 } else if(onOthers) { |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
89 onOthers(req); |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
90 } |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
91 } |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
92 req.open(method, url); |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
93 if (data && 'mime' in data) { |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
94 req.setRequestHeader('Content-Type', data.mime); |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
95 req.send(data); |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
96 } else { |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
97 req.send(data); |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
98 } |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
99 } |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
100 |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
101 function get(url, onSuccess, onFail, onOthers) |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
102 { |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
103 ajax('GET', url, undefined, onSuccess, onFail, onOthers); |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
104 } |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
105 |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
106 function post(url, data, onSuccess, onFail, onOthers) |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
107 { |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
108 ajax('POST', url, data, onSuccess, onFail, onOthers); |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
109 } |
37d7f60a8ea1
Allow use of tabletproglang programs in script tags
Mike Pavone <pavone@retrodev.com>
parents:
0
diff
changeset
|
110 |
14
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
111 function newEl(tagname, props) |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
112 { |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
113 var el = document.createElement(tagname); |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
114 if (typeof props == 'object') { |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
115 each(props, function (key, val) { |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
116 el[key] = val; |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
117 }); |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
118 } |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
119 return el; |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
120 } |
85fb6ba15bc6
Start turning AST into HTML in editor
Mike Pavone <pavone@retrodev.com>
parents:
9
diff
changeset
|
121 |