opal 0.3.20 → 0.3.21

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 (122) hide show
  1. data/.gitignore +2 -7
  2. data/.rspec +2 -0
  3. data/.travis.yml +11 -0
  4. data/Gemfile +8 -2
  5. data/LICENSE +2 -3
  6. data/README.md +106 -239
  7. data/Rakefile +58 -16
  8. data/bin/opal +1 -0
  9. data/core/array.rb +180 -160
  10. data/core/basic_object.rb +8 -4
  11. data/core/boolean.rb +6 -6
  12. data/core/class.rb +9 -15
  13. data/core/dir.rb +89 -0
  14. data/core/enumerable.rb +83 -86
  15. data/core/error.rb +9 -4
  16. data/core/file.rb +85 -0
  17. data/core/hash.rb +67 -67
  18. data/core/kernel.rb +38 -42
  19. data/core/module.rb +57 -54
  20. data/core/numeric.rb +41 -41
  21. data/core/proc.rb +1 -5
  22. data/core/range.rb +11 -11
  23. data/core/regexp.rb +27 -22
  24. data/core/runtime.js +152 -221
  25. data/core/string.rb +86 -73
  26. data/core/time.rb +22 -18
  27. data/docs/post.html +9 -0
  28. data/docs/pre.html +32 -0
  29. data/lib/opal.rb +43 -3
  30. data/lib/opal/builder.rb +9 -26
  31. data/lib/opal/grammar.rb +1 -1
  32. data/lib/opal/grammar.y +1 -1
  33. data/lib/opal/lexer.rb +21 -15
  34. data/lib/opal/parser.rb +100 -111
  35. data/lib/opal/rake_task.rb +66 -0
  36. data/lib/opal/scope.rb +13 -5
  37. data/lib/opal/version.rb +1 -1
  38. data/opal.gemspec +2 -0
  39. data/spec/browser_spec.rb +28 -0
  40. data/spec/builder/lib_name_for_spec.rb +1 -6
  41. data/spec/grammar/alias_spec.rb +1 -1
  42. data/spec/grammar/and_spec.rb +1 -1
  43. data/spec/grammar/array_spec.rb +1 -1
  44. data/spec/grammar/attrasgn_spec.rb +1 -1
  45. data/spec/grammar/begin_spec.rb +1 -1
  46. data/spec/grammar/block_spec.rb +1 -1
  47. data/spec/grammar/break_spec.rb +1 -1
  48. data/spec/grammar/call_spec.rb +1 -1
  49. data/spec/grammar/class_spec.rb +1 -1
  50. data/spec/grammar/const_spec.rb +1 -1
  51. data/spec/grammar/cvar_spec.rb +1 -1
  52. data/spec/grammar/def_spec.rb +1 -1
  53. data/spec/grammar/false_spec.rb +1 -1
  54. data/spec/grammar/file_spec.rb +1 -1
  55. data/spec/grammar/gvar_spec.rb +1 -1
  56. data/spec/grammar/hash_spec.rb +1 -1
  57. data/spec/grammar/iasgn_spec.rb +1 -1
  58. data/spec/grammar/if_spec.rb +1 -1
  59. data/spec/grammar/iter_spec.rb +1 -1
  60. data/spec/grammar/ivar_spec.rb +1 -1
  61. data/spec/grammar/lambda_spec.rb +1 -1
  62. data/spec/grammar/lasgn_spec.rb +1 -1
  63. data/spec/grammar/line_spec.rb +1 -1
  64. data/spec/grammar/lvar_spec.rb +1 -1
  65. data/spec/grammar/masgn_spec.rb +1 -1
  66. data/spec/grammar/module_spec.rb +1 -1
  67. data/spec/grammar/nil_spec.rb +1 -1
  68. data/spec/grammar/not_spec.rb +1 -1
  69. data/spec/grammar/op_asgn1_spec.rb +1 -1
  70. data/spec/grammar/op_asgn2_spec.rb +1 -1
  71. data/spec/grammar/or_spec.rb +1 -1
  72. data/spec/grammar/return_spec.rb +1 -1
  73. data/spec/grammar/sclass_spec.rb +1 -1
  74. data/spec/grammar/self_spec.rb +1 -1
  75. data/spec/grammar/str_spec.rb +1 -1
  76. data/spec/grammar/super_spec.rb +1 -1
  77. data/spec/grammar/true_spec.rb +1 -1
  78. data/spec/grammar/undef_spec.rb +1 -1
  79. data/spec/grammar/unless_spec.rb +1 -1
  80. data/spec/grammar/while_spec.rb +1 -1
  81. data/spec/grammar/xstr_spec.rb +1 -1
  82. data/spec/grammar/yield_spec.rb +1 -1
  83. data/spec/spec_helper.rb +6 -1
  84. data/test/core/array/minus_spec.rb +13 -0
  85. data/test/core/enumerable/drop_while_spec.rb +0 -5
  86. data/test/core/range/case_compare_spec.rb +0 -1
  87. data/test/index.html +1 -1
  88. data/test/index.min.html +12 -0
  89. data/test/language/alias_spec.rb +0 -4
  90. data/test/language/fixtures/next.rb +62 -0
  91. data/test/language/metaclass_spec.rb +4 -4
  92. data/test/language/next_spec.rb +0 -63
  93. data/test/language/send_spec.rb +0 -5
  94. data/test/language/singleton_class_spec.rb +4 -0
  95. data/test/opal/array/subclassing_spec.rb +1 -1
  96. data/test/opal/class/bridge_class_spec.rb +2 -2
  97. data/test/opal/runtime/class_hierarchy_spec.rb +1 -2
  98. data/test/opal/runtime/method_missing_spec.rb +17 -0
  99. data/test/spec_helper.rb +4 -1
  100. metadata +32 -28
  101. data/docs/CNAME +0 -1
  102. data/docs/Rakefile +0 -55
  103. data/docs/css/styles.css +0 -50
  104. data/docs/css/syntax.css +0 -63
  105. data/docs/layout/post.html +0 -3
  106. data/docs/layout/pre.html +0 -11
  107. data/examples/dependencies/.gitignore +0 -1
  108. data/examples/dependencies/Gemfile +0 -6
  109. data/examples/dependencies/README.md +0 -41
  110. data/examples/dependencies/Rakefile +0 -10
  111. data/examples/dependencies/app.rb +0 -19
  112. data/examples/dependencies/build/.gitkeep +0 -0
  113. data/examples/dependencies/index.html +0 -13
  114. data/examples/hello_world/.gitignore +0 -1
  115. data/examples/hello_world/Gemfile +0 -3
  116. data/examples/hello_world/README.md +0 -27
  117. data/examples/hello_world/Rakefile +0 -23
  118. data/examples/hello_world/app.rb +0 -7
  119. data/examples/hello_world/index.html +0 -12
  120. data/lib/opal/builder_task.rb +0 -91
  121. data/spec/builder/build_order_spec.rb +0 -20
  122. data/test/opal/runtime/_methods_spec.rb +0 -48
