opal 0.3.10 → 0.3.11

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/runtime/runtime.js DELETED
@@ -1,345 +0,0 @@
1
- /**
2
- All methods and properties available to ruby/js sources at runtime. These
3
- are kept in their own namespace to keep the opal namespace clean.
4
- */
5
- var Rt = Op.runtime = {};
6
-
7
- Rt.opal = Op;
8
-
9
- /**
10
- Opal platform - this is overriden in gem context and nodejs context. These
11
- are the default values used in the browser, `opal-browser'.
12
- */
13
- var PLATFORM_PLATFORM = "opal";
14
- var PLATFORM_ENGINE = "opal-browser";
15
- var PLATFORM_VERSION = "1.9.2";
16
- var PLATFORM_ARGV = [];
17
-
18
- // Minimize js types
19
- var ArrayProto = Array.prototype,
20
- ObjectProto = Object.prototype,
21
-
22
- ArraySlice = ArrayProto.slice,
23
-
24
- hasOwnProperty = ObjectProto.hasOwnProperty;
25
-
26
- /**
27
- Core runtime classes, objects and literals.
28
- */
29
- var rb_cBasirb_cObject, rb_cObject, rb_cModule, rb_cClass,
30
- rb_mKernel, rb_cNilClass, rb_cBoolean,
31
- rb_cArray, rb_cNumeric,
32
- rb_cRegexp, rb_cMatch, rb_top_self, Qnil,
33
-
34
- rb_cDir;
35
-
36
- /**
37
- Core object type flags. Added as local variables, and onto runtime.
38
- */
39
- var T_CLASS = 1,
40
- T_MODULE = 2,
41
- T_OBJECT = 4,
42
- T_BOOLEAN = 8,
43
- T_STRING = 16,
44
- T_ARRAY = 32,
45
- T_NUMBER = 64,
46
- T_PROC = 128,
47
- T_SYMBOL = 256,
48
- T_HASH = 512,
49
- T_RANGE = 1024,
50
- T_ICLASS = 2056,
51
- FL_SINGLETON = 4112;
52
-
53
- /**
54
- Define classes. This is the public API for defining classes, shift classes
55
- and modules.
56
-
57
- @param {RubyObject} base
58
- @param {RClass} super_class
59
- @param {String} id
60
- @param {Function} body
61
- @param {Number} flag
62
- */
63
- Rt.dc = function(base, super_class, id, body, flag) {
64
- var klass;
65
-
66
- switch (flag) {
67
- case 0:
68
- if (base.$f & T_OBJECT) {
69
- base = rb_class_real(base.$k);
70
- }
71
-
72
- if (super_class == Qnil) {
73
- super_class = rb_cObject;
74
- }
75
-
76
- klass = rb_define_class_under(base, id, super_class);
77
- break;
78
-
79
- case 1:
80
- klass = rb_singleton_class(base);
81
- break;
82
-
83
- case 2:
84
- if (base.$f & T_OBJECT) {
85
- base = rb_class_real(base.$k);
86
- }
87
- klass = rb_define_module_under(base, id);
88
- break;
89
-
90
- default:
91
- rb_raise(rb_eException, "define_class got a unknown flag " + flag);
92
- }
93
-
94
- var res = body(klass);
95
-
96
- return res;
97
- };
98
-
99
- /**
100
- Regexp object. This holds the results of last regexp match.
101
- X for regeXp.
102
- */
103
- Rt.X = null;
104
-
105
- /**
106
- Undefine methods
107
- */
108
- Rt.um = function(kls) {
109
- var args = [].slice.call(arguments, 1);
110
-
111
- for (var i = 0, ii = args.length; i < ii; i++) {
112
- (function(mid) {
113
- var func = function() {
114
- rb_raise(rb_eNoMethodError, "undefined method `" + mid + "' for " + this.m$inspect());
115
- };
116
-
117
- kls.o$a.prototype['m$' + mid] = func;
118
-
119
- })(args[i].m$to_s());
120
- }
121
-
122
- return Qnil;
123
- };
124
-
125
- /**
126
- Define methods. Public method for defining a method on the given base.
127
-
128
- @param {Object} klass The base to define method on
129
- @param {String} name Ruby mid
130
- @param {Function} body The method implementation
131
- @param {Number} arity Method arity
132
- @return {Qnil}
133
- */
134
- Rt.dm = function(klass, name, body, arity) {
135
- if (klass.$f & T_OBJECT) {
136
- klass = klass.$k;
137
- }
138
-
139
- if (!body.$rbName) {
140
- body.$rbName = name;
141
- body.$arity = arity;
142
- }
143
-
144
- rb_define_raw_method(klass, 'm$' + name, body);
145
- klass.$methods.push(name);
146
-
147
- return Qnil;
148
- };
149
-
150
- /**
151
- Define singleton method.
152
-
153
- @param {Object} base The base to define method on
154
- @param {String} method_id Method id
155
- @param {Function} body Method implementation
156
- @param {Number} arity Method arity
157
- @return {Qnil}
158
- */
159
- Rt.ds = function(base, method_id, body, arity) {
160
- return Rt.dm(rb_singleton_class(base), method_id, body);
161
- };
162
-
163
- /**
164
- Call a super method.
165
-
166
- callee is the function that actually called super(). We use this to find
167
- the right place in the tree to find the method that actually called super.
168
- This is actually done in super_find.
169
- */
170
- Rt.S = function(callee, self, args) {
171
- var mid = 'm$' + callee.$rbName;
172
- var func = rb_super_find(self.$k, callee, mid);
173
-
174
- if (!func) {
175
- rb_raise(rb_eNoMethodError, "super: no super class method `" + mid + "`" +
176
- " for " + self.m$inspect());
177
- }
178
-
179
- // var args_to_send = [self].concat(args);
180
- var args_to_send = [].concat(args);
181
- return func.apply(self, args_to_send);
182
- };
183
-
184
- /**
185
- Actually find super impl to call. Returns null if cannot find it.
186
- */
187
- function rb_super_find(klass, callee, mid) {
188
- var cur_method;
189
-
190
- while (klass) {
191
- if (klass.$m[mid]) {
192
- if (klass.$m[mid] == callee) {
193
- cur_method = klass.$m[mid];
194
- break;
195
- }
196
- }
197
- klass = klass.$s;
198
- }
199
-
200
- if (!(klass && cur_method)) { return null; }
201
-
202
- klass = klass.$s;
203
-
204
- while (klass) {
205
- if (klass.$m[mid]) {
206
- return klass.$m[mid];
207
- }
208
-
209
- klass = klass.$s;
210
- }
211
-
212
- return null;
213
- };
214
-
215
- /**
216
- Exception classes. Some of these are used by runtime so they are here for
217
- convenience.
218
- */
219
- var rb_eException, rb_eStandardError, rb_eLocalJumpError, rb_eNameError,
220
- rb_eNoMethodError, rb_eArgError, rb_eScriptError, rb_eLoadError,
221
- rb_eRuntimeError, rb_eTypeError, rb_eIndexError, rb_eKeyError,
222
- rb_eRangeError;
223
-
224
- var rb_eExceptionInstance;
225
-
226
- /**
227
- Standard jump exceptions to save re-creating them everytime they are needed
228
- */
229
- var rb_eReturnInstance,
230
- rb_eBreakInstance,
231
- rb_eNextInstance;
232
-
233
- /**
234
- Ruby break statement with the given value. When no break value is needed, nil
235
- should be passed here. An undefined/null value is not valid and will cause an
236
- internal error.
237
-
238
- @param {RubyObject} value The break value.
239
- */
240
- Rt.B = function(value) {
241
- rb_eBreakInstance.$value = value;
242
- rb_raise_exc(rb_eBreakInstance);
243
- };
244
-
245
- /**
246
- Ruby return, with the given value. The func is the reference function which
247
- represents the method that this statement must return from.
248
- */
249
- Rt.R = function(value, func) {
250
- rb_eReturnInstance.$value = value;
251
- rb_eReturnInstance.$func = func;
252
- throw rb_eReturnInstance;
253
- };
254
-
255
- /**
256
- Get the given constant name from the given base
257
- */
258
- Rt.cg = function(base, id) {
259
- if (base.$f & T_OBJECT) {
260
- base = rb_class_real(base.$k);
261
- }
262
- return rb_const_get(base, id);
263
- };
264
-
265
- /**
266
- Set constant from runtime
267
- */
268
- Rt.cs = function(base, id, val) {
269
- if (base.$f & T_OBJECT) {
270
- base = rb_class_real(base.$k);
271
- }
272
- return rb_const_set(base, id, val);
273
- };
274
-
275
- /**
276
- Get global by id
277
- */
278
- Rt.gg = function(id) {
279
- return rb_gvar_get(id);
280
- };
281
-
282
- /**
283
- Set global by id
284
- */
285
- Rt.gs = function(id, value) {
286
- return rb_gvar_set(id, value);
287
- };
288
-
289
- /**
290
- Class variables table
291
- */
292
- var rb_class_variables = {};
293
-
294
- Rt.cvg = function(id) {
295
- var v = rb_class_variables[id];
296
-
297
- if (v) return v;
298
-
299
- return Qnil;
300
- };
301
-
302
- Rt.cvs = function(id, val) {
303
- return rb_class_variables[id] = val;
304
- };
305
-
306
- function rb_regexp_match_getter(id) {
307
- var matched = Rt.X;
308
-
309
- if (matched) {
310
- if (matched.$md) {
311
- return matched.$md;
312
- } else {
313
- var res = new cMatch.o$a();
314
- res.$data = matched;
315
- matched.$md = res;
316
- return res;
317
- }
318
- } else {
319
- return Qnil;
320
- }
321
- }
322
-
323
- /**
324
- An array of procs to call for at_exit()
325
-
326
- @param {Function} proc implementation
327
- */
328
- var rb_end_procs = [];
329
-
330
- /**
331
- Called upon exit: we need to run all of our registered procs
332
- in reverse order: i.e. call last ones first.
333
-
334
- FIXME: do we need to try/catch this??
335
- */
336
- Rt.do_at_exit = function() {
337
- var proc;
338
-
339
- while (proc = rb_end_procs.pop()) {
340
- proc.call(proc.$self);
341
- }
342
-
343
- return null;
344
- };
345
-