opal 0.3.33 → 0.3.34

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.
Files changed (49) hide show
  1. data/.travis.yml +1 -1
  2. data/Gemfile +6 -1
  3. data/README.md +7 -7
  4. data/Rakefile +29 -31
  5. data/bin/opal +1 -1
  6. data/{core/parser/browser.js → lib/assets/javascripts/opal-parser.js.erb} +9 -1
  7. data/lib/assets/javascripts/opal.js.erb +321 -0
  8. data/{core → lib/assets/javascripts/opal}/alpha.rb +0 -0
  9. data/{core → lib/assets/javascripts/opal}/array.rb +14 -1
  10. data/{core → lib/assets/javascripts/opal}/basic_object.rb +0 -0
  11. data/{core → lib/assets/javascripts/opal}/boolean.rb +0 -0
  12. data/{core → lib/assets/javascripts/opal}/class.rb +3 -3
  13. data/{core → lib/assets/javascripts/opal}/comparable.rb +0 -0
  14. data/lib/assets/javascripts/opal/core.js +18 -0
  15. data/lib/assets/javascripts/opal/date.rb +156 -0
  16. data/{core → lib/assets/javascripts/opal}/enumerable.rb +0 -0
  17. data/{core → lib/assets/javascripts/opal}/error.rb +0 -0
  18. data/{core → lib/assets/javascripts/opal}/hash.rb +0 -0
  19. data/{core → lib/assets/javascripts/opal}/json.rb +1 -1
  20. data/{core → lib/assets/javascripts/opal}/kernel.rb +2 -2
  21. data/{core → lib/assets/javascripts/opal}/nil_class.rb +0 -0
  22. data/{core → lib/assets/javascripts/opal}/numeric.rb +0 -0
  23. data/{core → lib/assets/javascripts/opal}/proc.rb +0 -0
  24. data/{core/parser → lib/assets/javascripts/opal}/racc.rb +0 -0
  25. data/{core → lib/assets/javascripts/opal}/range.rb +0 -0
  26. data/{core → lib/assets/javascripts/opal}/regexp.rb +0 -0
  27. data/{core → lib/assets/javascripts/opal}/string.rb +0 -0
  28. data/{core/parser → lib/assets/javascripts/opal}/strscan.rb +0 -0
  29. data/{core → lib/assets/javascripts/opal}/time.rb +0 -0
  30. data/lib/opal.rb +25 -58
  31. data/lib/opal/lexer.rb +1 -1
  32. data/lib/opal/parser.rb +1 -1
  33. data/lib/opal/processor.rb +26 -0
  34. data/lib/opal/version.rb +1 -1
  35. data/opal.gemspec +1 -1
  36. data/spec/core/array/shuffle_spec.rb +11 -0
  37. data/spec/index.html +4 -6
  38. data/spec/spec_helper.rb +3 -1
  39. metadata +29 -35
  40. data/core/date.rb +0 -34
  41. data/core/erb.rb +0 -20
  42. data/core/load_order +0 -20
  43. data/core/runtime.js +0 -305
  44. data/core/test_runner/runner.js +0 -37
  45. data/lib/opal/builder.rb +0 -88
  46. data/lib/opal/erb.rb +0 -14
  47. data/lib/opal/rake_task.rb +0 -80
  48. data/spec/parser/erb_spec.rb +0 -32
  49. data/spec/test_case.html +0 -13
data/lib/opal/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Opal
2
- VERSION = '0.3.33'
2
+ VERSION = '0.3.34'
3
3
  end
data/opal.gemspec CHANGED
@@ -14,4 +14,4 @@ Gem::Specification.new do |s|
14
14
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
15
15
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
16
  s.require_paths = ['lib']
17
- end
17
+ end
@@ -0,0 +1,11 @@
1
+ describe "Array#shuffle" do
2
+ it "returns an array mixed up" do
3
+ ary = [1, 2, 3, 4, 5]
4
+ [1, 2, 3, 4, 5].shuffle.should_not == ary
5
+ end
6
+
7
+ it "returns an array mixed up with UTF-8 characters" do
8
+ ary = ["á", "é", "à", "ñÑ", "¥ØŁØ"]
9
+ ["á", "é", "à", "ñÑ", "¥ØŁØ"].shuffle.should_not == ary
10
+ end
11
+ end
data/spec/index.html CHANGED
@@ -2,11 +2,9 @@
2
2
  <html>