@@ -1,13 +1,18 @@
1
1
  class Exception < `Error`
2
2
  attr_reader :message
3
3
 
4
- def initialize(message = '')
5
- @message = message
4
+ def self.new(message = '')
5
+ %x{
6
+ var err = new Error(message);
7
+ err.$m = #{self}.$m_tbl;
8
+ err.$k = #{self};
9
+ return err;
10
+ }
6
11
  end
7
12
 
8
13
  def backtrace
9
14
  %x{
10
- var backtrace = this.stack;
15
+ var backtrace = #{self}.stack;
11
16
 
12
17
  if (typeof(backtrace) === 'string') {
13
18
  return backtrace.split("\\n");
@@ -21,7 +26,7 @@ class Exception < `Error`
21
26
  end
22
27
 
23
28
  def inspect
24
- "#<#{self.class}: '#{message}'>"
29
+ "#<#{self.class.name}: '#@message'>"
25
30
  end
26
31
 
27
32
  alias to_s message
@@ -0,0 +1,85 @@
1
+ class File
2
+ # Regexp to split path into dirname, basename and extname
3
+ PATH_RE = /^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/
4
+
5
+ def self.expand_path(path, base = undefined)
6
+ %x{
7
+ if (!base) {
8
+ base = '';
9
+ }
10
+
11
+ path = #{ join(base, path) };
12
+
13
+ var parts = path.split('/'), result = [], path;
14
+
15
+ for (var i = 0, ii = parts.length; i < ii; i++) {
16
+ part = parts[i];
17
+
18
+ if (part === '..') {
19
+ result.pop();
20
+ }
21
+ else if (part === '.' || part === '') {
22
+ // ignore?
23
+ }
24
+ else {
25
+ result.push(part);
26
+ }
27
+ }
28
+
29
+ return result.join('/');
30
+ }
31
+ end
32
+
33
+ def self.join(*paths)
34
+ %x{
35
+ var result = [];
36
+
37
+ for (var i = 0, length = paths.length; i < length; i++) {
38
+ var part = paths[i];
39
+
40
+ if (part != '') {
41
+ result.push(part);
42
+ }
43
+ }
44
+
45
+ return result.join('/');
46
+ }
47
+ end
48
+
49
+ def self.dirname(path)
50
+ %x{
51
+ var dirname = #{PATH_RE}.exec(path)[1];
52
+
53
+ if (!dirname) {
54
+ return '.';
55
+ }
56
+ else if (dirname === '/') {
57
+ return dirname;
58
+ }
59
+ else {
60
+ return dirname.substring(0, dirname.length - 1);
61
+ }
62
+ }
63
+ end
64
+
65
+ def self.extname(path)
66
+ %x{
67
+ var extname = #{PATH_RE}.exec(path)[3];
68
+
69
+ if (!extname || extname === '.') {
70
+ return '';
71
+ }
72
+ else {
73
+ return extname;
74
+ }
75
+ }
76
+ end
77
+
78
+ def self.basename(path, suffix)
79
+ ""
80
+ end
81
+
82
+ def self.exist?(path)
83
+ `!!factories[#{ expand_path path }]`
84
+ end
85
+ end
@@ -45,7 +45,7 @@ class Hash
45
45
 
46
46
  def ==(other)
47
47
  %x{
48
- if (this === other) {
48
+ if (#{self} === other) {
49
49
  return true;
50
50
  }
51
51
 
@@ -53,7 +53,7 @@ class Hash
53
53
  return false;
54
54
  }
55
55
 
56
- var map = this.map,
56
+ var map = #{self}.map,
57
57
  map2 = other.map;
58
58
 
59
59
  for (var assoc in map) {
@@ -77,17 +77,17 @@ class Hash
77
77
  %x{
78
78
  var bucket;
79
79
 
80
- if (bucket = this.map[key]) {
80
+ if (bucket = #{self}.map[key]) {
81
81
  return bucket[1];
82
82
  }
83
83
 
84
- return this.none;
84
+ return #{self}.none;
85
85
  }
86
86
  end
87
87
 
88
88
  def []=(key, value)
89
89
  %x{
90
- this.map[key] = [key, value];
90
+ #{self}.map[key] = [key, value];
91
91
 
92
92
  return value;
93
93
  }
@@ -95,8 +95,8 @@ class Hash
95
95
 
96
96
  def assoc(object)
97
97
  %x{
98
- for (var assoc in this.map) {
99
- var bucket = this.map[assoc];
98
+ for (var assoc in #{self}.map) {
99
+ var bucket = #{self}.map[assoc];
100
100
 
101
101
  if (#{`bucket[0]` == `object`}) {
102
102
  return [bucket[0], bucket[1]];
@@ -109,16 +109,16 @@ class Hash
109
109
 
110
110
  def clear
111
111
  %x{
112
- this.map = {};
112
+ #{self}.map = {};
113
113
 
114
- return this;
114
+ return #{self};
115
115
  }
116
116
  end
117
117
 
118
118
  def clone
119
119
  %x{
120
120
  var result = __hash(),
121
- map = this.map,
121
+ map = #{self}.map,
122
122
  map2 = result.map;
123
123
 
124
124
  for (var assoc in map) {
@@ -130,24 +130,24 @@ class Hash
130
130
  end
131
131
 
132
132
  def default
133
- `this.none`
133
+ `#{self}.none`
134
134
  end
135
135
 
136
136
  def default=(object)
137
- `this.none = object`
137
+ `#{self}.none = object`
138
138
  end
139
139
 
140
140
  def default_proc
141
- `this.proc`
141
+ `#{self}.proc`
142
142
  end
143
143
 
144
144
  def default_proc=(proc)
145
- `this.proc = proc`
145
+ `#{self}.proc = proc`
146
146
  end
147
147
 
148
148
  def delete(key)
149
149
  %x{
150
- var map = this.map, result;
150
+ var map = #{self}.map, result;
151
151
 
152
152
  if (result = map[key]) {
153
153
  result = bucket[1];
@@ -163,13 +163,13 @@ class Hash
163
163
  return enum_for :delete_if unless block_given?
164
164
 
165
165
  %x{
166
- var map = this.map;
166
+ var map = #{self}.map;
167
167
 
168
168
  for (var assoc in map) {
169
169
  var bucket = map[assoc],
170
170
  value;
171
171
 
172
- if ((value = block.call(__context, bucket[0], bucket[1])) === __breaker) {
172
+ if ((value = block(__context, bucket[0], bucket[1])) === __breaker) {
173
173
  return __breaker.$v;
174
174
  }
175
175
 
@@ -178,7 +178,7 @@ class Hash
178
178
  }
179
179
  }
180
180
 
181
- return this;
181
+ return #{self};
182
182
  }
183
183
  end
184
184
 
@@ -188,17 +188,17 @@ class Hash
188
188
  return enum_for :each unless block_given?
189
189
 
190
190
  %x{
191
- var map = this.map;
191
+ var map = #{self}.map;
192
192
 
193
193
  for (var assoc in map) {
194
194
  var bucket = map[assoc];
195
195
 
196
- if (block.call(__context, bucket[0], bucket[1]) === __breaker) {
196
+ if (block(__context, bucket[0], bucket[1]) === __breaker) {
197
197
  return __breaker.$v;
198
198
  }
199
199
  }
200
200
 
201
- return this;
201
+ return #{self};
202
202
  }
203
203
  end
204
204
 
@@ -206,17 +206,17 @@ class Hash
206
206
  return enum_for :each_key unless block_given?
207
207
 
208
208
  %x{
209
- var map = this.map;
209
+ var map = #{self}.map;
210
210
 
211
211
  for (var assoc in map) {
212
212
  var bucket = map[assoc];
213
213
 
214
- if (block.call(__context, bucket[0]) === __breaker) {
214
+ if (block(__context, bucket[0]) === __breaker) {
215
215
  return __breaker.$v;
216
216
  }
217
217
  }
218
218
 
219
- return this;
219
+ return #{self};
220
220
  }
221
221
  end
222
222
 
@@ -226,23 +226,23 @@ class Hash
226
226
  return enum_for :each_value unless block_given?
227
227
 
228
228
  %x{
229
- var map = this.map;
229
+ var map = #{self}.map;
230
230
 
231
231
  for (var assoc in map) {
232
232
  var bucket = map[assoc];
233
233
 
234
- if (block.call(__context, bucket[1]) === __breaker) {
234
+ if (block(__context, bucket[1]) === __breaker) {
235
235
  return __breaker.$v;
236
236
  }
237
237
  }
238
238
 
239
- return this;
239
+ return #{self};
240
240
  }
241
241
  end
242
242
 
243
243
  def empty?
244
244
  %x{
245
- for (var assoc in this.map) {
245
+ for (var assoc in #{self}.map) {
246
246
  return false;
247
247
  }
248
248
 
@@ -254,7 +254,7 @@ class Hash
254
254
 
255
255
  def fetch(key, defaults, &block)
256
256
  %x{
257
- var bucket = this.map[key];
257
+ var bucket = #{self}.map[key];
258
258
 
259
259
  if (bucket) {
260
260
  return bucket[1];
@@ -263,7 +263,7 @@ class Hash
263
263
  if (block !== nil) {
264
264
  var value;
265
265
 
266
- if ((value = block.call(__context, key)) === __breaker) {
266
+ if ((value = block(__context, key)) === __breaker) {
267
267
  return __breaker.$v;
268
268
  }
269
269
 
@@ -280,7 +280,7 @@ class Hash
280
280
 
281
281
  def flatten(level)
282
282
  %x{
283
- var map = this.map,
283
+ var map = #{self}.map,
284
284
  result = [];
285
285
 
286
286
  for (var assoc in map) {
@@ -308,13 +308,13 @@ class Hash
308
308
  end
309
309
 
310
310
  def has_key?(key)
311
- `!!this.map[key]`
311
+ `!!#{self}.map[key]`
312
312
  end
313
313
 
314
314
  def has_value?(value)
315
315
  %x{
316
- for (var assoc in this.map) {
317
- if (#{`this.map[assoc][1]` == value}) {
316
+ for (var assoc in #{self}.map) {
317
+ if (#{`#{self}.map[assoc][1]` == value}) {
318
318
  return true;
319
319
  }
320
320
  }
@@ -324,15 +324,15 @@ class Hash
324
324
  end
325
325
 
326
326
  def hash
327
- `this._id`
327
+ `#{self}._id`
328
328
  end
329
329
 
330
330
  alias include? has_key?
331
331
 
332
332
  def index(object)
333
333
  %x{
334
- for (var assoc in this.map) {
335
- var bucket = this.map[assoc];
334
+ for (var assoc in #{self}.map) {
335
+ var bucket = #{self}.map[assoc];
336
336
 
337
337
  if (#{object == `bucket[1]`}) {
338
338
  return bucket[0];
@@ -345,7 +345,7 @@ class Hash
345
345
 
346
346
  def indexes(*keys)
347
347
  %x{
348
- var result = [], map = this.map, bucket;
348
+ var result = [], map = #{self}.map, bucket;
349
349
 
350
350
  for (var i = 0, length = keys.length; i < length; i++) {
351
351
  var key = keys[i];
@@ -354,7 +354,7 @@ class Hash
354
354
  result.push(bucket[1]);
355
355
  }
356
356
  else {
357
- result.push(this.none);
357
+ result.push(#{self}.none);
358
358
  }
359
359
  }
360
360
 
@@ -367,7 +367,7 @@ class Hash
367
367
  def inspect
368
368
  %x{
369
369
  var inspect = [],
370
- map = this.map;
370
+ map = #{self}.map;
371
371
 
372
372
  for (var assoc in map) {
373
373
  var bucket = map[assoc];
@@ -381,7 +381,7 @@ class Hash
381
381
  def invert
382
382
  %x{
383
383
  var result = __hash(),
384
- map = this.map,
384
+ map = #{self}.map,
385
385
  map2 = result.map;
386
386
 
387
387
  for (var assoc in map) {
@@ -398,12 +398,12 @@ class Hash
398
398
  return enum_for :keep_if unless block_given?
399
399
 
400
400
  %x{
401
- var map = this.map, value;
401
+ var map = #{self}.map, value;
402
402
 
403
403
  for (var assoc in map) {
404
404
  var bucket = map[assoc];
405
405
 
406
- if ((value = block.call(__context, bucket[0], bucket[1])) === __breaker) {
406
+ if ((value = block(__context, bucket[0], bucket[1])) === __breaker) {
407
407
  return __breaker.$v;
408
408
  }
409
409
 
@@ -412,7 +412,7 @@ class Hash
412
412
  }
413
413
  }
414
414
 
415
- return this;
415
+ return #{self};
416
416
  }
417
417
  end
418
418
 
@@ -424,8 +424,8 @@ class Hash
424
424
  %x{
425
425
  var result = [];
426
426
 
427
- for (var assoc in this.map) {
428
- result.push(this.map[assoc][0]);
427
+ for (var assoc in #{self}.map) {
428
+ result.push(#{self}.map[assoc][0]);
429
429
  }
430
430
 
431
431
  return result;
@@ -436,7 +436,7 @@ class Hash
436
436
  %x{
437
437
  var result = 0;
438
438
 
439
- for (var assoc in this.map) {
439
+ for (var assoc in #{self}.map) {
440
440
  result++;
441
441
  }
442
442
 
@@ -449,7 +449,7 @@ class Hash
449
449
  def merge(other, &block)
450
450
  %x{
451
451
  var result = __hash(),
452
- map = this.map,
452
+ map = #{self}.map,
453
453
  map2 = result.map;
454
454
 
455
455
  for (var assoc in map) {
@@ -472,7 +472,7 @@ class Hash
472
472
  var bucket = map[assoc], key = bucket[0], val = bucket[1];
473
473
 
474
474
  if (__hasOwn.call(map2, assoc)) {
475
- val = block.call(__context, key, map2[assoc][1], val);
475
+ val = block(__context, key, map2[assoc][1], val);
476
476
  }
477
477
 
478
478
  map2[assoc] = [key, val];
@@ -485,7 +485,7 @@ class Hash
485
485
 
486
486
  def merge!(other, &block)
487
487
  %x{
488
- var map = this.map,
488
+ var map = #{self}.map,
489
489
  map2 = other.map;
490
490
 
491
491
  if (block === nil) {
@@ -500,20 +500,20 @@ class Hash
500
500
  var bucket = map2[assoc], key = bucket[0], val = bucket[1];
501
501
 
502
502
  if (__hasOwn.call(map, assoc)) {
503
- val = block.call(__context, key, map[assoc][1], val);
503
+ val = block(__context, key, map[assoc][1], val);
504
504
  }
505
505
 
506
506
  map[assoc] = [key, val];
507
507
  }
508
508
  }
509
509
 
510
- return this;
510
+ return #{self};
511
511
  }
512
512
  end
513
513
 
514
514
  def rassoc(object)
515
515
  %x{
516
- var map = this.map;
516
+ var map = #{self}.map;
517
517
 
518
518
  for (var assoc in map) {
519
519
  var bucket = map[assoc];
@@ -531,13 +531,13 @@ class Hash
531
531
  return enum_for :reject unless block_given?
532
532
 
533
533
  %x{
534
- var map = this.map, result = __hash(), map2 = result.map;
534
+ var map = #{self}.map, result = __hash(), map2 = result.map;
535
535
 
536
536
  for (var assoc in map) {
537
537
  var bucket = map[assoc],
538
538
  value;
539
539
 
540
- if ((value = block.call(__context, bucket[0], bucket[1])) === __breaker) {
540
+ if ((value = block(__context, bucket[0], bucket[1])) === __breaker) {
541
541
  return __breaker.$v;
542
542
  }
543
543
 
@@ -552,7 +552,7 @@ class Hash
552
552
 
553
553
  def replace(other)
554
554
  %x{
555
- var map = this.map = {};
555
+ var map = #{self}.map = {};
556
556
 
557
557
  for (var assoc in other.map) {
558
558
  var bucket = other.map[assoc];
@@ -560,7 +560,7 @@ class Hash
560
560
  map[bucket[0]] = [bucket[0], bucket[1]];
561
561
  }
562
562
 
563
- return this;
563
+ return #{self};
564
564
  }
565
565
  end
566
566
 
@@ -568,13 +568,13 @@ class Hash
568
568
  return enum_for :select unless block_given?
569
569
 
570
570
  %x{
571
- var map = this.map, result = __hash(), map2 = result.map;
571
+ var map = #{self}.map, result = __hash(), map2 = result.map;
572
572
 
573
573
  for (var assoc in map) {
574
574
  var bucket = map[assoc],
575
575
  value;
576
576
 
577
- if ((value = block.call(__context, bucket[0], bucket[1])) === __breaker) {
577
+ if ((value = block(__context, bucket[0], bucket[1])) === __breaker) {
578
578
  return __breaker.$v;
579
579
  }
580
580
 
@@ -591,19 +591,19 @@ class Hash
591
591
  return enum_for :select! unless block_given?
592
592
 
593
593
  %x{
594
- var map = this.map, result = nil;
594
+ var map = #{self}.map, result = nil;
595
595
 
596
596
  for (var assoc in map) {
597
597
  var bucket = map[assoc],
598
598
  value;
599
599
 
600
- if ((value = block.call(__context, bucket[0], bucket[1])) === __breaker) {
600
+ if ((value = block(__context, bucket[0], bucket[1])) === __breaker) {
601
601
  return __breaker.$v;
602
602
  }
603
603
 
604
604
  if (value === false || value === nil) {
605
605
  delete map[assoc];
606
- result = this;
606
+ result = #{self};
607
607
  }
608
608
  }
609
609
 
@@ -613,7 +613,7 @@ class Hash
613
613
 
614
614
  def shift
615
615
  %x{
616
- var map = this.map;
616
+ var map = #{self}.map;
617
617
 
618
618
  for (var assoc in map) {
619
619
  var bucket = map[assoc];
@@ -629,7 +629,7 @@ class Hash
629
629
 
630
630
  def to_a
631
631
  %x{
632
- var map = this.map,
632
+ var map = #{self}.map,
633
633
  result = [];
634
634
 
635
635
  for (var assoc in map) {
@@ -648,7 +648,7 @@ class Hash
648
648
 
649
649
  def to_json
650
650
  %x{
651
- var parts = [], map = this.map, bucket;
651
+ var parts = [], map = #{self}.map, bucket;
652
652
 
653
653
  for (var assoc in map) {
654
654
  bucket = map[assoc];
@@ -665,7 +665,7 @@ class Hash
665
665
 
666
666
  def value?(value)
667
667
  %x{
668
- var map = this.map;
668
+ var map = #{self}.map;
669
669
 
670
670
  for (var assoc in map) {
671
671
  var v = map[assoc][1];
@@ -682,7 +682,7 @@ class Hash
682
682
 
683
683
  def values
684
684
  %x{
685
- var map = this.map,
685
+ var map = #{self}.map,
686
686
  result = [];
687
687
 
688
688
  for (var assoc in map) {