opal 0.3.15 → 0.3.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (236) hide show
  1. data/.gitignore +1 -1
  2. data/Gemfile +8 -2
  3. data/README.md +1 -1
  4. data/Rakefile +51 -57
  5. data/bin/opal +50 -2
  6. data/{runtime/corelib → core}/alpha.rb +6 -1
  7. data/{runtime/corelib → core}/array.rb +38 -42
  8. data/{runtime/corelib → core}/basic_object.rb +6 -17
  9. data/core/boolean.rb +40 -0
  10. data/core/class.rb +69 -0
  11. data/{runtime/corelib → core}/comparable.rb +0 -0
  12. data/core/debug.js +59 -0
  13. data/core/debug.rb +35 -0
  14. data/core/dir.rb +90 -0
  15. data/core/enumerable.rb +331 -0
  16. data/core/enumerator.rb +126 -0
  17. data/core/error.rb +40 -0
  18. data/{runtime/corelib → core}/file.rb +6 -3
  19. data/core/gemlib.rb +30 -0
  20. data/{runtime/corelib → core}/hash.rb +37 -35
  21. data/{runtime/corelib → core}/io.rb +0 -0
  22. data/{runtime/corelib → core}/kernel.rb +26 -21
  23. data/{runtime/corelib → core}/load_order +2 -5
  24. data/{runtime/corelib → core}/match_data.rb +2 -4
  25. data/core/module.rb +204 -0
  26. data/{runtime/corelib → core}/nil_class.rb +1 -7
  27. data/{runtime/corelib → core}/numeric.rb +9 -13
  28. data/core/object.rb +17 -0
  29. data/{runtime/corelib → core}/proc.rb +2 -13
  30. data/{runtime/corelib → core}/range.rb +19 -7
  31. data/{runtime/corelib → core}/rational.rb +0 -0
  32. data/{runtime/corelib → core}/regexp.rb +2 -6
  33. data/core/runtime.js +672 -0
  34. data/{runtime/corelib → core}/string.rb +25 -9
  35. data/{runtime/corelib → core}/struct.rb +0 -0
  36. data/core/time.rb +111 -0
  37. data/{runtime/corelib → core}/top_self.rb +0 -0
  38. data/{runtime/spec → core_spec}/README.md +0 -0
  39. data/{runtime/spec → core_spec}/core/array/allocate_spec.rb +0 -0
  40. data/{runtime/spec → core_spec}/core/array/append_spec.rb +0 -0
  41. data/{runtime/spec → core_spec}/core/array/assoc_spec.rb +0 -0
  42. data/{runtime/spec → core_spec}/core/array/at_spec.rb +0 -0
  43. data/{runtime/spec → core_spec}/core/array/clear_spec.rb +0 -0
  44. data/{runtime/spec → core_spec}/core/array/collect_spec.rb +0 -0
  45. data/{runtime/spec → core_spec}/core/array/compact_spec.rb +0 -0
  46. data/{runtime/spec → core_spec}/core/array/concat_spec.rb +0 -0
  47. data/{runtime/spec → core_spec}/core/array/constructor_spec.rb +0 -0
  48. data/{runtime/spec → core_spec}/core/array/count_spec.rb +0 -0
  49. data/{runtime/spec → core_spec}/core/array/delete_at_spec.rb +0 -0
  50. data/{runtime/spec → core_spec}/core/array/delete_if_spec.rb +0 -0
  51. data/{runtime/spec → core_spec}/core/array/delete_spec.rb +0 -0
  52. data/{runtime/spec → core_spec}/core/array/each_index_spec.rb +0 -0
  53. data/{runtime/spec → core_spec}/core/array/each_spec.rb +0 -0
  54. data/{runtime/spec → core_spec}/core/array/element_reference_spec.rb +0 -0
  55. data/{runtime/spec → core_spec}/core/array/element_set_spec.rb +0 -0
  56. data/{runtime/spec → core_spec}/core/array/empty_spec.rb +0 -0
  57. data/{runtime/spec → core_spec}/core/array/eql_spec.rb +0 -0
  58. data/{runtime/spec → core_spec}/core/array/equal_value_spec.rb +0 -0
  59. data/{runtime/spec → core_spec}/core/array/fetch_spec.rb +0 -0
  60. data/{runtime/spec → core_spec}/core/array/first_spec.rb +0 -0
  61. data/{runtime/spec → core_spec}/core/array/fixtures/classes.rb +0 -0
  62. data/{runtime/spec → core_spec}/core/array/flatten_spec.rb +0 -0
  63. data/{runtime/spec → core_spec}/core/array/include_spec.rb +0 -0
  64. data/{runtime/spec → core_spec}/core/array/insert_spec.rb +0 -0
  65. data/{runtime/spec → core_spec}/core/array/last_spec.rb +0 -0
  66. data/{runtime/spec → core_spec}/core/array/length_spec.rb +0 -0
  67. data/{runtime/spec → core_spec}/core/array/map_spec.rb +0 -0
  68. data/{runtime/spec → core_spec}/core/array/plus_spec.rb +0 -0
  69. data/{runtime/spec → core_spec}/core/array/pop_spec.rb +0 -0
  70. data/{runtime/spec → core_spec}/core/array/push_spec.rb +0 -0
  71. data/{runtime/spec → core_spec}/core/array/rassoc_spec.rb +0 -0
  72. data/{runtime/spec → core_spec}/core/array/reject_spec.rb +0 -0
  73. data/{runtime/spec → core_spec}/core/array/replace_spec.rb +0 -0
  74. data/{runtime/spec → core_spec}/core/array/reverse_each_spec.rb +0 -0
  75. data/{runtime/spec → core_spec}/core/array/reverse_spec.rb +0 -0
  76. data/{runtime/spec → core_spec}/core/array/shared/collect.rb +0 -0
  77. data/{runtime/spec → core_spec}/core/array/shared/eql.rb +0 -0
  78. data/{runtime/spec → core_spec}/core/array/shared/length.rb +0 -0
  79. data/{runtime/spec → core_spec}/core/array/shared/replace.rb +0 -0
  80. data/{runtime/spec → core_spec}/core/class/new_spec.rb +0 -0
  81. data/{runtime/spec → core_spec}/core/enumerable/all_spec.rb +0 -0
  82. data/{runtime/spec → core_spec}/core/enumerable/any_spec.rb +0 -0
  83. data/{runtime/spec → core_spec}/core/enumerable/collect_spec.rb +0 -0
  84. data/{runtime/spec → core_spec}/core/enumerable/count_spec.rb +0 -0
  85. data/{runtime/spec → core_spec}/core/enumerable/detect_spec.rb +0 -0
  86. data/{runtime/spec → core_spec}/core/enumerable/find_spec.rb +0 -0
  87. data/core_spec/core/enumerable/first_spec.rb +3 -0
  88. data/{runtime/spec → core_spec}/core/enumerable/fixtures/classes.rb +0 -0
  89. data/{runtime/spec → core_spec}/core/enumerable/shared/collect.rb +0 -0
  90. data/{runtime/spec → core_spec}/core/enumerable/shared/entries.rb +0 -0
  91. data/{runtime/spec → core_spec}/core/enumerable/shared/find.rb +0 -0
  92. data/core_spec/core/enumerable/shared/take.rb +31 -0
  93. data/{runtime/spec → core_spec}/core/enumerable/to_a_spec.rb +0 -0
  94. data/{runtime/spec → core_spec}/core/false/and_spec.rb +0 -0
  95. data/{runtime/spec → core_spec}/core/false/inspect_spec.rb +0 -0
  96. data/{runtime/spec → core_spec}/core/false/or_spec.rb +0 -0
  97. data/{runtime/spec → core_spec}/core/false/to_s_spec.rb +0 -0
  98. data/{runtime/spec → core_spec}/core/false/xor_spec.rb +0 -0
  99. data/{runtime/spec → core_spec}/core/hash/allocate_spec.rb +0 -0
  100. data/{runtime/spec → core_spec}/core/hash/assoc_spec.rb +0 -0
  101. data/{runtime/spec → core_spec}/core/hash/clear_spec.rb +0 -0
  102. data/{runtime/spec → core_spec}/core/hash/clone_spec.rb +0 -0
  103. data/{runtime/spec → core_spec}/core/hash/default_spec.rb +0 -0
  104. data/{runtime/spec → core_spec}/core/hash/delete_if_spec.rb +0 -0
  105. data/{runtime/spec → core_spec}/core/hash/element_reference_spec.rb +0 -0
  106. data/{runtime/spec → core_spec}/core/hash/element_set_spec.rb +0 -0
  107. data/{runtime/spec → core_spec}/core/hash/new_spec.rb +0 -0
  108. data/{runtime/spec → core_spec}/core/matchdata/to_a_spec.rb +0 -0
  109. data/{runtime/spec → core_spec}/core/nil/and_spec.rb +0 -0
  110. data/{runtime/spec → core_spec}/core/nil/inspect_spec.rb +0 -0
  111. data/{runtime/spec → core_spec}/core/nil/nil_spec.rb +0 -0
  112. data/{runtime/spec → core_spec}/core/nil/or_spec.rb +0 -0
  113. data/{runtime/spec → core_spec}/core/nil/to_a_spec.rb +0 -0
  114. data/{runtime/spec → core_spec}/core/nil/to_f_spec.rb +0 -0
  115. data/{runtime/spec → core_spec}/core/nil/to_i_spec.rb +0 -0
  116. data/{runtime/spec → core_spec}/core/nil/to_s_spec.rb +0 -0
  117. data/{runtime/spec → core_spec}/core/nil/xor_spec.rb +0 -0
  118. data/{runtime/spec → core_spec}/core/numeric/equal_value_spec.rb +0 -0
  119. data/{runtime/spec → core_spec}/core/object/is_a_spec.rb +0 -0
  120. data/{runtime/spec → core_spec}/core/object/shared/kind_of.rb +0 -0
  121. data/{runtime/spec → core_spec}/core/regexp/match_spec.rb +0 -0
  122. data/{runtime/spec → core_spec}/core/regexp/shared/match.rb +0 -0
  123. data/{runtime/spec → core_spec}/core/symbol/to_proc_spec.rb +0 -0
  124. data/{runtime/spec → core_spec}/core/true/and_spec.rb +0 -0
  125. data/{runtime/spec → core_spec}/core/true/inspect_spec.rb +0 -0
  126. data/{runtime/spec → core_spec}/core/true/or_spec.rb +0 -0
  127. data/{runtime/spec → core_spec}/core/true/to_s_spec.rb +0 -0
  128. data/{runtime/spec → core_spec}/core/true/xor_spec.rb +0 -0
  129. data/{runtime/spec → core_spec}/language/alias_spec.rb +0 -0
  130. data/{runtime/spec → core_spec}/language/and_spec.rb +0 -0
  131. data/{runtime/spec → core_spec}/language/array_spec.rb +0 -0
  132. data/{runtime/spec → core_spec}/language/block_spec.rb +0 -0
  133. data/{runtime/spec → core_spec}/language/break_spec.rb +0 -0
  134. data/{runtime/spec → core_spec}/language/case_spec.rb +0 -0
  135. data/{runtime/spec → core_spec}/language/defined_spec.rb +0 -0
  136. data/{runtime/spec → core_spec}/language/ensure_spec.rb +0 -0
  137. data/{runtime/spec → core_spec}/language/fixtures/block.rb +0 -0
  138. data/{runtime/spec → core_spec}/language/fixtures/break.rb +0 -0
  139. data/{runtime/spec → core_spec}/language/fixtures/defined.rb +0 -0
  140. data/{runtime/spec → core_spec}/language/fixtures/ensure.rb +0 -0
  141. data/{runtime/spec → core_spec}/language/fixtures/next.rb +0 -0
  142. data/{runtime/spec → core_spec}/language/fixtures/send.rb +0 -0
  143. data/{runtime/spec → core_spec}/language/fixtures/super.rb +0 -0
  144. data/{runtime/spec → core_spec}/language/hash_spec.rb +0 -0
  145. data/{runtime/spec → core_spec}/language/if_spec.rb +0 -0
  146. data/{runtime/spec → core_spec}/language/loop_spec.rb +0 -0
  147. data/{runtime/spec → core_spec}/language/next_spec.rb +0 -0
  148. data/{runtime/spec → core_spec}/language/or_spec.rb +0 -0
  149. data/{runtime/spec → core_spec}/language/predefined_spec.rb +0 -0
  150. data/{runtime/spec → core_spec}/language/regexp/interpolation_spec.rb +8 -0
  151. data/{runtime/spec → core_spec}/language/regexp_spec.rb +0 -0
  152. data/{runtime/spec → core_spec}/language/send_spec.rb +0 -0
  153. data/{runtime/spec → core_spec}/language/string_spec.rb +0 -0
  154. data/{runtime/spec → core_spec}/language/super_spec.rb +0 -0
  155. data/{runtime/spec → core_spec}/language/symbol_spec.rb +0 -0
  156. data/{runtime/spec → core_spec}/language/undef_spec.rb +0 -0
  157. data/{runtime/spec → core_spec}/language/unless_spec.rb +0 -0
  158. data/{runtime/spec → core_spec}/language/until_spec.rb +0 -0
  159. data/core_spec/language/variables_spec.rb +112 -0
  160. data/{runtime/spec → core_spec}/language/versions/hash_1.9.rb +0 -0
  161. data/{runtime/spec → core_spec}/language/while_spec.rb +0 -0
  162. data/{runtime/spec → core_spec}/opal/opal/defined_spec.rb +0 -0
  163. data/{runtime/spec → core_spec}/opal/opal/function_spec.rb +0 -0
  164. data/{runtime/spec → core_spec}/opal/opal/native_spec.rb +0 -0
  165. data/{runtime/spec → core_spec}/opal/opal/null_spec.rb +0 -0
  166. data/{runtime/spec → core_spec}/opal/opal/number_spec.rb +0 -0
  167. data/{runtime/spec → core_spec}/opal/opal/object_spec.rb +0 -0
  168. data/{runtime/spec → core_spec}/opal/opal/string_spec.rb +0 -0
  169. data/{runtime/spec → core_spec}/opal/opal/typeof_spec.rb +0 -0
  170. data/{runtime/spec → core_spec}/opal/opal/undefined_spec.rb +0 -0
  171. data/{runtime/spec → core_spec}/opal/true/case_compare_spec.rb +0 -0
  172. data/{runtime/spec → core_spec}/opal/true/class_spec.rb +0 -0
  173. data/{docs/spec_runner.html → core_spec/release_runner.html} +4 -3
  174. data/core_spec/runner.html +16 -0
  175. data/core_spec/spec_helper.rb +23 -0
  176. data/lib/opal.rb +85 -2
  177. data/lib/opal/builder.rb +129 -46
  178. data/lib/opal/context.rb +47 -26
  179. data/lib/opal/dependency_builder.rb +113 -14
  180. data/lib/opal/environment.rb +40 -45
  181. data/lib/opal/parser/grammar.rb +2296 -2254
  182. data/lib/opal/parser/grammar.y +27 -8
  183. data/lib/opal/parser/lexer.rb +12 -3
  184. data/lib/opal/parser/parser.rb +117 -30
  185. data/lib/opal/parser/scope.rb +2 -2
  186. data/lib/opal/version.rb +1 -1
  187. data/opal.gemspec +3 -8
  188. data/spec/grammar/masgn_spec.rb +37 -0
  189. metadata +177 -227
  190. data/index.html +0 -434
  191. data/lib/opal/command.rb +0 -73
  192. data/runtime/README.md +0 -25
  193. data/runtime/corelib/boolean.rb +0 -44
  194. data/runtime/corelib/class.rb +0 -43
  195. data/runtime/corelib/complex.rb +0 -2
  196. data/runtime/corelib/dir.rb +0 -29
  197. data/runtime/corelib/enumerable.rb +0 -316
  198. data/runtime/corelib/enumerator.rb +0 -80
  199. data/runtime/corelib/error.rb +0 -25
  200. data/runtime/corelib/module.rb +0 -171
  201. data/runtime/corelib/native.rb +0 -50
  202. data/runtime/corelib/object.rb +0 -21
  203. data/runtime/corelib/time.rb +0 -196
  204. data/runtime/gemlib/alpha.rb +0 -5
  205. data/runtime/gemlib/kernel.rb +0 -17
  206. data/runtime/gemlib/load_order +0 -2
  207. data/runtime/kernel/class.js +0 -256
  208. data/runtime/kernel/debug.js +0 -42
  209. data/runtime/kernel/init.js +0 -114
  210. data/runtime/kernel/load_order +0 -5
  211. data/runtime/kernel/loader.js +0 -151
  212. data/runtime/kernel/runtime.js +0 -414
  213. data/runtime/spec/language/variables_spec.rb +0 -28
  214. data/runtime/spec/library/stringscanner/scan_spec.rb +0 -36
  215. data/runtime/spec/opal/forwardable/def_instance_delegator_spec.rb +0 -49
  216. data/runtime/spec/spec_helper.rb +0 -25
  217. data/runtime/stdlib/base64.rb +0 -91
  218. data/runtime/stdlib/date.rb +0 -4
  219. data/runtime/stdlib/dev.rb +0 -171
  220. data/runtime/stdlib/forwardable.rb +0 -33
  221. data/runtime/stdlib/optparse.rb +0 -0
  222. data/runtime/stdlib/pp.rb +0 -6
  223. data/runtime/stdlib/racc/parser.rb +0 -159
  224. data/runtime/stdlib/rbconfig.rb +0 -0
  225. data/runtime/stdlib/si.rb +0 -17
  226. data/runtime/stdlib/strscan.rb +0 -53
  227. data/runtime/stdlib/uri.rb +0 -111
  228. data/runtime/stdlib/uri/common.rb +0 -1014
  229. data/runtime/stdlib/uri/ftp.rb +0 -261
  230. data/runtime/stdlib/uri/generic.rb +0 -1599
  231. data/runtime/stdlib/uri/http.rb +0 -106
  232. data/runtime/stdlib/uri/https.rb +0 -22
  233. data/runtime/stdlib/uri/ldap.rb +0 -260
  234. data/runtime/stdlib/uri/ldaps.rb +0 -20
  235. data/runtime/stdlib/uri/mailto.rb +0 -280
  236. data/spec/builder/output_path_spec.rb +0 -50