3
3
  <head>
4
4
  <title>Opal corelib and runtime specs</title>
5
- <script type="text/javascript" src="../build/opal.js"></script>
6
- <script type="text/javascript" src="../build/opal-parser.js"></script>
7
- <script type="text/javascript" src="../build/opal-spec.js"></script>
8
5
  <script type="text/javascript" src="../build/specs.js"></script>
6
+ <script type="text/javascript" src="../build/opal-parser.js"></script>
9
7
  </head>
10
- <body>
11
- </body>
12
- </html>
8
+ <body>
9
+ </body>
10
+ </html>
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,6 @@
1
- require 'opal'
1
+ #= require opal
2
+ #= require opal-spec
3
+ #= require_tree .
2
4
 
3
5
  module Kernel
4
6
  def opal_eval(str)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.33
4
+ version: 0.3.34
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-18 00:00:00.000000000Z
12
+ date: 2013-02-05 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: Ruby runtime and core library for javascript.
15
15
  email: adam.beynon@gmail.com
@@ -26,40 +26,36 @@ files:
26
26
  - README.md
27
27
  - Rakefile
28
28
  - bin/opal
29
- - core/alpha.rb
30
- - core/array.rb
31
- - core/basic_object.rb
32
- - core/boolean.rb
33
- - core/class.rb
34
- - core/comparable.rb
35
- - core/date.rb
36
- - core/enumerable.rb
37
- - core/erb.rb
38
- - core/error.rb
39
- - core/hash.rb
40
- - core/json.rb
41
- - core/kernel.rb
42
- - core/load_order
43
- - core/nil_class.rb
44
- - core/numeric.rb
45
- - core/parser/browser.js
46
- - core/parser/racc.rb
47
- - core/parser/strscan.rb
48
- - core/proc.rb
49
- - core/range.rb
50
- - core/regexp.rb
51
- - core/runtime.js
52
- - core/string.rb
53
- - core/test_runner/runner.js
54
- - core/time.rb
29
+ - lib/assets/javascripts/opal-parser.js.erb
30
+ - lib/assets/javascripts/opal.js.erb
31
+ - lib/assets/javascripts/opal/alpha.rb
32
+ - lib/assets/javascripts/opal/array.rb
33
+ - lib/assets/javascripts/opal/basic_object.rb
34
+ - lib/assets/javascripts/opal/boolean.rb
35
+ - lib/assets/javascripts/opal/class.rb
36
+ - lib/assets/javascripts/opal/comparable.rb
37
+ - lib/assets/javascripts/opal/core.js
38
+ - lib/assets/javascripts/opal/date.rb
39
+ - lib/assets/javascripts/opal/enumerable.rb
40
+ - lib/assets/javascripts/opal/error.rb
41
+ - lib/assets/javascripts/opal/hash.rb
42
+ - lib/assets/javascripts/opal/json.rb
43
+ - lib/assets/javascripts/opal/kernel.rb
44
+ - lib/assets/javascripts/opal/nil_class.rb
45
+ - lib/assets/javascripts/opal/numeric.rb
46
+ - lib/assets/javascripts/opal/proc.rb
47
+ - lib/assets/javascripts/opal/racc.rb
48
+ - lib/assets/javascripts/opal/range.rb
49
+ - lib/assets/javascripts/opal/regexp.rb
50
+ - lib/assets/javascripts/opal/string.rb
51
+ - lib/assets/javascripts/opal/strscan.rb
52
+ - lib/assets/javascripts/opal/time.rb
55
53
  - lib/opal.rb
56
- - lib/opal/builder.rb
57
- - lib/opal/erb.rb
58
54
  - lib/opal/grammar.rb
59
55
  - lib/opal/grammar.y
60
56
  - lib/opal/lexer.rb
61
57
  - lib/opal/parser.rb
62
- - lib/opal/rake_task.rb
58
+ - lib/opal/processor.rb
63
59
  - lib/opal/scope.rb
64
60
  - lib/opal/version.rb
