opal 0.3.33 → 0.3.34

Sign up to get free protection for your applications and to get access to all the features.
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');