mix-language 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/mix-compile +26 -0
- data/lib/javascript/base/array.js +496 -0
- data/lib/javascript/base/env.js +83 -0
- data/lib/javascript/base/eval.js +419 -0
- data/lib/javascript/base/false.js +23 -0
- data/lib/javascript/base/function.js +95 -0
- data/lib/javascript/base/null.js +23 -0
- data/lib/javascript/base/number.js +251 -0
- data/lib/javascript/base/object.js +299 -0
- data/lib/javascript/base/string.js +75 -0
- data/lib/javascript/base/true.js +23 -0
- data/lib/javascript/dom/div.js +11 -0
- data/lib/javascript/dom/drag.js +211 -0
- data/lib/javascript/dom/element.js +307 -0
- data/lib/javascript/dom/event.js +113 -0
- data/lib/javascript/dom/mouse.js +16 -0
- data/lib/javascript/dom/table.js +11 -0
- data/lib/javascript/dom/td.js +18 -0
- data/lib/javascript/dom/text.js +73 -0
- data/lib/javascript/dom/tr.js +11 -0
- data/lib/ruby/compiler.rb +528 -0
- data/lib/ruby/mix.grammar +238 -0
- data/lib/ruby/mix.tab.rb +1396 -0
- metadata +78 -0
@@ -0,0 +1,211 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright © 2011 Jesse Sielaff
|
3
|
+
*/
|
4
|
+
|
5
|
+
function Element_draggable (self, args)
|
6
|
+
{
|
7
|
+
return Element_attribute(self, [new_string('draggable'), args[0]]);
|
8
|
+
}
|
9
|
+
|
10
|
+
function Element_drag (self, args)
|
11
|
+
{
|
12
|
+
return Element_on(self, [new_string('drag'), args[0]]);
|
13
|
+
}
|
14
|
+
|
15
|
+
function Element_drag_end (self, args)
|
16
|
+
{
|
17
|
+
return Element_on(self, [new_string('dragend'), args[0]]);
|
18
|
+
}
|
19
|
+
|
20
|
+
function Element_drag_enter (self, args)
|
21
|
+
{
|
22
|
+
return Element_on(self, [new_string('dragenter'), args[0]]);
|
23
|
+
}
|
24
|
+
|
25
|
+
function Element_drag_leave (self, args)
|
26
|
+
{
|
27
|
+
return Element_on(self, [new_string('dragleave'), args[0]]);
|
28
|
+
}
|
29
|
+
|
30
|
+
function Element_drag_over (self, args)
|
31
|
+
{
|
32
|
+
var func = args[0];
|
33
|
+
|
34
|
+
if (xself(self, ELEMENT_TYPE, "#on"))
|
35
|
+
{
|
36
|
+
return self;
|
37
|
+
}
|
38
|
+
|
39
|
+
var name = 'ondragover';
|
40
|
+
var node = self.value;
|
41
|
+
|
42
|
+
if (func === NULL)
|
43
|
+
{
|
44
|
+
node[name] = null;
|
45
|
+
return self;
|
46
|
+
}
|
47
|
+
|
48
|
+
if (xarg(func, FUNCTION_TYPE, "Element#on", "function"))
|
49
|
+
{
|
50
|
+
return self;
|
51
|
+
}
|
52
|
+
|
53
|
+
var body = func.value;
|
54
|
+
|
55
|
+
node[name] = function (event)
|
56
|
+
{
|
57
|
+
event = event || window.event;
|
58
|
+
|
59
|
+
if (event.preventDefault)
|
60
|
+
{
|
61
|
+
event.preventDefault();
|
62
|
+
}
|
63
|
+
|
64
|
+
event.returnValue = false;
|
65
|
+
|
66
|
+
body(self, [new_event(event)]);
|
67
|
+
|
68
|
+
return false;
|
69
|
+
}
|
70
|
+
|
71
|
+
return self;
|
72
|
+
}
|
73
|
+
|
74
|
+
function Element_drag_start (self, args)
|
75
|
+
{
|
76
|
+
var func = args[0];
|
77
|
+
|
78
|
+
if (xself(self, ELEMENT_TYPE, "#on"))
|
79
|
+
{
|
80
|
+
return self;
|
81
|
+
}
|
82
|
+
|
83
|
+
var name = 'ondragstart';
|
84
|
+
var node = self.value;
|
85
|
+
|
86
|
+
if (func === NULL)
|
87
|
+
{
|
88
|
+
node[name] = null;
|
89
|
+
return self;
|
90
|
+
}
|
91
|
+
|
92
|
+
if (xarg(func, FUNCTION_TYPE, "Element#on", "function"))
|
93
|
+
{
|
94
|
+
return self;
|
95
|
+
}
|
96
|
+
|
97
|
+
var body = func.value;
|
98
|
+
|
99
|
+
node[name] = function (event)
|
100
|
+
{
|
101
|
+
event = event || window.event;
|
102
|
+
event.__default_allowed__ = true;
|
103
|
+
event.dataTransfer.setData('text/plain', null);
|
104
|
+
|
105
|
+
body(self, [new_event(event)]);
|
106
|
+
|
107
|
+
return event.__default_allowed__;
|
108
|
+
}
|
109
|
+
|
110
|
+
return self;
|
111
|
+
}
|
112
|
+
|
113
|
+
function Element_drop (self, args)
|
114
|
+
{
|
115
|
+
return Element_on(self, [new_string('drop'), args[0]]);
|
116
|
+
}
|
117
|
+
|
118
|
+
function Event_drop_effect (self, args)
|
119
|
+
{
|
120
|
+
var str = args[0];
|
121
|
+
|
122
|
+
if (xself(self, EVENT_TYPE, "#drop_effect") || xarg(str, STRING_TYPE, "Event#drop_effect", "string"))
|
123
|
+
{
|
124
|
+
return self;
|
125
|
+
}
|
126
|
+
|
127
|
+
var dt = self.value.dataTransfer;
|
128
|
+
|
129
|
+
if (dt)
|
130
|
+
{
|
131
|
+
dt.dropEffect = str.value;
|
132
|
+
}
|
133
|
+
|
134
|
+
return self;
|
135
|
+
}
|
136
|
+
|
137
|
+
function Event_effect_allowed (self, args)
|
138
|
+
{
|
139
|
+
var str = args[0];
|
140
|
+
|
141
|
+
if (xself(self, EVENT_TYPE, "#effect_allowed") || xarg(str, STRING_TYPE, "Event#effect_allowed", "string"))
|
142
|
+
{
|
143
|
+
return self;
|
144
|
+
}
|
145
|
+
|
146
|
+
var dt = self.value.dataTransfer;
|
147
|
+
|
148
|
+
if (dt)
|
149
|
+
{
|
150
|
+
dt.effectAllowed = str.value;
|
151
|
+
}
|
152
|
+
|
153
|
+
return self;
|
154
|
+
}
|
155
|
+
|
156
|
+
function Event_get_data (self, args)
|
157
|
+
{
|
158
|
+
var str = args[0];
|
159
|
+
|
160
|
+
if (xself(self, EVENT_TYPE, "#get_data") || xarg(str, STRING_TYPE, "Event#get_data", "string"))
|
161
|
+
{
|
162
|
+
return NULL;
|
163
|
+
}
|
164
|
+
|
165
|
+
var dt = self.value.dataTransfer;
|
166
|
+
|
167
|
+
if (dt)
|
168
|
+
{
|
169
|
+
return new_string(dt.getData(str.__value__));
|
170
|
+
}
|
171
|
+
|
172
|
+
return NULL;
|
173
|
+
}
|
174
|
+
|
175
|
+
function Event_no_drop (self, args)
|
176
|
+
{
|
177
|
+
return Event_drop_effect(self, [new_string('none')]);
|
178
|
+
}
|
179
|
+
|
180
|
+
function Event_set_data (self, args)
|
181
|
+
{
|
182
|
+
var type = args[0];
|
183
|
+
var value = args[1];
|
184
|
+
|
185
|
+
if (xself(self, EVENT_TYPE, "#set_data") || xarg(str, STRING_TYPE, "Event#set_data", "string mime-type") || xarg(str, STRING_TYPE, "Event#set_data", "string value"))
|
186
|
+
{
|
187
|
+
return NULL;
|
188
|
+
}
|
189
|
+
|
190
|
+
var dt = self.value.dataTransfer;
|
191
|
+
|
192
|
+
if (dt)
|
193
|
+
{
|
194
|
+
dt.setData(type.value, value.value);
|
195
|
+
}
|
196
|
+
|
197
|
+
return self;
|
198
|
+
}
|
199
|
+
|
200
|
+
add_function(ELEMENT, 'draggable', Element_draggable, ['setting']);
|
201
|
+
add_function(ELEMENT, 'drag', Element_drag, ['function']);
|
202
|
+
add_function(ELEMENT, 'drag_end', Element_drag_end, ['function']);
|
203
|
+
add_function(ELEMENT, 'drag_enter', Element_drag_enter, ['function']);
|
204
|
+
add_function(ELEMENT, 'drag_leave', Element_drag_leave, ['function']);
|
205
|
+
add_function(ELEMENT, 'drag_over', Element_drag_over, ['function']);
|
206
|
+
add_function(ELEMENT, 'drag_start', Element_drag_start, ['function']);
|
207
|
+
add_function(ELEMENT, 'drop', Element_drop, ['function']);
|
208
|
+
add_function(EVENT, 'drop_effect', Event_drop_effect, ['setting']);
|
209
|
+
add_function(EVENT, 'effect_allowed', Event_effect_allowed, ['setting']);
|
210
|
+
add_function(EVENT, 'get_data', Event_get_data, ['mime_type']);
|
211
|
+
add_function(EVENT, 'no_drop', Event_no_drop, []);
|
@@ -0,0 +1,307 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright © 2011 Jesse Sielaff
|
3
|
+
*/
|
4
|
+
|
5
|
+
var ELEMENT =
|
6
|
+
{
|
7
|
+
functions: {}
|
8
|
+
}
|
9
|
+
|
10
|
+
copy_functions(ELEMENT, OBJECT);
|
11
|
+
|
12
|
+
var startup = function ()
|
13
|
+
{
|
14
|
+
var node = document.getElementById('mix-app');
|
15
|
+
|
16
|
+
if (node)
|
17
|
+
{
|
18
|
+
SELF = APP =
|
19
|
+
{
|
20
|
+
object_type: ELEMENT_TYPE,
|
21
|
+
functions: {},
|
22
|
+
data: {},
|
23
|
+
keys: [],
|
24
|
+
unknown: Object_bad_key,
|
25
|
+
value: node,
|
26
|
+
parent: NULL,
|
27
|
+
children: [],
|
28
|
+
}
|
29
|
+
|
30
|
+
copy_functions(APP, ELEMENT);
|
31
|
+
}
|
32
|
+
else
|
33
|
+
{
|
34
|
+
SELF = APP = new_object({}, []);
|
35
|
+
warn("Did not find element with id \"mix-app\"");
|
36
|
+
}
|
37
|
+
};
|
38
|
+
|
39
|
+
function new_element (element_type, fields, keys)
|
40
|
+
{
|
41
|
+
var node = document.createElement(element_type.tag_name);
|
42
|
+
var element =
|
43
|
+
{
|
44
|
+
object_type: ELEMENT_TYPE,
|
45
|
+
functions: {},
|
46
|
+
data: fields,
|
47
|
+
keys: keys,
|
48
|
+
unknown: Object_bad_key,
|
49
|
+
value: node,
|
50
|
+
parent: NULL,
|
51
|
+
children: []
|
52
|
+
}
|
53
|
+
|
54
|
+
copy_functions(element, ELEMENT);
|
55
|
+
copy_functions(element, element_type);
|
56
|
+
|
57
|
+
return element;
|
58
|
+
}
|
59
|
+
|
60
|
+
function Element_add_class (self, args)
|
61
|
+
{
|
62
|
+
var str = args[0];
|
63
|
+
|
64
|
+
if (xself(self, ELEMENT_TYPE, "#add_class") || xarg(str, STRING_TYPE, "#add_class", "string"))
|
65
|
+
{
|
66
|
+
return self;
|
67
|
+
}
|
68
|
+
|
69
|
+
var node = self.value;
|
70
|
+
var name = str.value.trim();
|
71
|
+
var classes = node.className.split(/\s+/);
|
72
|
+
var index = classes.indexOf(name);
|
73
|
+
|
74
|
+
if (index < 0)
|
75
|
+
{
|
76
|
+
classes.push(name);
|
77
|
+
node.className = classes.join(' ').trim();
|
78
|
+
}
|
79
|
+
|
80
|
+
return self;
|
81
|
+
}
|
82
|
+
|
83
|
+
function Element_attribute (self, args)
|
84
|
+
{
|
85
|
+
var str = args[0];
|
86
|
+
var setting = args[1];
|
87
|
+
|
88
|
+
if (xself(self, ELEMENT_TYPE, "#attribute") || xarg(str, null, "Element#attribute", "string"))
|
89
|
+
{
|
90
|
+
return self;
|
91
|
+
}
|
92
|
+
|
93
|
+
var name = str.value;
|
94
|
+
var node = self.value;
|
95
|
+
|
96
|
+
if (setting)
|
97
|
+
{
|
98
|
+
var value = call_function(setting, 'stringify', []).value;
|
99
|
+
|
100
|
+
node.setAttribute(name, value);
|
101
|
+
return self;
|
102
|
+
}
|
103
|
+
else
|
104
|
+
{
|
105
|
+
return new_string(node[name]);
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
109
|
+
function Element_empty_q (self, args)
|
110
|
+
{
|
111
|
+
if (xself(self, ELEMENT_TYPE, "#empty?"))
|
112
|
+
{
|
113
|
+
return NULL;
|
114
|
+
}
|
115
|
+
|
116
|
+
return (self.children.length === 0) ? TRUE : FALSE;
|
117
|
+
}
|
118
|
+
|
119
|
+
function Element_last (self, args)
|
120
|
+
{
|
121
|
+
if (xself(self, ELEMENT_TYPE, "#last"))
|
122
|
+
{
|
123
|
+
return NULL;
|
124
|
+
}
|
125
|
+
|
126
|
+
var elements = self.children;
|
127
|
+
var l = elements.length;
|
128
|
+
|
129
|
+
return (l === 0) ? NULL : elements[l - 1];
|
130
|
+
}
|
131
|
+
|
132
|
+
function Element_length (self, args)
|
133
|
+
{
|
134
|
+
if (xself(self, ELEMENT_TYPE, "#length"))
|
135
|
+
{
|
136
|
+
return NULL;
|
137
|
+
}
|
138
|
+
|
139
|
+
return new_number(self.children.length);
|
140
|
+
}
|
141
|
+
|
142
|
+
function Element_pop (self, args)
|
143
|
+
{
|
144
|
+
if (xself(self, ELEMENT_TYPE, "#pop"))
|
145
|
+
{
|
146
|
+
return NULL;
|
147
|
+
}
|
148
|
+
|
149
|
+
var elements = self.children;
|
150
|
+
|
151
|
+
if (elements.length === 0)
|
152
|
+
{
|
153
|
+
return NULL;
|
154
|
+
}
|
155
|
+
|
156
|
+
var element = elements.pop();
|
157
|
+
|
158
|
+
element.parent = NULL;
|
159
|
+
self.value.removeChild(element.value);
|
160
|
+
|
161
|
+
return element;
|
162
|
+
}
|
163
|
+
|
164
|
+
function Element_push (self, args)
|
165
|
+
{
|
166
|
+
var element = args[0];
|
167
|
+
|
168
|
+
if (xself(self, ELEMENT_TYPE, "#push") || xarg(element, null, "Element#push", "element or text"))
|
169
|
+
{
|
170
|
+
return self;
|
171
|
+
}
|
172
|
+
|
173
|
+
if (element.object_type !== TEXT_TYPE && element.object_type !== ELEMENT_TYPE)
|
174
|
+
{
|
175
|
+
warn("Ignoring Element#push;" + " expected element or text argument");
|
176
|
+
return self;
|
177
|
+
}
|
178
|
+
|
179
|
+
if (element.parent !== NULL)
|
180
|
+
{
|
181
|
+
call_function(element, 'release', []);
|
182
|
+
}
|
183
|
+
|
184
|
+
var e = self;
|
185
|
+
|
186
|
+
while (e !== NULL)
|
187
|
+
{
|
188
|
+
if (e === element)
|
189
|
+
{
|
190
|
+
warn("Ignoring attempt to nest element into itself");
|
191
|
+
return self;
|
192
|
+
}
|
193
|
+
|
194
|
+
e = e.parent;
|
195
|
+
}
|
196
|
+
|
197
|
+
var node = element.value;
|
198
|
+
|
199
|
+
element.parent = self;
|
200
|
+
self.children.push(element);
|
201
|
+
self.value.appendChild(node);
|
202
|
+
|
203
|
+
return self;
|
204
|
+
}
|
205
|
+
|
206
|
+
function Element_release (self, args)
|
207
|
+
{
|
208
|
+
if (xself(self, ELEMENT_TYPE, "#release"))
|
209
|
+
{
|
210
|
+
return self;
|
211
|
+
}
|
212
|
+
|
213
|
+
var parent = self.parent;
|
214
|
+
|
215
|
+
if (parent === NULL)
|
216
|
+
{
|
217
|
+
return self;
|
218
|
+
}
|
219
|
+
|
220
|
+
var node = self.value;
|
221
|
+
var parent_node = parent.value;
|
222
|
+
var index = parent.children.indexOf(self);
|
223
|
+
|
224
|
+
parent.children.splice(index, 1);
|
225
|
+
parent_node.removeChild(node);
|
226
|
+
self.parent = NULL;
|
227
|
+
|
228
|
+
return self;
|
229
|
+
}
|
230
|
+
|
231
|
+
function Element_remove_class (self, args)
|
232
|
+
{
|
233
|
+
var str = args[0];
|
234
|
+
|
235
|
+
if (xself(self, ELEMENT_TYPE, "#add_class") || xarg(str, STRING_TYPE, "#add_class", "string"))
|
236
|
+
{
|
237
|
+
return self;
|
238
|
+
}
|
239
|
+
|
240
|
+
var node = self.value;
|
241
|
+
var name = str.value.trim();
|
242
|
+
var classes = node.className.split(/\s+/);
|
243
|
+
var index = classes.indexOf(name);
|
244
|
+
|
245
|
+
while (index >= 0)
|
246
|
+
{
|
247
|
+
classes.splice(index, 1)
|
248
|
+
index = classes.indexOf(name);
|
249
|
+
}
|
250
|
+
|
251
|
+
node.className = classes.join(' ');
|
252
|
+
|
253
|
+
return self;
|
254
|
+
}
|
255
|
+
|
256
|
+
function Element_stringify (self, args)
|
257
|
+
{
|
258
|
+
if (xself(self, ELEMENT_TYPE, "#stringify"))
|
259
|
+
{
|
260
|
+
return self;
|
261
|
+
}
|
262
|
+
|
263
|
+
var node = self.value;
|
264
|
+
var id = node.id;
|
265
|
+
var classes = node.className
|
266
|
+
var string = node.nodeName;
|
267
|
+
|
268
|
+
string += (id) ? '#' + id : '';
|
269
|
+
|
270
|
+
if (classes !== "")
|
271
|
+
{
|
272
|
+
var class_names = classes.split(' ');
|
273
|
+
|
274
|
+
for (var i = 0, l = class_names.length; i < l; ++i)
|
275
|
+
{
|
276
|
+
string += '.' + class_names[i];
|
277
|
+
}
|
278
|
+
}
|
279
|
+
|
280
|
+
var fields = self.data;
|
281
|
+
var keys = self.keys;
|
282
|
+
|
283
|
+
for (var k, i = 0, l = keys.length; i < l; ++i)
|
284
|
+
{
|
285
|
+
k = keys[i];
|
286
|
+
|
287
|
+
string += ' ' + k + ':';
|
288
|
+
string += ' ' + call_function(fields[k], 'inspect', []).value;
|
289
|
+
|
290
|
+
if (i < l - 1)
|
291
|
+
{
|
292
|
+
string += ',';
|
293
|
+
}
|
294
|
+
}
|
295
|
+
|
296
|
+
return new_string('<' + string + '>');
|
297
|
+
}
|
298
|
+
|
299
|
+
add_function(ELEMENT, 'add_class', Element_add_class, ['string']);
|
300
|
+
add_function(ELEMENT, 'last', Element_last, []);
|
301
|
+
add_function(ELEMENT, 'length', Element_length, []);
|
302
|
+
add_function(ELEMENT, 'empty?', Element_empty_q, []);
|
303
|
+
add_function(ELEMENT, 'pop', Element_pop, []);
|
304
|
+
add_function(ELEMENT, 'push', Element_push, ['element']);
|
305
|
+
add_function(ELEMENT, 'release', Element_release, []);
|
306
|
+
add_function(ELEMENT, 'stringify', Element_stringify, []);
|
307
|
+
add_function(ELEMENT, 'remove_class', Element_remove_class, ['string']);
|
@@ -0,0 +1,113 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright © 2011 Jesse Sielaff
|
3
|
+
*/
|
4
|
+
|
5
|
+
var EVENT =
|
6
|
+
{
|
7
|
+
functions: {}
|
8
|
+
};
|
9
|
+
|
10
|
+
copy_functions(EVENT, OBJECT);
|
11
|
+
|
12
|
+
function new_event (value)
|
13
|
+
{
|
14
|
+
var ev =
|
15
|
+
{
|
16
|
+
object_type: EVENT_TYPE,
|
17
|
+
functions: {},
|
18
|
+
data: {},
|
19
|
+
value: value
|
20
|
+
};
|
21
|
+
|
22
|
+
copy_functions(ev, EVENT);
|
23
|
+
|
24
|
+
return ev;
|
25
|
+
}
|
26
|
+
|
27
|
+
function Element_on (self, args)
|
28
|
+
{
|
29
|
+
var str = args[0];
|
30
|
+
var func = args[1];
|
31
|
+
|
32
|
+
if (xself(self, ELEMENT_TYPE, "#on") || xarg(str, STRING_TYPE, "Element#on", "string"))
|
33
|
+
{
|
34
|
+
return self;
|
35
|
+
}
|
36
|
+
|
37
|
+
var name = 'on' + str.value;
|
38
|
+
var node = self.value;
|
39
|
+
|
40
|
+
if (func === NULL)
|
41
|
+
{
|
42
|
+
node[name] = null;
|
43
|
+
return self;
|
44
|
+
}
|
45
|
+
|
46
|
+
if (xarg(func, FUNCTION_TYPE, "Element#on", "function"))
|
47
|
+
{
|
48
|
+
return self;
|
49
|
+
}
|
50
|
+
|
51
|
+
var body = func.value;
|
52
|
+
|
53
|
+
node[name] = function (event)
|
54
|
+
{
|
55
|
+
event = event || window.event;
|
56
|
+
event.__default_allowed__ = true;
|
57
|
+
|
58
|
+
body(self, [new_event(event)]);
|
59
|
+
|
60
|
+
return event.__default_allowed__;
|
61
|
+
}
|
62
|
+
|
63
|
+
return self;
|
64
|
+
}
|
65
|
+
|
66
|
+
function Event_prevent_default (self, args)
|
67
|
+
{
|
68
|
+
if (xself(self, EVENT_TYPE, "#prevent_default"))
|
69
|
+
{
|
70
|
+
return self;
|
71
|
+
}
|
72
|
+
|
73
|
+
var event = self.value;
|
74
|
+
|
75
|
+
if (event.preventDefault)
|
76
|
+
{
|
77
|
+
event.preventDefault();
|
78
|
+
}
|
79
|
+
|
80
|
+
event.returnValue = false;
|
81
|
+
event.__default_allowed__ = false;
|
82
|
+
|
83
|
+
return self;
|
84
|
+
}
|
85
|
+
|
86
|
+
function Event_stop_bubbling (self, args)
|
87
|
+
{
|
88
|
+
if (xself(self, EVENT_TYPE, "#prevent_default"))
|
89
|
+
{
|
90
|
+
return self;
|
91
|
+
}
|
92
|
+
|
93
|
+
var event = self.value;
|
94
|
+
|
95
|
+
if (event.stopPropagation)
|
96
|
+
{
|
97
|
+
event.stopPropagation();
|
98
|
+
}
|
99
|
+
|
100
|
+
event.cancelBubble = true;
|
101
|
+
|
102
|
+
return self;
|
103
|
+
}
|
104
|
+
|
105
|
+
function Event_stringify (self, args)
|
106
|
+
{
|
107
|
+
return new_string('<event>');
|
108
|
+
}
|
109
|
+
|
110
|
+
add_function(EVENT, 'inspect', Event_stringify, []);
|
111
|
+
add_function(EVENT, 'prevent_default', Event_prevent_default, []);
|
112
|
+
add_function(EVENT, 'stop_bubbling', Event_stop_bubbling, []);
|
113
|
+
add_function(EVENT, 'stringify', Event_stringify, []);
|
@@ -0,0 +1,16 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright © 2011 Jesse Sielaff
|
3
|
+
*/
|
4
|
+
|
5
|
+
function Element_click (self, args)
|
6
|
+
{
|
7
|
+
return Element_on(self, [new_string('click'), args[0]]);
|
8
|
+
}
|
9
|
+
|
10
|
+
function Element_double_click (self, args)
|
11
|
+
{
|
12
|
+
return Element_on(self, [new_string('dblclick'), args[0]]);
|
13
|
+
}
|
14
|
+
|
15
|
+
add_function(ELEMENT, 'click', Element_click, ['function']);
|
16
|
+
add_function(ELEMENT, 'double_click', Element_double_click, ['function']);
|
@@ -0,0 +1,18 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright © 2011 Jesse Sielaff
|
3
|
+
*/
|
4
|
+
|
5
|
+
var TD =
|
6
|
+
{
|
7
|
+
functions: {},
|
8
|
+
tag_name: 'td'
|
9
|
+
};
|
10
|
+
|
11
|
+
HTML_TYPES['Td'] = TD;
|
12
|
+
|
13
|
+
function Td_colspan (self, args)
|
14
|
+
{
|
15
|
+
return Element_attribute(self, [new_string('colspan'), args[0]]);
|
16
|
+
}
|
17
|
+
|
18
|
+
add_function(TD, 'colspan', Td_colspan, ['string','(setting)']);
|