65
61
  - opal.gemspec
@@ -113,6 +109,7 @@ files:
113
109
  - spec/core/array/rindex_spec.rb
114
110
  - spec/core/array/select_spec.rb
115
111
  - spec/core/array/shift_spec.rb
112
+ - spec/core/array/shuffle_spec.rb
116
113
  - spec/core/array/size_spec.rb
117
114
  - spec/core/array/slice_spec.rb
118
115
  - spec/core/array/sort_spec.rb
@@ -425,10 +422,8 @@ files:
425
422
  - spec/language/variables_spec.rb
426
423
  - spec/language/while_spec.rb
427
424
  - spec/language/yield_spec.rb
428
- - spec/parser/erb_spec.rb
429
425
  - spec/parser/simple_spec.rb
430
426
  - spec/spec_helper.rb
431
- - spec/test_case.html
432
427
  homepage: http://opalrb.org
433
428
  licenses: []
434
429
  post_install_message:
@@ -504,6 +499,7 @@ test_files:
504
499
  - spec/core/array/rindex_spec.rb
505
500
  - spec/core/array/select_spec.rb
506
501
  - spec/core/array/shift_spec.rb
502
+ - spec/core/array/shuffle_spec.rb
507
503
  - spec/core/array/size_spec.rb
508
504
  - spec/core/array/slice_spec.rb
509
505
  - spec/core/array/sort_spec.rb
@@ -816,7 +812,5 @@ test_files:
816
812
  - spec/language/variables_spec.rb
817
813
  - spec/language/while_spec.rb
818
814
  - spec/language/yield_spec.rb
819
- - spec/parser/erb_spec.rb
820
815
  - spec/parser/simple_spec.rb
821
816
  - spec/spec_helper.rb
