Mercurial > repos > tabletprog
annotate mquery.js @ 69:ba032565c7a5
Fix handling of variable style access to self and parent object messages defined with lambdas. Improve test case for this bug to include parent object access as well as self object access.
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 14 Jul 2012 19:24:04 -0700 |
parents | 668f533e5284 |
children | 76a21129e8f5 |
rev | line source |
---|---|
0 | 1 function each(container, fun) |
2 { | |
3 if (container instanceof Array) { | |
4 for (var i = 0; i < container.length; i++) { | |
23
068d63627b16
Populate in scope symbol buttons when clicking on a symbol in the source
Mike Pavone <pavone@retrodev.com>
parents:
14
diff
changeset
|
5 fun(i, container[i]); |
0 | 6 } |
7 } else { | |
8 for (var i in container) { | |
9 if (container.hasOwnProperty(i)) { | |
10 fun(i, container[i]); | |
11 } | |
12 } | |
13 } | |
14 } | |
15 | |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
23
diff
changeset
|
16 function q(query, el) |
0 | 17 { |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
23
diff
changeset
|
18 return el === undefined ? document.querySelector(query) : el.querySelector(query); |
0 | 19 } |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
23
diff
changeset
|
20 function qall(query, el) |
0 | 21 { |
25
4d87c38404d6
List literals, fixes to implicit self property lookup, import statement and editor improvements
Mike Pavone <pavone@retrodev.com>
parents:
23
diff
changeset
|
22 return el === undefined ? document.querySelectorAll(query) : el.querySelectorAll(query); |
0 | 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 |
31
668f533e5284
Add initial version of C backend
Mike Pavone <pavone@retrodev.com>
parents:
25
diff
changeset
|
122 function setText(parent, text) |
668f533e5284
Add initial version of C backend
Mike Pavone <pavone@retrodev.com>
parents:
25
diff
changeset
|
123 { |
668f533e5284
Add initial version of C backend
Mike Pavone <pavone@retrodev.com>
parents:
25
diff
changeset
|
124 parent.innerHTML = ''; |
668f533e5284
Add initial version of C backend
Mike Pavone <pavone@retrodev.com>
parents:
25
diff
changeset
|
125 parent.appendChild(document.createTextNode(text)); |
668f533e5284
Add initial version of C backend
Mike Pavone <pavone@retrodev.com>
parents:
25
diff
changeset
|
126 return parent; |
668f533e5284
Add initial version of C backend
Mike Pavone <pavone@retrodev.com>
parents:
25
diff
changeset
|
127 } |
668f533e5284
Add initial version of C backend
Mike Pavone <pavone@retrodev.com>
parents:
25
diff
changeset
|
128 |