@@ -1,5 +0,0 @@
1
- # In gem, use 'opal-ruby'. Browser uses 'opal-browser'.
2
- RUBY_ENGINE = 'opal-ruby'
3
-
4
- # Gvars do not currently support aliasing - so we need to change both.
5
- $: = $LOAD_PATH = `opal_filesystem.find_paths`
@@ -1,17 +0,0 @@
1
- module Kernel
2
- def require(path)
3
- %x{
4
- var resolved = opal_filesystem.require(#{path}, #{$:});
5
-
6
- if (resolved === false) {
7
- return false;
8
- }
9
- else if (!resolved) {
10
- #{ raise LoadError, "cannot load file -- #{path}" };
11
- }
12
- else {
13
- return true;
14
- }
15
- }
16
- end
17
- end
@@ -1,2 +0,0 @@
1
- alpha
2
- kernel
@@ -1,256 +0,0 @@
1
- // Root of all objects and classes inside opal
2
- function RootObject() {};
3
-
4
- RootObject.prototype.toString = function() {
5
- if (this.$flags & T_OBJECT) {
6
- return "#<" + (this.$klass).__classid__ + ":0x" + this.$id + ">";
7
- }
8
- else {
9
- return '<' + this.__classid__ + ' ' + this.$id + '>';
10
- }
11
- };
12
-
13
- // Boot a base class (makes instances).
14
- function boot_defclass(superklass) {
15
- var cls = function() {
16
- this.$id = unique_id++;
17
-
18
- return this;
19
- };
20
-
21
- if (superklass) {
22
- var ctor = function() {};
23
- ctor.prototype = superklass.prototype;
24
-
25
- cls.prototype = new ctor();
26
- }
27
- else {
28
- cls.prototype = new RootObject();
29
- }
30
-
31
- cls.prototype.constructor = cls;
32
- cls.prototype.$flags = T_OBJECT;
33
-
34
- return cls;
35
- }
36
-
37
- // Boot actual (meta classes) of core objects.
38
- function boot_makemeta(id, klass, superklass) {
39
- var meta = function() {
40
- this.$id = unique_id++;
41
-
42
- return this;
43
- };
44
-
45
- var ctor = function() {};
46
- ctor.prototype = superklass.prototype;
47
-
48
- meta.prototype = new ctor();
49
-
50
- var proto = meta.prototype;
51
- proto.$included_in = [];
52
- proto.$m = {};
53
- proto.$methods = [];
54
- proto.$allocator = klass;
55
- proto.$flags = T_CLASS;
56
- proto.__classid__ = id;
57
- proto.$s = superklass;
58
- proto.constructor = meta;
59
-
60
- var result = new meta();
61
- klass.prototype.$klass = result;
62
- result.$proto = klass.prototype;
63
-
64
- return result;
65
- }
66
-
67
- // Create generic class with given superclass.
68
- function boot_class(superklass) {
69
- // instances
70
- var cls = function() {
71
- this.$id = unique_id++;
72
-
73
- return this;
74
- };
75
-
76
- var ctor = function() {};
77
- ctor.prototype = superklass.$allocator.prototype;
78
-
79
- cls.prototype = new ctor();
80
-
81
- var proto = cls.prototype;
82
- proto.constructor = cls;
83
- proto.$flags = T_OBJECT;
84
-
85
- // class itself
86
- var meta = function() {
87
- this.$id = unique_id++;
88
-
89
- return this;
90
- };
91
-
92
- var mtor = function() {};
93
- mtor.prototype = superklass.constructor.prototype;
94
-
95
- meta.prototype = new mtor();
96
-
97
- proto = meta.prototype;
98
- proto.$allocator = cls;
99
- proto.$flags = T_CLASS;
100
- proto.$m = {};
101
- proto.$methods = [];
102
- proto.constructor = meta;
103
- proto.$s = superklass;
104
-
105
- var result = new meta();
106
- cls.prototype.$klass = result;
107
-
108
- result.$proto = cls.prototype;
109
-
110
- return result;
111
- }
112
-
113
- function boot_module() {
114
- // where module "instance" methods go. will never be instantiated so it
115
- // can be a regular object
116
- var module_cons = function(){};
117
- var module_inst = module_cons.prototype;
118
-
119
- // Module itself
120
- var meta = function() {
121
- this.$id = unique_id++;
122
- return this;
123
- };
124
-
125
- var mtor = function(){};
126
- mtor.prototype = RubyModule.constructor.prototype;
127
- meta.prototype = new mtor();
128
-
129
- var proto = meta.prototype;
130
- proto.$allocator = module_cons;
131
- proto.$flags = T_MODULE;
132
- proto.constructor = meta;
133
- proto.$s = RubyModule;
134
-
135
- var module = new meta();
136
- module.$proto = module_inst;
137
-
138
- return module;
139
- }
140
-
141
- // Get actual class ignoring singleton classes and iclasses.
142
- function class_real(klass) {
143
- while (klass.$flags & FL_SINGLETON) {
144
- klass = klass.$s;
145
- }
146
-
147
- return klass;
148
- }
149
-
150
- // Make metaclass for the given class
151
- function make_metaclass(klass, superklass) {
152
- if (klass.$flags & T_CLASS) {
153
- if ((klass.$flags & T_CLASS) && (klass.$flags & FL_SINGLETON)) {
154
- raise(RubyException, "too much meta: return klass?");
155
- }
156
- else {
157
- var class_id = "#<Class:" + klass.__classid__ + ">",
158
- meta = boot_class(superklass);
159
-
160
- meta.__classid__ = class_id;
161
- meta.$allocator.prototype = klass.constructor.prototype;
162
- meta.$flags |= FL_SINGLETON;
163
-
164
- klass.$klass = meta;
165
-
166
- meta.$const = klass.$const;
167
- meta.__attached__ = klass;
168
-
169
- return meta;
170
- }
171
- }
172
- else {
173
- return make_singleton_class(klass);
174
- }
175
- }
176
-
177
- function make_singleton_class(obj) {
178
- var orig_class = obj.$klass,
179
- class_id = "#<Class:#<" + orig_class.__classid__ + ":" + orig_class.$id + ">>";
180
-
181
- klass = boot_class(orig_class);
182
- klass.__classid__ = class_id;
183
-
184
- klass.$flags |= FL_SINGLETON;
185
- klass.$bridge_prototype = obj;
186
-
187
- obj.$klass = klass;
188
-
189
- klass.__attached__ = obj;
190
-
191
- klass.$klass = class_real(orig_class).$k;
192
-
193
- return klass;
194
- }
195
-
196
- function bridge_class(constructor, flags, id) {
197
- var klass = define_class(RubyObject, id, RubyObject),
198
- prototype = constructor.prototype;
199
-
200
- klass.$allocator = constructor;
201
- klass.$proto = prototype;
202
-
203
- bridged_classes.push(klass);
204
-
205
- prototype.$klass = klass;
206
- prototype.$flags = flags;
207
-
208
- return klass;
209
- }
210
-
211
- // Define new ruby class
212
- function define_class(base, id, superklass) {
213
- var klass;
214
-
215
- var class_id = (base === RubyObject ? id : base.__classid__ + '::' + id);
216
-
217
- klass = boot_class(superklass);
218
- klass.__classid__ = class_id;
219
-
220
- make_metaclass(klass, superklass.$klass);
221
-
222
- var const_alloc = function() {};
223
- var const_scope = const_alloc.prototype = new base.$const.alloc();
224
- klass.$const = const_scope;
225
- const_scope.alloc = const_alloc;
226
-
227
- base.$const[id] = klass;
228
-
229
- if (superklass.m$inherited) {
230
- superklass.m$inherited(null, klass);
231
- }
232
-
233
- return klass;
234
- }
235
-
236
- // Get singleton class of obj
237
- function singleton_class(obj) {
238
- var klass;
239
-
240
- if (obj.$flags & T_OBJECT) {
241
- if ((obj.$flags & T_NUMBER) || (obj.$flags & T_STRING)) {
242
- raise(RubyTypeError, "can't define singleton");
243
- }
244
- }
245
-
246
- if ((obj.$klass.$flags & FL_SINGLETON) && obj.$klass.__attached__ == obj) {
247
- klass = obj.$klass;
248
- }
249
- else {
250
- var class_id = obj.$klass.__classid__;
251
-
252
- klass = make_metaclass(obj, obj.$klass);
253
- }
254
-
255
- return klass;
256
- }
@@ -1,42 +0,0 @@
1
- function exc_backtrace(err) {
2
- var old = Error.prepareStackTrace;
3
- Error.prepareStackTrace = prepare_backtrace;
4
-
5
- var backtrace = err.stack;
6
- Error.prepareStackTrace = old;
7
-
8
- if (backtrace && backtrace.join) {
9
- return backtrace;
10
- }
11
-
12
- return ["No backtrace available"];
13
- }
14
-
15
- function prepare_backtrace(error, stack) {
16
- var code = [], f, b, k, name, self;
17
-
18
- for (var i = 0; i < stack.length; i++) {
19
- f = stack[i];
20
- b = f.getFunction();
21
- name = f.getMethodName();
22
- self = f.getThis();
23
-
24
- if (!self.$klass || !name) {
25
- continue;
26
- }
27
-
28
- self = (self.$flags & T_OBJECT ?
29
- class_real(self.$klass).__classid__ + '#' :
30
- self.__classid__ + '.');
31
-
32
- code.push("from " + self + jsid_to_mid(name) + ' at ' + f.getFileName() + ":" + f.getLineNumber());
33
- }
34
-
35
- return code;
36
- }
37
-
38
- // Print error backtrace to console
39
- opal.backtrace = opal.bt = function(err) {
40
- console.log(err.$klass.__classid__ + ": " + err.message);
41
- console.log("\t" + exc_backtrace(err).join("\n\t"));
42
- };
@@ -1,114 +0,0 @@
1
- // Initialization
2
- // --------------
3
-
4
- // The *instances* of core objects
5
- var BootObject = boot_defclass();
6
- var BootModule = boot_defclass(BootObject);
7
- var BootClass = boot_defclass(BootModule);
8
-
9
- // The *classes' of core objects
10
- var RubyObject = boot_makemeta('Object', BootObject, BootClass);
11
- var RubyModule = boot_makemeta('Module', BootModule, RubyObject.constructor);
12
- var RubyClass = boot_makemeta('Class', BootClass, RubyModule.constructor);
13
-
14
- // Fix boot classes to use meta class
15
- RubyObject.$klass = RubyClass;
16
- RubyModule.$klass = RubyClass;
17
- RubyClass.$klass = RubyClass;
18
-
19
- // fix superclasses
20
- RubyObject.$s = null;
21
- RubyModule.$s = RubyObject;
22
- RubyClass.$s = RubyModule;
23
-
24
- opal.Object = RubyObject;
25
- opal.Module = RubyModule;
26
- opal.Class = RubyClass;
27
-
28
- // make object act like a module
29
- var bridged_classes = RubyObject.$included_in = [];
30
-
31
- // Top level Object scope (used by object and top_self).
32
- var top_const_alloc = function(){};
33
- var top_const_scope = top_const_alloc.prototype;
34
- top_const_scope.alloc = top_const_alloc;
35
-
36
- RubyObject.$const = opal.constants = top_const_scope;
37
-
38
- var module_const_alloc = function(){};
39
- var module_const_scope = new top_const_alloc();
40
- module_const_scope.alloc = module_const_alloc;
41
- RubyModule.$const = module_const_scope;
42
-
43
- var class_const_alloc = function(){};
44
- var class_const_scope = new top_const_alloc();
45
- class_const_scope.alloc = class_const_alloc;
46
- RubyClass.$const = class_const_scope;
47
-
48
- RubyObject.$const.BasicObject = RubyObject;
49
- RubyObject.$const.Object = RubyObject;
50
- RubyObject.$const.Module = RubyModule;
51
- RubyObject.$const.Class = RubyClass;
52
-
53
- RubyModule.$allocator.prototype.$donate = function(methods) {
54
- var included_in = this.$included_in, includee, method, table = this.$proto, dest;
55
-
56
- if (included_in) {
57
- for (var i = 0, length = included_in.length; i < length; i++) {
58
- includee = included_in[i];
59
- dest = includee.$proto;
60
- for (var j = 0, jj = methods.length; j < jj; j++) {
61
- method = methods[j];
62
- // if (!dest[method]) {
63
- dest[method] = table[method];
64
- // }
65
- }
66
- // if our includee is itself included in another module/class then it
67
- // should also donate its new methods
68
- if (includee.$included_in) {
69
- includee.$donate(methods);
70
- }
71
- }
72
- }
73
- };
74
-
75
- var top_self = opal.top = new RubyObject.$allocator();
76
-
77
- var RubyNilClass = define_class(RubyObject, 'NilClass', RubyObject);
78
- var nil = opal.nil = new RubyNilClass.$allocator();
79
-
80
- var RubyArray = bridge_class(Array, T_OBJECT | T_ARRAY, 'Array');
81
- var RubyNumeric = bridge_class(Number, T_OBJECT | T_NUMBER, 'Numeric');
82
-
83
- var RubyHash = bridge_class(Hash, T_OBJECT, 'Hash');
84
-
85
- var RubyString = bridge_class(String, T_OBJECT | T_STRING, 'String');
86
- var RubyBoolean = bridge_class(Boolean, T_OBJECT | T_BOOLEAN, 'Boolean');
87
- var RubyProc = bridge_class(Function, T_OBJECT | T_PROC, 'Proc');
88
- var RubyRegexp = bridge_class(RegExp, T_OBJECT, 'Regexp');
89
-
90
- var RubyMatch = define_class(RubyObject, 'MatchData', RubyObject);
91
- var RubyRange = define_class(RubyObject, 'Range', RubyObject);
92
-
93
- var RubyException = bridge_class(Error, T_OBJECT, 'Exception');
94
- var RubyStandardError = define_class(RubyObject, 'StandardError', RubyException);
95
- var RubyRuntimeError = define_class(RubyObject, 'RuntimeError', RubyException);
96
- var RubyLocalJumpError = define_class(RubyObject, 'LocalJumpError', RubyStandardError);
97
- var RubyTypeError = define_class(RubyObject, 'TypeError', RubyStandardError);
98
- var RubyNameError = define_class(RubyObject, 'NameError', RubyStandardError);
99
- var RubyNoMethodError = define_class(RubyObject, 'NoMethodError', RubyNameError);
100
- var RubyArgError = define_class(RubyObject, 'ArgumentError', RubyStandardError);
101
- var RubyScriptError = define_class(RubyObject, 'ScriptError', RubyException);
102
- var RubyLoadError = define_class(RubyObject, 'LoadError', RubyScriptError);
103
- var RubyIndexError = define_class(RubyObject, 'IndexError', RubyStandardError);
104
- var RubyKeyError = define_class(RubyObject, 'KeyError', RubyIndexError);
105
- var RubyRangeError = define_class(RubyObject, 'RangeError', RubyStandardError);
106
- var RubyNotImplError = define_class(RubyObject, 'NotImplementedError', RubyException);
107
-
108
- RubyException.$allocator.prototype.toString = function() {
109
- return this.$klass.__classid__ + ': ' + this.message;
110
- };
111
-
112
- var breaker = opal.breaker = new Error('unexpected break');
113
- breaker.$klass = RubyLocalJumpError;
114
- breaker.$t = function() { throw this; };
@@ -1,5 +0,0 @@
1
- runtime
2
- class
3
- loader
4
- debug
5
- init