822
- - spec/test_case.html
data/core/date.rb DELETED
@@ -1,34 +0,0 @@
1
- date_constructor = `Date`
2
-
3
- class Date
4
- def self.today
5
- %x{
6
- var date = #{new};
7
- date._date = new date_constructor();
8
- return date;
9
- }
10
- end
11
-
12
- def initialize(year, month, day)
13
- `#{self}._date = new date_constructor(year, month - 1, day)`
14
- end
15
-
16
- def day
17
- `#{self}._date.getDate()`
18
- end
19
-
20
- def month
21
- `#{self}._date.getMonth() + 1`
22
- end
23
-
24
- def to_s
25
- %x{
26
- var d = #{self}._date;
27
- return '' + d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate();
28
- }
29
- end
30
-
31
- def year
32
- `#{self}._date.getFullYear()`
33
- end
34
- end
data/core/erb.rb DELETED
@@ -1,20 +0,0 @@
1
- class ERB
2
- @_cache = {}
3
- def self.[](name)
4
- @_cache[name]
5
- end
6
-
7
- def self.[]=(name, instance)
8
- @_cache[name] = instance
9
- end
10
-
11
- def initialize(name, &body)
12
- @body = body
13
- @name = name
14
- ERB[name] = self
15
- end
16
-
17
- def render(ctx=self)
18
- ctx.instance_eval(&@body)
19
- end
20
- end
data/core/load_order DELETED
@@ -1,20 +0,0 @@
1
- alpha
2
- class
3
- basic_object
4
- kernel
5
- nil_class
6
- boolean
7
- error
8
- regexp
9
- comparable
10
- enumerable
11
- array
12
- hash
13
- string
14
- numeric
15
- proc
16
- range
17
- time
18
- date
19
- json
20
- erb
data/core/runtime.js DELETED
@@ -1,305 +0,0 @@
1
- // The Opal object that is exposed globally
2
- var Opal = this.Opal = {};
3
-
4
- // Very root class
5
- function BasicObject(){}
6
-
7
- // Core Object class
8
- function Object(){}
9
-
10
- // Class' class
11
- function Class(){}
12
-
13
- // the class of nil
14
- function NilClass(){}
15
-
16
- // TopScope is used for inheriting constants from the top scope
17
- var TopScope = function(){};
18
-
19
- // Opal just acts as the top scope
20
- TopScope.prototype = Opal;
21
-
22
- // To inherit scopes
23
- Opal.alloc = TopScope;
24
-
25
- // This is a useful reference to global object inside ruby files
26
- Opal.global = this;
27
-
28
- // Minify common function calls
29
- var __hasOwn = Opal.hasOwnProperty;
30
- var __slice = Opal.slice = Array.prototype.slice;
31
-
32
- // Generates unique id for every ruby object
33
- var unique_id = 0;
34
-
35
- // Table holds all class variables
36
- Opal.cvars = {};
37
-
38
- // Globals table
39
- Opal.gvars = {};
40
-
41
- Opal.klass = function(base, superklass, id, constructor) {
42
- var klass;
43
- if (base._isObject) {
44
- base = base._klass;
45
- }
46
-
47
- if (superklass === null) {
48
- superklass = Object;
49
- }
50
-
51
- if (__hasOwn.call(base._scope, id)) {
52
- klass = base._scope[id];
53
- }
54
- else {
55
- if (!superklass._methods) {
56
- var bridged = superklass;
57
- superklass = Object;
58
- klass = bridge_class(bridged);
59
- }
60
- else {
61
- klass = boot_class(superklass, constructor);
62
- }
63
-
64
- klass._name = (base === Object ? id : base._name + '::' + id);
65
-
66
- var const_alloc = function() {};
67
- var const_scope = const_alloc.prototype = new base._scope.alloc();
68
- klass._scope = const_scope;
69
- const_scope.alloc = const_alloc;
70
-
71
- base[id] = base._scope[id] = klass;
72
-
73
- if (superklass.$inherited) {
74
- superklass.$inherited(klass);
75
- }
76
- }
77
-
78
- return klass;
79
- };
80
-
81
- // Define new module (or return existing module)
82
- Opal.module = function(base, id, constructor) {
83
- var klass;
84
- if (base._isObject) {
85
- base = base._klass;
86
- }
87
-
88
- if (__hasOwn.call(base._scope, id)) {
89
- klass = base._scope[id];
90
- }
91
- else {
92
- klass = boot_class(Class, constructor);
93
- klass._name = (base === Object ? id : base._name + '::' + id);
94
-
95
- klass.$included_in = [];
96
-
97
- var const_alloc = function() {};
98
- var const_scope = const_alloc.prototype = new base._scope.alloc();
99
- klass._scope = const_scope;
100
- const_scope.alloc = const_alloc;
101
-
102
- base[id] = base._scope[id] = klass;
103
- }
104
-
105
- return klass;
106
- }
107
-
108
- // Utility function to raise a "no block given" error
109
- var no_block_given = function() {
110
- throw new Error('no block given');
111
- };
112
-
113
- // Boot a base class (makes instances).
114
- var boot_defclass = function(id, constructor, superklass) {
115
- if (superklass) {
116
- var ctor = function() {};
117
- ctor.prototype = superklass.prototype;
118
-
119
- constructor.prototype = new ctor();
120
- }
121
-
122
- var prototype = constructor.prototype;
123
-
124
- prototype.constructor = constructor;
125
- prototype._isObject = true;
126
- prototype._klass = constructor;
127
-
128
- constructor._included_in = [];
129
- constructor._isClass = true;
130
- constructor._name = id;
131
- constructor._super = superklass;
132
- constructor._methods = [];
133
- constructor._smethods = [];
134
- constructor._isObject = false;
135
-
136
- constructor._donate = __donate;
137
- constructor._sdonate = __sdonate;
138
-
139
- Opal[id] = constructor;
140
-
141
- return constructor;
142
- };
143
-
144
- // Create generic class with given superclass.
145
- var boot_class = function(superklass, constructor) {
146
- var ctor = function() {};
147
- ctor.prototype = superklass.prototype;
148
-
149
- constructor.prototype = new ctor();
150
- var prototype = constructor.prototype;
151
-
152
- prototype._klass = constructor;
153
- prototype.constructor = constructor;
154
-
155
- constructor._included_in = [];
156
- constructor._isClass = true;
157
- constructor._super = superklass;
158
- constructor._methods = [];
159
- constructor._isObject = false;
160
- constructor._klass = Class;
161
- constructor._donate = __donate
162
- constructor._sdonate = __sdonate;
163
-
164
- constructor['$==='] = module_eqq;
165
- constructor.$to_s = module_to_s;
166
-
167
- var smethods;
168
-
169
- smethods = superklass._smethods.slice();
170
-
171
- constructor._smethods = smethods;
172
- for (var i = 0, length = smethods.length; i < length; i++) {
173
- var m = smethods[i];
174
- constructor[m] = superklass[m];
175
- }
176
-
177
- return constructor;
178
- };
179
-
180
- var bridge_class = function(constructor) {
181
- constructor.prototype._klass = constructor;
182
-
183
- constructor._included_in = [];
184
- constructor._isClass = true;
185
- constructor._super = Object;
186
- constructor._klass = Class;
187
- constructor._methods = [];
188
- constructor._smethods = [];
189
- constructor._isObject = false;
190
-
191
- constructor._donate = function(){};
192
- constructor._sdonate = __sdonate;
193
-
194
- constructor['$==='] = module_eqq;
195
- constructor.$to_s = module_to_s;
196
-
197
- var smethods = constructor._smethods = Class._methods.slice();
198
- for (var i = 0, length = smethods.length; i < length; i++) {
199
- var m = smethods[i];
200
- constructor[m] = Object[m];
201
- }
202
-
203
- bridged_classes.push(constructor);
204
-
205
- var table = Object.prototype, methods = Object._methods;
206
-
207
- for (var i = 0, length = methods.length; i < length; i++) {
208
- var m = methods[i];
209
- constructor.prototype[m] = table[m];
210
- }
211
-
212
- constructor._smethods.push('$allocate');
213
-
214
- return constructor;
215
- };
216
-
217
- Opal.puts = function(a) { console.log(a); };
218
-
219
- // Initialization
220
- // --------------
221
-
222
- boot_defclass('BasicObject', BasicObject)
223
- boot_defclass('Object', Object, BasicObject);
224
- boot_defclass('Class', Class, Object);
225
-
226
- Class.prototype = Function.prototype;
227
-
228
- BasicObject._klass = Object._klass = Class._klass = Class;
229
-
230
- // Implementation of Class#===
231
- function module_eqq(object) {
232
- if (object == null) {
233
- return false;
234
- }
235
-
236
- var search = object._klass;
237
-
238
- while (search) {
239
- if (search === this) {
240
- return true;
241
- }
242
-
243
- search = search._super;
244
- }
245
-
246
- return false;
247
- }
248
-
249
- // Implementation of Class#to_s
250
- function module_to_s() {
251
- return this._name;
252
- }
253
-
254
- // Donator for all 'normal' classes and modules
255
- function __donate(defined, indirect) {
256
- var methods = this._methods, included_in = this.$included_in;
257
-
258
- // if (!indirect) {
259
- this._methods = methods.concat(defined);
260
- // }
261
-
262
- if (included_in) {
263
- for (var i = 0, length = included_in.length; i < length; i++) {
264
- var includee = included_in[i];
265
- var dest = includee.prototype;
266
-
267
- for (var j = 0, jj = defined.length; j < jj; j++) {
268
- var method = defined[j];
269
- dest[method] = this.prototype[method];
270
- }
271
-
272
- if (includee.$included_in) {
273
- includee._donate(defined, true);
274
- }
275
- }
276
-
277
- }
278
- }
279
-
280
- // Donator for singleton (class) methods
281
- function __sdonate(defined) {
282
- this._smethods = this._smethods.concat(defined);
283
- }
284
-
285
- var bridged_classes = Object.$included_in = [];
286
-
287
- BasicObject._scope = Object._scope = Opal;
288
- Opal.Module = Opal.Class;
289
- Opal.Kernel = Object;
290
-
291
- var class_const_alloc = function(){};
292
- var class_const_scope = new TopScope();
293
- class_const_scope.alloc = class_const_alloc;
294
- Class._scope = class_const_scope;
295
-
296
- Object.prototype.toString = function() {
297
- return this.$to_s();
298
- };
299
-
300
- Opal.top = new Object;
301
-
302
- Opal.klass(Object, Object, 'NilClass', NilClass)
303
- Opal.nil = new NilClass;
304
-
305
- Opal.breaker = new Error('unexpected break');