opal-rails 0.3.1 → 0.3.2

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.
@@ -1,4 +1,4 @@
1
- // Opal v0.3.27
1
+ // Opal v0.3.29
2
2
  // http://opal.github.com
3
3
  // Copyright 2012, Adam Beynon
4
4
  // Released under the MIT License
@@ -94,7 +94,6 @@ Opal.module = function(base, id, constructor) {
94
94
  klass = boot_class(Class, constructor);
95
95
  klass._name = (base === Object ? id : base._name + '::' + id);
96
96
 
97
- klass._isModule = true;
98
97
  klass.$included_in = [];
99
98
 
100
99
  var const_alloc = function() {};
@@ -305,9 +304,9 @@ Opal.nil = new NilClass;
305
304
  Opal.nil.call = Opal.nil.apply = no_block_given;
306
305
 
307
306
  Opal.breaker = new Error('unexpected break');
308
- Opal.version = "0.3.27";
307
+ Opal.version = "0.3.29";
309
308
  (function() {
310
- var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, def = self._klass.prototype, __breaker = __opal.breaker, __slice = __opal.slice, __gvars = __opal.gvars, __klass = __opal.klass, __module = __opal.module, __hash = __opal.hash;
309
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, def = self._klass.prototype, __breaker = __opal.breaker, __slice = __opal.slice, __gvars = __opal.gvars;
311
310
 
312
311
  __gvars["~"] = nil;
313
312
  __gvars["/"] = "\n";
@@ -319,17 +318,20 @@ Opal.version = "0.3.27";
319
318
 
320
319
  return "main";
321
320
  };
322
- self.$include = function(mod) {
321
+ return self.$include = function(mod) {
323
322
 
324
323
  return __scope.Object.$include(mod);
325
324
  };
326
- (function(__base, __super){
327
- // line 19, (corelib), class Class
325
+ })();
326
+ (function() {
327
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __klass = __opal.klass;
328
+
329
+ return (function(__base, __super){
328
330
  function Class() {};
329
331
  Class = __klass(__base, __super, "Class", Class);
330
- var Class_prototype = Class.prototype, __scope = Class._scope, TMP_1, TMP_2, TMP_3, TMP_4;
331
332
 
332
- // line 20, (corelib), Class.new
333
+ ;Class._sdonate(["$new"]); var Class_prototype = Class.prototype, __scope = Class._scope, TMP_1, TMP_2, TMP_3, TMP_4;
334
+
333
335
  Class.$new = TMP_1 = function(sup) {
334
336
  var __context, block;
335
337
  block = TMP_1._p || nil, __context = block._s, TMP_1._p = null;
@@ -351,7 +353,6 @@ Opal.version = "0.3.27";
351
353
 
352
354
  };
353
355
 
354
- // line 36, (corelib), Class#allocate
355
356
  Class_prototype.$allocate = function() {
356
357
 
357
358
 
@@ -361,14 +362,12 @@ Opal.version = "0.3.27";
361
362
 
362
363
  };
363
364
 
364
- // line 44, (corelib), Class#alias_method
365
365
  Class_prototype.$alias_method = function(newname, oldname) {
366
366
 
367
367
  this.prototype['$' + newname] = this.prototype['$' + oldname];
368
368
  return this;
369
369
  };
370
370
 
371
- // line 49, (corelib), Class#ancestors
372
371
  Class_prototype.$ancestors = function() {
373
372
 
374
373
 
@@ -384,7 +383,6 @@ Opal.version = "0.3.27";
384
383
 
385
384
  };
386
385
 
387
- // line 63, (corelib), Class#append_features
388
386
  Class_prototype.$append_features = function(klass) {
389
387
 
390
388
 
@@ -417,6 +415,10 @@ Opal.version = "0.3.27";
417
415
  prototype[method] = donator[method];
418
416
  }
419
417
 
418
+ if (prototype._smethods) {
419
+ prototype._sdonate(methods);
420
+ }
421
+
420
422
  if (klass.$included_in) {
421
423
  klass._donate(methods.slice(), true);
422
424
  }
@@ -424,7 +426,6 @@ Opal.version = "0.3.27";
424
426
  return this;
425
427
  };
426
428
 
427
- // line 103, (corelib), Class#attr_accessor
428
429
  Class_prototype.$attr_accessor = function() {
429
430
 
430
431
  return nil;
@@ -436,7 +437,6 @@ Opal.version = "0.3.27";
436
437
 
437
438
  Class_prototype.$attr = Class_prototype.$attr_accessor;
438
439
 
439
- // line 109, (corelib), Class#define_method
440
440
  Class_prototype.$define_method = TMP_2 = function(name) {
441
441
  var __context, block;
442
442
  block = TMP_2._p || nil, __context = block._s, TMP_2._p = null;
@@ -457,7 +457,6 @@ Opal.version = "0.3.27";
457
457
 
458
458
  };
459
459
 
460
- // line 126, (corelib), Class#include
461
460
  Class_prototype.$include = function(mods) {
462
461
  mods = __slice.call(arguments, 0);
463
462
 
@@ -478,7 +477,6 @@ Opal.version = "0.3.27";
478
477
 
479
478
  };
480
479
 
481
- // line 145, (corelib), Class#instance_methods
482
480
  Class_prototype.$instance_methods = function(include_super) {
483
481
  if (include_super == null) {
484
482
  include_super = false
@@ -500,19 +498,16 @@ Opal.version = "0.3.27";
500
498
 
501
499
  };
502
500
 
503
- // line 163, (corelib), Class#included
504
501
  Class_prototype.$included = function(mod) {
505
502
 
506
503
  return nil;
507
504
  };
508
505
 
509
- // line 166, (corelib), Class#inherited
510
506
  Class_prototype.$inherited = function(cls) {
511
507
 
512
508
  return nil;
513
509
  };
514
510
 
515
- // line 169, (corelib), Class#module_eval
516
511
  Class_prototype.$module_eval = TMP_3 = function() {
517
512
  var __context, block;
518
513
  block = TMP_3._p || nil, __context = block._s, TMP_3._p = null;
@@ -528,13 +523,11 @@ Opal.version = "0.3.27";
528
523
 
529
524
  Class_prototype.$class_eval = Class_prototype.$module_eval;
530
525
 
531
- // line 181, (corelib), Class#name
532
526
  Class_prototype.$name = function() {
533
527
 
534
528
  return this._name;
535
529
  };
536
530
 
537
- // line 185, (corelib), Class#new
538
531
  Class_prototype.$new = TMP_4 = function(args) {
539
532
  var __context, block;
540
533
  block = TMP_4._p || nil, __context = block._s, TMP_4._p = null;
@@ -549,7 +542,6 @@ Opal.version = "0.3.27";
549
542
 
550
543
  };
551
544
 
552
- // line 196, (corelib), Class#public
553
545
  Class_prototype.$public = function() {
554
546
 
555
547
  return nil;
@@ -559,43 +551,62 @@ Opal.version = "0.3.27";
559
551
 
560
552
  Class_prototype.$protected = Class_prototype.$public;
561
553
 
562
- // line 202, (corelib), Class#superclass
563
554
  Class_prototype.$superclass = function() {
564
555
 
565
556
 
566
557
  return this._super || nil;
567
558
 
568
559
  };
569
- ;Class._sdonate(["$new"]);
570
- })(self, null);
571
- (function(__base){
572
- // line 208, (corelib), module Kernel
560
+
561
+ return nil;
562
+ })(self, null)
563
+ })();
564
+ (function() {
565
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __module = __opal.module;
566
+
567
+ return (function(__base){
573
568
  function Kernel() {};
574
569
  Kernel = __module(__base, "Kernel", Kernel);
575
- var Kernel_prototype = Kernel.prototype, __scope = Kernel._scope, TMP_5, TMP_6, TMP_7, TMP_8, TMP_9, TMP_10, TMP_11, TMP_12;
570
+ var Kernel_prototype = Kernel.prototype, __scope = Kernel._scope, TMP_1, TMP_2, TMP_3, TMP_4, TMP_5, TMP_6, TMP_7, TMP_8;
576
571
 
577
- // line 209, (corelib), Kernel#=~
578
572
  Kernel_prototype['$=~'] = function(obj) {
579
573
 
580
574
  return false;
581
575
  };
582
576
 
583
- // line 213, (corelib), Kernel#==
584
577
  Kernel_prototype['$=='] = function(other) {
585
578
 
586
579
  return this === other;
587
580
  };
588
581
 
589
- // line 217, (corelib), Kernel#===
590
582
  Kernel_prototype['$==='] = function(other) {
591
583
 
592
584
  return this == other;
593
585
  };
594
586
 
595
- // line 221, (corelib), Kernel#__send__
596
- Kernel_prototype.$__send__ = TMP_5 = function(symbol, args) {
587
+ Kernel_prototype.$methods = function(all) {
588
+ if (all == null) {
589
+ all = true
590
+ }
591
+
592
+ var methods = [];
593
+ for(var k in this) {
594
+ if(k[0] == "$" && typeof (this)[k] === "function") {
595
+ if(all === false || all === nil) {
596
+ if(!Object.hasOwnProperty.call(this, k)) {
597
+ continue;
598
+ }
599
+ }
600
+ methods.push(k.substr(1));
601
+ }
602
+ }
603
+ return methods;
604
+
605
+ };
606
+
607
+ Kernel_prototype.$__send__ = TMP_1 = function(symbol, args) {
597
608
  var __context, block;
598
- block = TMP_5._p || nil, __context = block._s, TMP_5._p = null;
609
+ block = TMP_1._p || nil, __context = block._s, TMP_1._p = null;
599
610
  args = __slice.call(arguments, 1);
600
611
 
601
612
  return this['$' + symbol].apply(this, args);
@@ -604,7 +615,6 @@ Opal.version = "0.3.27";
604
615
 
605
616
  Kernel_prototype['$eql?'] = Kernel_prototype['$=='];
606
617
 
607
- // line 229, (corelib), Kernel#Array
608
618
  Kernel_prototype.$Array = function(object) {
609
619
 
610
620
 
@@ -619,46 +629,14 @@ Opal.version = "0.3.27";
619
629
 
620
630
  };
621
631
 
622
- // line 242, (corelib), Kernel#attribute_get
623
- Kernel_prototype.$attribute_get = function(name) {
624
-
625
-
626
- var meth = '$' + name;
627
- if (this[meth]) {
628
- return this[meth]();
629
- }
630
-
631
- meth += '?';
632
- if (this[meth]) {
633
- return this[meth]()
634
- }
635
-
636
- return nil;
637
-
638
- };
639
-
640
- // line 258, (corelib), Kernel#attribute_set
641
- Kernel_prototype.$attribute_set = function(name, value) {
642
-
643
-
644
- if (this['$' + name + '=']) {
645
- return this['$' + name + '='](value);
646
- }
647
-
648
- return nil;
649
-
650
- };
651
-
652
- // line 268, (corelib), Kernel#class
653
632
  Kernel_prototype.$class = function() {
654
633
 
655
634
  return this._klass;
656
635
  };
657
636
 
658
- // line 272, (corelib), Kernel#define_singleton_method
659
- Kernel_prototype.$define_singleton_method = TMP_6 = function(name) {
637
+ Kernel_prototype.$define_singleton_method = TMP_2 = function(name) {
660
638
  var __context, body;
661
- body = TMP_6._p || nil, __context = body._s, TMP_6._p = null;
639
+ body = TMP_2._p || nil, __context = body._s, TMP_2._p = null;
662
640
 
663
641
 
664
642
  if (body === nil) {
@@ -675,13 +653,11 @@ Opal.version = "0.3.27";
675
653
 
676
654
  };
677
655
 
678
- // line 288, (corelib), Kernel#equal?
679
656
  Kernel_prototype['$equal?'] = function(other) {
680
657
 
681
658
  return this === other;
682
659
  };
683
660
 
684
- // line 292, (corelib), Kernel#extend
685
661
  Kernel_prototype.$extend = function(mods) {
686
662
  mods = __slice.call(arguments, 0);
687
663
 
@@ -693,28 +669,24 @@ Opal.version = "0.3.27";
693
669
 
694
670
  };
695
671
 
696
- // line 302, (corelib), Kernel#hash
697
672
  Kernel_prototype.$hash = function() {
698
673
 
699
674
  return this._id;
700
675
  };
701
676
 
702
- // line 306, (corelib), Kernel#initialize
703
677
  Kernel_prototype.$initialize = function() {
704
678
 
705
679
  return nil;
706
680
  };
707
681
 
708
- // line 309, (corelib), Kernel#inspect
709
682
  Kernel_prototype.$inspect = function() {
710
683
 
711
684
  return this.$to_s();
712
685
  };
713
686
 
714
- // line 313, (corelib), Kernel#instance_eval
715
- Kernel_prototype.$instance_eval = TMP_7 = function(string) {
687
+ Kernel_prototype.$instance_eval = TMP_3 = function() {
716
688
  var __context, block;
717
- block = TMP_7._p || nil, __context = block._s, TMP_7._p = null;
689
+ block = TMP_3._p || nil, __context = block._s, TMP_3._p = null;
718
690
 
719
691
 
720
692
  if (block === nil) {
@@ -725,10 +697,9 @@ Opal.version = "0.3.27";
725
697
 
726
698
  };
727
699
 
728
- // line 323, (corelib), Kernel#instance_exec
729
- Kernel_prototype.$instance_exec = TMP_8 = function(args) {
700
+ Kernel_prototype.$instance_exec = TMP_4 = function(args) {
730
701
  var __context, block;
731
- block = TMP_8._p || nil, __context = block._s, TMP_8._p = null;
702
+ block = TMP_4._p || nil, __context = block._s, TMP_4._p = null;
732
703
  args = __slice.call(arguments, 0);
733
704
 
734
705
  if (block === nil) {
@@ -739,19 +710,16 @@ Opal.version = "0.3.27";
739
710
 
740
711
  };
741
712
 
742
- // line 333, (corelib), Kernel#instance_of?
743
713
  Kernel_prototype['$instance_of?'] = function(klass) {
744
714
 
745
715
  return this._klass === klass;
746
716
  };
747
717
 
748
- // line 337, (corelib), Kernel#instance_variable_defined?
749
718
  Kernel_prototype['$instance_variable_defined?'] = function(name) {
750
719
 
751
720
  return __hasOwn.call(this, name.substr(1));
752
721
  };
753
722
 
754
- // line 341, (corelib), Kernel#instance_variable_get
755
723
  Kernel_prototype.$instance_variable_get = function(name) {
756
724
 
757
725
 
@@ -761,13 +729,11 @@ Opal.version = "0.3.27";
761
729
 
762
730
  };
763
731
 
764
- // line 349, (corelib), Kernel#instance_variable_set
765
732
  Kernel_prototype.$instance_variable_set = function(name, value) {
766
733
 
767
734
  return this[name.substr(1)] = value;
768
735
  };
769
736
 
770
- // line 353, (corelib), Kernel#instance_variables
771
737
  Kernel_prototype.$instance_variables = function() {
772
738
 
773
739
 
@@ -781,7 +747,6 @@ Opal.version = "0.3.27";
781
747
 
782
748
  };
783
749
 
784
- // line 365, (corelib), Kernel#is_a?
785
750
  Kernel_prototype['$is_a?'] = function(klass) {
786
751
 
787
752
 
@@ -801,18 +766,16 @@ Opal.version = "0.3.27";
801
766
 
802
767
  Kernel_prototype['$kind_of?'] = Kernel_prototype['$is_a?'];
803
768
 
804
- // line 383, (corelib), Kernel#lambda
805
- Kernel_prototype.$lambda = TMP_9 = function() {
769
+ Kernel_prototype.$lambda = TMP_5 = function() {
806
770
  var __context, block;
807
- block = TMP_9._p || nil, __context = block._s, TMP_9._p = null;
771
+ block = TMP_5._p || nil, __context = block._s, TMP_5._p = null;
808
772
 
809
773
  return block;
810
774
  };
811
775
 
812
- // line 387, (corelib), Kernel#loop
813
- Kernel_prototype.$loop = TMP_10 = function() {
776
+ Kernel_prototype.$loop = TMP_6 = function() {
814
777
  var __context, block;
815
- block = TMP_10._p || nil, __context = block._s, TMP_10._p = null;
778
+ block = TMP_6._p || nil, __context = block._s, TMP_6._p = null;
816
779
 
817
780
  while (true) {;
818
781
  if (block.call(__context) === __breaker) return __breaker.$v;
@@ -820,22 +783,19 @@ Opal.version = "0.3.27";
820
783
  return this;
821
784
  };
822
785
 
823
- // line 395, (corelib), Kernel#nil?
824
786
  Kernel_prototype['$nil?'] = function() {
825
787
 
826
788
  return false;
827
789
  };
828
790
 
829
- // line 399, (corelib), Kernel#object_id
830
791
  Kernel_prototype.$object_id = function() {
831
792
 
832
793
  return this._id || (this._id = unique_id++);
833
794
  };
834
795
 
835
- // line 403, (corelib), Kernel#proc
836
- Kernel_prototype.$proc = TMP_11 = function() {
796
+ Kernel_prototype.$proc = TMP_7 = function() {
837
797
  var __context, block;
838
- block = TMP_11._p || nil, __context = block._s, TMP_11._p = null;
798
+ block = TMP_7._p || nil, __context = block._s, TMP_7._p = null;
839
799
 
840
800
 
841
801
  if (block === nil) {
@@ -846,20 +806,32 @@ Opal.version = "0.3.27";
846
806
 
847
807
  };
848
808
 
849
- // line 413, (corelib), Kernel#puts
850
809
  Kernel_prototype.$puts = function(strs) {
851
810
  strs = __slice.call(arguments, 0);
852
811
 
853
812
  for (var i = 0; i < strs.length; i++) {
854
- __opal.puts((strs[i]).$to_s());
813
+ if(strs[i] instanceof Array) {
814
+ this.$puts.apply(this, [].concat((strs[i])))
815
+ } else {
816
+ __opal.puts((strs[i]).$to_s());
817
+ }
855
818
  }
856
819
 
857
820
  return nil;
858
821
  };
859
822
 
823
+ Kernel_prototype.$p = function(args) {
824
+ args = __slice.call(arguments, 0);
825
+ console.log.apply(console, args);
826
+ if (args.$length()['$<='](1)) {
827
+ return args['$[]'](0)
828
+ } else {
829
+ return args
830
+ };
831
+ };
832
+
860
833
  Kernel_prototype.$print = Kernel_prototype.$puts;
861
834
 
862
- // line 424, (corelib), Kernel#raise
863
835
  Kernel_prototype.$raise = function(exception, string) {
864
836
 
865
837
 
@@ -874,13 +846,11 @@ Opal.version = "0.3.27";
874
846
 
875
847
  };
876
848
 
877
- // line 437, (corelib), Kernel#rand
878
849
  Kernel_prototype.$rand = function(max) {
879
850
 
880
851
  return max == null ? Math.random() : Math.floor(Math.random() * max);
881
852
  };
882
853
 
883
- // line 441, (corelib), Kernel#respond_to?
884
854
  Kernel_prototype['$respond_to?'] = function(name) {
885
855
 
886
856
  return !!this['$' + name];
@@ -888,7 +858,6 @@ Opal.version = "0.3.27";
888
858
 
889
859
  Kernel_prototype.$send = Kernel_prototype.$__send__;
890
860
 
891
- // line 447, (corelib), Kernel#singleton_class
892
861
  Kernel_prototype.$singleton_class = function() {
893
862
 
894
863
 
@@ -930,89 +899,80 @@ Opal.version = "0.3.27";
930
899
 
931
900
  };
932
901
 
933
- // line 487, (corelib), Kernel#tap
934
- Kernel_prototype.$tap = TMP_12 = function() {
902
+ Kernel_prototype.$tap = TMP_8 = function() {
935
903
  var __context, block;
936
- block = TMP_12._p || nil, __context = block._s, TMP_12._p = null;
904
+ block = TMP_8._p || nil, __context = block._s, TMP_8._p = null;
937
905
 
938
906
  if (block.call(__context, this) === __breaker) return __breaker.$v;
939
907
  return this;
940
908
  };
941
909
 
942
- // line 492, (corelib), Kernel#to_json
943
910
  Kernel_prototype.$to_json = function() {
944
911
 
945
912
  return this.$to_s().$to_json();
946
913
  };
947
914
 
948
- // line 496, (corelib), Kernel#to_proc
949
915
  Kernel_prototype.$to_proc = function() {
950
916
 
951
917
  return this;
952
918
  };
953
919
 
954
- // line 500, (corelib), Kernel#to_s
955
920
  Kernel_prototype.$to_s = function() {
956
921
 
957
922
  return "#<" + this._klass._name + ":" + this._id + ">";
958
923
  };
959
- ;Kernel._donate(["$=~", "$==", "$===", "$__send__", "$eql?", "$Array", "$attribute_get", "$attribute_set", "$class", "$define_singleton_method", "$equal?", "$extend", "$hash", "$initialize", "$inspect", "$instance_eval", "$instance_exec", "$instance_of?", "$instance_variable_defined?", "$instance_variable_get", "$instance_variable_set", "$instance_variables", "$is_a?", "$kind_of?", "$lambda", "$loop", "$nil?", "$object_id", "$proc", "$puts", "$print", "$raise", "$rand", "$respond_to?", "$send", "$singleton_class", "$tap", "$to_json", "$to_proc", "$to_s"]);
960
- })(self);
961
- (function(__base, __super){
962
- // line 504, (corelib), class NilClass
924
+ ;Kernel._donate(["$=~", "$==", "$===", "$methods", "$__send__", "$eql?", "$Array", "$class", "$define_singleton_method", "$equal?", "$extend", "$hash", "$initialize", "$inspect", "$instance_eval", "$instance_exec", "$instance_of?", "$instance_variable_defined?", "$instance_variable_get", "$instance_variable_set", "$instance_variables", "$is_a?", "$kind_of?", "$lambda", "$loop", "$nil?", "$object_id", "$proc", "$puts", "$p", "$print", "$raise", "$rand", "$respond_to?", "$send", "$singleton_class", "$tap", "$to_json", "$to_proc", "$to_s"]);
925
+ })(self)
926
+ })();
927
+ (function() {
928
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __klass = __opal.klass;
929
+
930
+ return (function(__base, __super){
963
931
  function NilClass() {};
964
932
  NilClass = __klass(__base, __super, "NilClass", NilClass);
933
+
965
934
  var NilClass_prototype = NilClass.prototype, __scope = NilClass._scope;
966
935
 
967
- // line 505, (corelib), NilClass#&
968
936
  NilClass_prototype['$&'] = function(other) {
969
937
 
970
938
  return false;
971
939
  };
972
940
 
973
- // line 509, (corelib), NilClass#|
974
941
  NilClass_prototype['$|'] = function(other) {
975
942
 
976
943
  return other !== false && other !== nil;
977
944
  };
978
945
 
979
- // line 513, (corelib), NilClass#^
980
946
  NilClass_prototype['$^'] = function(other) {
981
947
 
982
948
  return other !== false && other !== nil;
983
949
  };
984
950
 
985
- // line 517, (corelib), NilClass#==
986
951
  NilClass_prototype['$=='] = function(other) {
987
952
 
988
953
  return other === nil;
989
954
  };
990
955
 
991
- // line 521, (corelib), NilClass#inspect
992
956
  NilClass_prototype.$inspect = function() {
993
957
 
994
958
  return "nil";
995
959
  };
996
960
 
997
- // line 525, (corelib), NilClass#nil?
998
961
  NilClass_prototype['$nil?'] = function() {
999
962
 
1000
963
  return true;
1001
964
  };
1002
965
 
1003
- // line 529, (corelib), NilClass#singleton_class
1004
966
  NilClass_prototype.$singleton_class = function() {
1005
967
 
1006
968
  return __scope.NilClass;
1007
969
  };
1008
970
 
1009
- // line 533, (corelib), NilClass#to_a
1010
971
  NilClass_prototype.$to_a = function() {
1011
972
 
1012
973
  return [];
1013
974
  };
1014
975
 
1015
- // line 537, (corelib), NilClass#to_i
1016
976
  NilClass_prototype.$to_i = function() {
1017
977
 
1018
978
  return 0;
@@ -1020,54 +980,52 @@ Opal.version = "0.3.27";
1020
980
 
1021
981
  NilClass_prototype.$to_f = NilClass_prototype.$to_i;
1022
982
 
1023
- // line 543, (corelib), NilClass#to_json
1024
983
  NilClass_prototype.$to_json = function() {
1025
984
 
1026
985
  return "null";
1027
986
  };
1028
987
 
1029
- // line 547, (corelib), NilClass#to_native
1030
988
  NilClass_prototype.$to_native = function() {
1031
989
 
1032
990
  return null;
1033
991
  };
1034
992
 
1035
- // line 551, (corelib), NilClass#to_s
1036
993
  NilClass_prototype.$to_s = function() {
1037
994
 
1038
995
  return "";
1039
996
  };
1040
997
 
1041
- })(self, null);
1042
- (function(__base, __super){
1043
- // line 555, (corelib), class Boolean
998
+ return nil;
999
+ })(self, null)
1000
+ })();
1001
+ (function() {
1002
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __klass = __opal.klass;
1003
+
1004
+ return (function(__base, __super){
1044
1005
  function Boolean() {};
1045
1006
  Boolean = __klass(__base, __super, "Boolean", Boolean);
1007
+
1046
1008
  var Boolean_prototype = Boolean.prototype, __scope = Boolean._scope;
1047
1009
 
1048
1010
 
1049
1011
  Boolean_prototype._isBoolean = true;
1050
1012
 
1051
1013
 
1052
- // line 560, (corelib), Boolean#&
1053
1014
  Boolean_prototype['$&'] = function(other) {
1054
1015
 
1055
1016
  return (this == true) ? (other !== false && other !== nil) : false;
1056
1017
  };
1057
1018
 
1058
- // line 564, (corelib), Boolean#|
1059
1019
  Boolean_prototype['$|'] = function(other) {
1060
1020
 
1061
1021
  return (this == true) ? true : (other !== false && other !== nil);
1062
1022
  };
1063
1023
 
1064
- // line 568, (corelib), Boolean#^
1065
1024
  Boolean_prototype['$^'] = function(other) {
1066
1025
 
1067
1026
  return (this == true) ? (other === false || other === nil) : (other !== false && other !== nil);
1068
1027
  };
1069
1028
 
1070
- // line 572, (corelib), Boolean#==
1071
1029
  Boolean_prototype['$=='] = function(other) {
1072
1030
 
1073
1031
  return (this == true) === other.valueOf();
@@ -1075,33 +1033,34 @@ Opal.version = "0.3.27";
1075
1033
 
1076
1034
  Boolean_prototype.$singleton_class = Boolean_prototype.$class;
1077
1035
 
1078
- // line 578, (corelib), Boolean#to_json
1079
1036
  Boolean_prototype.$to_json = function() {
1080
1037
 
1081
1038
  return (this == true) ? 'true' : 'false';
1082
1039
  };
1083
1040
 
1084
- // line 582, (corelib), Boolean#to_s
1085
1041
  Boolean_prototype.$to_s = function() {
1086
1042
 
1087
1043
  return (this == true) ? 'true' : 'false';
1088
1044
  };
1089
1045
 
1090
- })(self, Boolean);
1046
+ return nil;
1047
+ })(self, Boolean)
1048
+ })();
1049
+ (function() {
1050
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __klass = __opal.klass;
1051
+
1091
1052
  (function(__base, __super){
1092
- // line 586, (corelib), class Exception
1093
1053
  function Exception() {};
1094
1054
  Exception = __klass(__base, __super, "Exception", Exception);
1095
- var Exception_prototype = Exception.prototype, __scope = Exception._scope;
1055
+
1056
+ ;Exception._sdonate(["$new"]); var Exception_prototype = Exception.prototype, __scope = Exception._scope;
1096
1057
  Exception_prototype.message = nil;
1097
1058
 
1098
- // line 587, (corelib), Exception#message
1099
1059
  Exception_prototype.$message = function() {
1100
1060
 
1101
1061
  return this.message
1102
- };
1062
+ }, nil;
1103
1063
 
1104
- // line 589, (corelib), Exception.new
1105
1064
  Exception.$new = function(message) {
1106
1065
  if (message == null) {
1107
1066
  message = ""
@@ -1113,7 +1072,6 @@ Opal.version = "0.3.27";
1113
1072
 
1114
1073
  };
1115
1074
 
1116
- // line 597, (corelib), Exception#backtrace
1117
1075
  Exception_prototype.$backtrace = function() {
1118
1076
 
1119
1077
 
@@ -1130,14 +1088,12 @@ Opal.version = "0.3.27";
1130
1088
 
1131
1089
  };
1132
1090
 
1133
- // line 612, (corelib), Exception#inspect
1134
1091
  Exception_prototype.$inspect = function() {
1135
1092
 
1136
1093
  return "#<" + (this.$class().$name()) + ": '" + (this.message) + "'>";
1137
1094
  };
1138
1095
 
1139
- Exception_prototype.$to_s = Exception_prototype.$message;
1140
- ;Exception._sdonate(["$new"]);
1096
+ return Exception_prototype.$to_s = Exception_prototype.$message;
1141
1097
  })(self, Error);
1142
1098
  __scope.StandardError = __scope.Exception;
1143
1099
  __scope.RuntimeError = __scope.Exception;
@@ -1148,26 +1104,27 @@ Opal.version = "0.3.27";
1148
1104
  __scope.ArgumentError = __scope.Exception;
1149
1105
  __scope.IndexError = __scope.Exception;
1150
1106
  __scope.KeyError = __scope.Exception;
1151
- __scope.RangeError = __scope.Exception;
1107
+ return __scope.RangeError = __scope.Exception;
1108
+ })();
1109
+ (function() {
1110
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __klass = __opal.klass, __gvars = __opal.gvars;
1111
+
1152
1112
  (function(__base, __super){
1153
- // line 629, (corelib), class Regexp
1154
1113
  function Regexp() {};
1155
1114
  Regexp = __klass(__base, __super, "Regexp", Regexp);
1156
- var Regexp_prototype = Regexp.prototype, __scope = Regexp._scope;
1157
1115
 
1158
- // line 630, (corelib), Regexp.escape
1116
+ ;Regexp._sdonate(["$escape", "$new"]); var Regexp_prototype = Regexp.prototype, __scope = Regexp._scope;
1117
+
1159
1118
  Regexp.$escape = function(string) {
1160
1119
 
1161
1120
  return string.replace(/([.*+?^=!:${}()|[]\/\])/g, '\$1');
1162
1121
  };
1163
1122
 
1164
- // line 634, (corelib), Regexp.new
1165
1123
  Regexp.$new = function(string, options) {
1166
1124
 
1167
1125
  return new RegExp(string, options);
1168
1126
  };
1169
1127
 
1170
- // line 638, (corelib), Regexp#==
1171
1128
  Regexp_prototype['$=='] = function(other) {
1172
1129
 
1173
1130
  return other.constructor == RegExp && this.toString() === other.toString();
@@ -1175,7 +1132,6 @@ Opal.version = "0.3.27";
1175
1132
 
1176
1133
  Regexp_prototype['$==='] = Regexp_prototype.test;
1177
1134
 
1178
- // line 644, (corelib), Regexp#=~
1179
1135
  Regexp_prototype['$=~'] = function(string) {
1180
1136
 
1181
1137
 
@@ -1200,7 +1156,6 @@ Opal.version = "0.3.27";
1200
1156
 
1201
1157
  Regexp_prototype.$inspect = Regexp_prototype.toString;
1202
1158
 
1203
- // line 667, (corelib), Regexp#match
1204
1159
  Regexp_prototype.$match = function(pattern) {
1205
1160
 
1206
1161
 
@@ -1219,7 +1174,6 @@ Opal.version = "0.3.27";
1219
1174
 
1220
1175
  };
1221
1176
 
1222
- // line 684, (corelib), Regexp#to_s
1223
1177
  Regexp_prototype.$to_s = function() {
1224
1178
 
1225
1179
  return this.source;
@@ -1234,70 +1188,67 @@ Opal.version = "0.3.27";
1234
1188
  return "<#MatchData " + this[0].$inspect() + ">";
1235
1189
  }
1236
1190
 
1237
- ;Regexp._sdonate(["$escape", "$new"]);
1238
1191
  })(self, RegExp);
1239
- (function(__base, __super){
1240
- // line 699, (corelib), class MatchData
1192
+ return (function(__base, __super){
1241
1193
  function MatchData() {};
1242
1194
  MatchData = __klass(__base, __super, "MatchData", MatchData);
1243
- var MatchData_prototype = MatchData.prototype, __scope = MatchData._scope;
1244
1195
 
1245
- nil
1196
+ var MatchData_prototype = MatchData.prototype, __scope = MatchData._scope;
1246
1197
 
1198
+ return nil
1247
1199
  })(self, null);
1248
- (function(__base){
1249
- // line 701, (corelib), module Comparable
1200
+ })();
1201
+ (function() {
1202
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __module = __opal.module;
1203
+
1204
+ return (function(__base){
1250
1205
  function Comparable() {};
1251
1206
  Comparable = __module(__base, "Comparable", Comparable);
1252
1207
  var Comparable_prototype = Comparable.prototype, __scope = Comparable._scope;
1253
1208
 
1254
- // line 702, (corelib), Comparable#<
1255
1209
  Comparable_prototype['$<'] = function(other) {
1256
1210
 
1257
1211
  return this['$<=>'](other)['$=='](-1);
1258
1212
  };
1259
1213
 
1260
- // line 706, (corelib), Comparable#<=
1261
1214
  Comparable_prototype['$<='] = function(other) {
1262
1215
 
1263
1216
  return this['$<=>'](other)['$<='](0);
1264
1217
  };
1265
1218
 
1266
- // line 710, (corelib), Comparable#==
1267
1219
  Comparable_prototype['$=='] = function(other) {
1268
1220
 
1269
1221
  return this['$<=>'](other)['$=='](0);
1270
1222
  };
1271
1223
 
1272
- // line 714, (corelib), Comparable#>
1273
1224
  Comparable_prototype['$>'] = function(other) {
1274
1225
 
1275
1226
  return this['$<=>'](other)['$=='](1);
1276
1227
  };
1277
1228
 
1278
- // line 718, (corelib), Comparable#>=
1279
1229
  Comparable_prototype['$>='] = function(other) {
1280
1230
 
1281
1231
  return this['$<=>'](other)['$>='](0);
1282
1232
  };
1283
1233
 
1284
- // line 722, (corelib), Comparable#between?
1285
1234
  Comparable_prototype['$between?'] = function(min, max) {
1286
1235
  var __a;
1287
1236
  return ((__a = this['$>'](min)) ? this['$<'](max) : __a);
1288
1237
  };
1289
1238
  ;Comparable._donate(["$<", "$<=", "$==", "$>", "$>=", "$between?"]);
1290
- })(self);
1291
- (function(__base){
1292
- // line 726, (corelib), module Enumerable
1239
+ })(self)
1240
+ })();
1241
+ (function() {
1242
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __module = __opal.module;
1243
+
1244
+ return (function(__base){
1293
1245
  function Enumerable() {};
1294
1246
  Enumerable = __module(__base, "Enumerable", Enumerable);
1295
- var Enumerable_prototype = Enumerable.prototype, __scope = Enumerable._scope, TMP_13, TMP_14, TMP_15, TMP_16, TMP_17, TMP_18, TMP_19, TMP_20, TMP_21, TMP_22, TMP_23;
1247
+ var Enumerable_prototype = Enumerable.prototype, __scope = Enumerable._scope, TMP_1, TMP_2, TMP_3, TMP_4, TMP_5, TMP_6, TMP_7, TMP_8, TMP_9, TMP_10, TMP_11, TMP_12;
1296
1248
 
1297
- // line 727, (corelib), Enumerable#all?
1298
- Enumerable_prototype['$all?'] = TMP_13 = function() {
1249
+ Enumerable_prototype['$all?'] = TMP_1 = function() {
1299
1250
  var __context, block;
1300
- block = TMP_13._p || nil, __context = block._s, TMP_13._p = null;
1251
+ block = TMP_1._p || nil, __context = block._s, TMP_1._p = null;
1301
1252
 
1302
1253
 
1303
1254
  var result = true, proc;
@@ -1336,10 +1287,9 @@ Opal.version = "0.3.27";
1336
1287
 
1337
1288
  };
1338
1289
 
1339
- // line 765, (corelib), Enumerable#any?
1340
- Enumerable_prototype['$any?'] = TMP_14 = function() {
1290
+ Enumerable_prototype['$any?'] = TMP_2 = function() {
1341
1291
  var __context, block;
1342
- block = TMP_14._p || nil, __context = block._s, TMP_14._p = null;
1292
+ block = TMP_2._p || nil, __context = block._s, TMP_2._p = null;
1343
1293
 
1344
1294
 
1345
1295
  var result = false, proc;
@@ -1378,10 +1328,9 @@ Opal.version = "0.3.27";
1378
1328
 
1379
1329
  };
1380
1330
 
1381
- // line 803, (corelib), Enumerable#collect
1382
- Enumerable_prototype.$collect = TMP_15 = function() {
1331
+ Enumerable_prototype.$collect = TMP_3 = function() {
1383
1332
  var __context, block;
1384
- block = TMP_15._p || nil, __context = block._s, TMP_15._p = null;
1333
+ block = TMP_3._p || nil, __context = block._s, TMP_3._p = null;
1385
1334
 
1386
1335
 
1387
1336
  var result = [];
@@ -1403,10 +1352,36 @@ Opal.version = "0.3.27";
1403
1352
 
1404
1353
  };
1405
1354
 
1406
- // line 824, (corelib), Enumerable#count
1407
- Enumerable_prototype.$count = TMP_16 = function(object) {
1355
+ Enumerable_prototype.$reduce = TMP_4 = function(object) {
1408
1356
  var __context, block;
1409
- block = TMP_16._p || nil, __context = block._s, TMP_16._p = null;
1357
+ block = TMP_4._p || nil, __context = block._s, TMP_4._p = null;
1358
+
1359
+
1360
+ var result = object == undefined ? 0 : object;
1361
+
1362
+ var proc = function() {
1363
+ var obj = __slice.call(arguments), value;
1364
+
1365
+ if ((value = block.apply(__context, [result].concat(obj))) === __breaker) {
1366
+ result = __breaker.$v;
1367
+ __breaker.$v = nil;
1368
+
1369
+ return __breaker;
1370
+ }
1371
+
1372
+ result = value;
1373
+ };
1374
+
1375
+ this.$each._p = proc;
1376
+ this.$each();
1377
+
1378
+ return result;
1379
+
1380
+ };
1381
+
1382
+ Enumerable_prototype.$count = TMP_5 = function(object) {
1383
+ var __context, block;
1384
+ block = TMP_5._p || nil, __context = block._s, TMP_5._p = null;
1410
1385
 
1411
1386
 
1412
1387
  var result = 0;
@@ -1437,10 +1412,9 @@ Opal.version = "0.3.27";
1437
1412
 
1438
1413
  };
1439
1414
 
1440
- // line 854, (corelib), Enumerable#detect
1441
- Enumerable_prototype.$detect = TMP_17 = function(ifnone) {
1415
+ Enumerable_prototype.$detect = TMP_6 = function(ifnone) {
1442
1416
  var __context, block;
1443
- block = TMP_17._p || nil, __context = block._s, TMP_17._p = null;
1417
+ block = TMP_6._p || nil, __context = block._s, TMP_6._p = null;
1444
1418
 
1445
1419
 
1446
1420
  var result = nil;
@@ -1474,7 +1448,6 @@ Opal.version = "0.3.27";
1474
1448
 
1475
1449
  };
1476
1450
 
1477
- // line 887, (corelib), Enumerable#drop
1478
1451
  Enumerable_prototype.$drop = function(number) {
1479
1452
 
1480
1453
 
@@ -1495,10 +1468,9 @@ Opal.version = "0.3.27";
1495
1468
 
1496
1469
  };
1497
1470
 
1498
- // line 906, (corelib), Enumerable#drop_while
1499
- Enumerable_prototype.$drop_while = TMP_18 = function() {
1471
+ Enumerable_prototype.$drop_while = TMP_7 = function() {
1500
1472
  var __context, block;
1501
- block = TMP_18._p || nil, __context = block._s, TMP_18._p = null;
1473
+ block = TMP_7._p || nil, __context = block._s, TMP_7._p = null;
1502
1474
 
1503
1475
 
1504
1476
  var result = [];
@@ -1514,8 +1486,8 @@ Opal.version = "0.3.27";
1514
1486
  result.push(obj);
1515
1487
  return value;
1516
1488
  }
1517
-
1518
-
1489
+
1490
+
1519
1491
  return __breaker;
1520
1492
  };
1521
1493
 
@@ -1525,10 +1497,9 @@ Opal.version = "0.3.27";
1525
1497
 
1526
1498
  };
1527
1499
 
1528
- // line 932, (corelib), Enumerable#each_with_index
1529
- Enumerable_prototype.$each_with_index = TMP_19 = function() {
1500
+ Enumerable_prototype.$each_with_index = TMP_8 = function() {
1530
1501
  var __context, block;
1531
- block = TMP_19._p || nil, __context = block._s, TMP_19._p = null;
1502
+ block = TMP_8._p || nil, __context = block._s, TMP_8._p = null;
1532
1503
 
1533
1504
 
1534
1505
  var index = 0;
@@ -1549,10 +1520,9 @@ Opal.version = "0.3.27";
1549
1520
 
1550
1521
  };
1551
1522
 
1552
- // line 952, (corelib), Enumerable#each_with_object
1553
- Enumerable_prototype.$each_with_object = TMP_20 = function(object) {
1523
+ Enumerable_prototype.$each_with_object = TMP_9 = function(object) {
1554
1524
  var __context, block;
1555
- block = TMP_20._p || nil, __context = block._s, TMP_20._p = null;
1525
+ block = TMP_9._p || nil, __context = block._s, TMP_9._p = null;
1556
1526
 
1557
1527
 
1558
1528
  this.$each._p = function(obj) {
@@ -1569,7 +1539,6 @@ Opal.version = "0.3.27";
1569
1539
 
1570
1540
  };
1571
1541
 
1572
- // line 968, (corelib), Enumerable#entries
1573
1542
  Enumerable_prototype.$entries = function() {
1574
1543
 
1575
1544
 
@@ -1587,10 +1556,9 @@ Opal.version = "0.3.27";
1587
1556
 
1588
1557
  Enumerable_prototype.$find = Enumerable_prototype.$detect;
1589
1558
 
1590
- // line 984, (corelib), Enumerable#find_all
1591
- Enumerable_prototype.$find_all = TMP_21 = function() {
1559
+ Enumerable_prototype.$find_all = TMP_10 = function() {
1592
1560
  var __context, block;
1593
- block = TMP_21._p || nil, __context = block._s, TMP_21._p = null;
1561
+ block = TMP_10._p || nil, __context = block._s, TMP_10._p = null;
1594
1562
 
1595
1563
 
1596
1564
  var result = [];
@@ -1613,16 +1581,15 @@ Opal.version = "0.3.27";
1613
1581
 
1614
1582
  };
1615
1583
 
1616
- // line 1006, (corelib), Enumerable#find_index
1617
- Enumerable_prototype.$find_index = TMP_22 = function(object) {
1584
+ Enumerable_prototype.$find_index = TMP_11 = function(object) {
1618
1585
  var __context, block;
1619
- block = TMP_22._p || nil, __context = block._s, TMP_22._p = null;
1586
+ block = TMP_11._p || nil, __context = block._s, TMP_11._p = null;
1620
1587
 
1621
1588
 
1622
1589
  var proc, result = nil, index = 0;
1623
1590
 
1624
1591
  if (object != null) {
1625
- proc = function (obj) {
1592
+ proc = function (obj) {
1626
1593
  if ((obj)['$=='](object)) {
1627
1594
  result = index;
1628
1595
  return __breaker;
@@ -1655,7 +1622,6 @@ Opal.version = "0.3.27";
1655
1622
 
1656
1623
  };
1657
1624
 
1658
- // line 1044, (corelib), Enumerable#first
1659
1625
  Enumerable_prototype.$first = function(number) {
1660
1626
 
1661
1627
 
@@ -1687,10 +1653,9 @@ Opal.version = "0.3.27";
1687
1653
 
1688
1654
  };
1689
1655
 
1690
- // line 1074, (corelib), Enumerable#grep
1691
- Enumerable_prototype.$grep = TMP_23 = function(pattern) {
1656
+ Enumerable_prototype.$grep = TMP_12 = function(pattern) {
1692
1657
  var __context, block;
1693
- block = TMP_23._p || nil, __context = block._s, TMP_23._p = null;
1658
+ block = TMP_12._p || nil, __context = block._s, TMP_12._p = null;
1694
1659
 
1695
1660
 
1696
1661
  var result = [];
@@ -1721,18 +1686,26 @@ Opal.version = "0.3.27";
1721
1686
 
1722
1687
  };
1723
1688
 
1689
+ Enumerable_prototype.$map = Enumerable_prototype.$collect;
1690
+
1724
1691
  Enumerable_prototype.$select = Enumerable_prototype.$find_all;
1725
1692
 
1726
1693
  Enumerable_prototype.$take = Enumerable_prototype.$first;
1727
1694
 
1728
1695
  Enumerable_prototype.$to_a = Enumerable_prototype.$entries;
1729
- ;Enumerable._donate(["$all?", "$any?", "$collect", "$count", "$detect", "$drop", "$drop_while", "$each_with_index", "$each_with_object", "$entries", "$find", "$find_all", "$find_index", "$first", "$grep", "$select", "$take", "$to_a"]);
1730
- })(self);
1731
- (function(__base, __super){
1732
- // line 1110, (corelib), class Array
1696
+
1697
+ Enumerable_prototype.$inject = Enumerable_prototype.$reduce;
1698
+ ;Enumerable._donate(["$all?", "$any?", "$collect", "$reduce", "$count", "$detect", "$drop", "$drop_while", "$each_with_index", "$each_with_object", "$entries", "$find", "$find_all", "$find_index", "$first", "$grep", "$map", "$select", "$take", "$to_a", "$inject"]);
1699
+ })(self)
1700
+ })();
1701
+ (function() {
1702
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __klass = __opal.klass;
1703
+
1704
+ return (function(__base, __super){
1733
1705
  function Array() {};
1734
1706
  Array = __klass(__base, __super, "Array", Array);
1735
- var Array_prototype = Array.prototype, __scope = Array._scope, TMP_24, TMP_25, TMP_26, TMP_27, TMP_28, TMP_29, TMP_30, TMP_31, TMP_32, TMP_33, TMP_34, TMP_35, TMP_36, TMP_37, TMP_38, TMP_39, TMP_40;
1707
+
1708
+ ;Array._sdonate(["$[]", "$new"]); var Array_prototype = Array.prototype, __scope = Array._scope, TMP_1, TMP_2, TMP_3, TMP_4, TMP_5, TMP_6, TMP_7, TMP_8, TMP_9, TMP_10, TMP_11, TMP_12, TMP_13, TMP_14, TMP_15, TMP_16, TMP_17;
1736
1709
 
1737
1710
 
1738
1711
  Array_prototype._isArray = true;
@@ -1740,7 +1713,6 @@ Opal.version = "0.3.27";
1740
1713
 
1741
1714
  Array.$include(__scope.Enumerable);
1742
1715
 
1743
- // line 1117, (corelib), Array.[]
1744
1716
  Array['$[]'] = function(objects) {
1745
1717
  objects = __slice.call(arguments, 0);
1746
1718
 
@@ -1748,10 +1720,9 @@ Opal.version = "0.3.27";
1748
1720
 
1749
1721
  };
1750
1722
 
1751
- // line 1123, (corelib), Array.new
1752
- Array.$new = TMP_24 = function(size, obj) {
1723
+ Array.$new = TMP_1 = function(size, obj) {
1753
1724
  var __context, block;
1754
- block = TMP_24._p || nil, __context = block._s, TMP_24._p = null;
1725
+ block = TMP_1._p || nil, __context = block._s, TMP_1._p = null;
1755
1726
  if (obj == null) {
1756
1727
  obj = nil
1757
1728
  }
@@ -1780,7 +1751,6 @@ Opal.version = "0.3.27";
1780
1751
 
1781
1752
  };
1782
1753
 
1783
- // line 1149, (corelib), Array#&
1784
1754
  Array_prototype['$&'] = function(other) {
1785
1755
 
1786
1756
 
@@ -1807,7 +1777,6 @@ Opal.version = "0.3.27";
1807
1777
 
1808
1778
  };
1809
1779
 
1810
- // line 1174, (corelib), Array#*
1811
1780
  Array_prototype['$*'] = function(other) {
1812
1781
 
1813
1782
 
@@ -1825,13 +1794,11 @@ Opal.version = "0.3.27";
1825
1794
 
1826
1795
  };
1827
1796
 
1828
- // line 1190, (corelib), Array#+
1829
1797
  Array_prototype['$+'] = function(other) {
1830
1798
 
1831
1799
  return this.slice().concat(other.slice());
1832
1800
  };
1833
1801
 
1834
- // line 1194, (corelib), Array#-
1835
1802
  Array_prototype['$-'] = function(other) {
1836
1803
  var __a, __b;
1837
1804
  return (__b = this, __b.$reject._p = (__a = function(i) {
@@ -1843,14 +1810,12 @@ Opal.version = "0.3.27";
1843
1810
  }, __a._s = this, __a), __b.$reject());
1844
1811
  };
1845
1812
 
1846
- // line 1198, (corelib), Array#<<
1847
1813
  Array_prototype['$<<'] = function(object) {
1848
1814
 
1849
1815
  this.push(object);
1850
1816
  return this;
1851
1817
  };
1852
1818
 
1853
- // line 1204, (corelib), Array#<=>
1854
1819
  Array_prototype['$<=>'] = function(other) {
1855
1820
 
1856
1821
 
@@ -1872,7 +1837,6 @@ Opal.version = "0.3.27";
1872
1837
 
1873
1838
  };
1874
1839
 
1875
- // line 1224, (corelib), Array#==
1876
1840
  Array_prototype['$=='] = function(other) {
1877
1841
 
1878
1842
 
@@ -1890,7 +1854,6 @@ Opal.version = "0.3.27";
1890
1854
 
1891
1855
  };
1892
1856
 
1893
- // line 1240, (corelib), Array#[]
1894
1857
  Array_prototype['$[]'] = function(index, length) {
1895
1858
 
1896
1859
 
@@ -1939,7 +1902,6 @@ Opal.version = "0.3.27";
1939
1902
 
1940
1903
  };
1941
1904
 
1942
- // line 1287, (corelib), Array#[]=
1943
1905
  Array_prototype['$[]='] = function(index, value) {
1944
1906
 
1945
1907
 
@@ -1953,7 +1915,6 @@ Opal.version = "0.3.27";
1953
1915
 
1954
1916
  };
1955
1917
 
1956
- // line 1299, (corelib), Array#assoc
1957
1918
  Array_prototype.$assoc = function(object) {
1958
1919
 
1959
1920
 
@@ -1967,7 +1928,6 @@ Opal.version = "0.3.27";
1967
1928
 
1968
1929
  };
1969
1930
 
1970
- // line 1311, (corelib), Array#at
1971
1931
  Array_prototype.$at = function(index) {
1972
1932
 
1973
1933
 
@@ -1983,23 +1943,20 @@ Opal.version = "0.3.27";
1983
1943
 
1984
1944
  };
1985
1945
 
1986
- // line 1325, (corelib), Array#clear
1987
1946
  Array_prototype.$clear = function() {
1988
1947
 
1989
1948
  this.splice(0, this.length);
1990
1949
  return this;
1991
1950
  };
1992
1951
 
1993
- // line 1331, (corelib), Array#clone
1994
1952
  Array_prototype.$clone = function() {
1995
1953
 
1996
1954
  return this.slice();
1997
1955
  };
1998
1956
 
1999
- // line 1335, (corelib), Array#collect
2000
- Array_prototype.$collect = TMP_25 = function() {
1957
+ Array_prototype.$collect = TMP_2 = function() {
2001
1958
  var __context, block;
2002
- block = TMP_25._p || nil, __context = block._s, TMP_25._p = null;
1959
+ block = TMP_2._p || nil, __context = block._s, TMP_2._p = null;
2003
1960
 
2004
1961
 
2005
1962
  var result = [];
@@ -2016,10 +1973,9 @@ Opal.version = "0.3.27";
2016
1973
 
2017
1974
  };
2018
1975
 
2019
- // line 1351, (corelib), Array#collect!
2020
- Array_prototype['$collect!'] = TMP_26 = function() {
1976
+ Array_prototype['$collect!'] = TMP_3 = function() {
2021
1977
  var __context, block;
2022
- block = TMP_26._p || nil, __context = block._s, TMP_26._p = null;
1978
+ block = TMP_3._p || nil, __context = block._s, TMP_3._p = null;
2023
1979
 
2024
1980
 
2025
1981
  for (var i = 0, length = this.length, val; i < length; i++) {
@@ -2033,7 +1989,6 @@ Opal.version = "0.3.27";
2033
1989
  return this;
2034
1990
  };
2035
1991
 
2036
- // line 1365, (corelib), Array#compact
2037
1992
  Array_prototype.$compact = function() {
2038
1993
 
2039
1994
 
@@ -2049,7 +2004,6 @@ Opal.version = "0.3.27";
2049
2004
 
2050
2005
  };
2051
2006
 
2052
- // line 1379, (corelib), Array#compact!
2053
2007
  Array_prototype['$compact!'] = function() {
2054
2008
 
2055
2009
 
@@ -2068,7 +2022,6 @@ Opal.version = "0.3.27";
2068
2022
 
2069
2023
  };
2070
2024
 
2071
- // line 1396, (corelib), Array#concat
2072
2025
  Array_prototype.$concat = function(other) {
2073
2026
 
2074
2027
 
@@ -2079,7 +2032,6 @@ Opal.version = "0.3.27";
2079
2032
  return this;
2080
2033
  };
2081
2034
 
2082
- // line 1406, (corelib), Array#count
2083
2035
  Array_prototype.$count = function(object) {
2084
2036
 
2085
2037
 
@@ -2099,7 +2051,6 @@ Opal.version = "0.3.27";
2099
2051
 
2100
2052
  };
2101
2053
 
2102
- // line 1424, (corelib), Array#delete
2103
2054
  Array_prototype.$delete = function(object) {
2104
2055
 
2105
2056
 
@@ -2118,7 +2069,6 @@ Opal.version = "0.3.27";
2118
2069
 
2119
2070
  };
2120
2071
 
2121
- // line 1441, (corelib), Array#delete_at
2122
2072
  Array_prototype.$delete_at = function(index) {
2123
2073
 
2124
2074
 
@@ -2138,10 +2088,9 @@ Opal.version = "0.3.27";
2138
2088
 
2139
2089
  };
2140
2090
 
2141
- // line 1459, (corelib), Array#delete_if
2142
- Array_prototype.$delete_if = TMP_27 = function() {
2091
+ Array_prototype.$delete_if = TMP_4 = function() {
2143
2092
  var __context, block;
2144
- block = TMP_27._p || nil, __context = block._s, TMP_27._p = null;
2093
+ block = TMP_4._p || nil, __context = block._s, TMP_4._p = null;
2145
2094
 
2146
2095
 
2147
2096
  for (var i = 0, length = this.length, value; i < length; i++) {
@@ -2160,7 +2109,6 @@ Opal.version = "0.3.27";
2160
2109
  return this;
2161
2110
  };
2162
2111
 
2163
- // line 1478, (corelib), Array#drop
2164
2112
  Array_prototype.$drop = function(number) {
2165
2113
 
2166
2114
  return this.slice(number);
@@ -2168,10 +2116,9 @@ Opal.version = "0.3.27";
2168
2116
 
2169
2117
  Array_prototype.$dup = Array_prototype.$clone;
2170
2118
 
2171
- // line 1484, (corelib), Array#each
2172
- Array_prototype.$each = TMP_28 = function() {
2119
+ Array_prototype.$each = TMP_5 = function() {
2173
2120
  var __context, block;
2174
- block = TMP_28._p || nil, __context = block._s, TMP_28._p = null;
2121
+ block = TMP_5._p || nil, __context = block._s, TMP_5._p = null;
2175
2122
 
2176
2123
  for (var i = 0, length = this.length; i < length; i++) {
2177
2124
  if (block.call(__context, this[i]) === __breaker) return __breaker.$v;
@@ -2179,10 +2126,9 @@ Opal.version = "0.3.27";
2179
2126
  return this;
2180
2127
  };
2181
2128
 
2182
- // line 1492, (corelib), Array#each_index
2183
- Array_prototype.$each_index = TMP_29 = function() {
2129
+ Array_prototype.$each_index = TMP_6 = function() {
2184
2130
  var __context, block;
2185
- block = TMP_29._p || nil, __context = block._s, TMP_29._p = null;
2131
+ block = TMP_6._p || nil, __context = block._s, TMP_6._p = null;
2186
2132
 
2187
2133
  for (var i = 0, length = this.length; i < length; i++) {
2188
2134
  if (block.call(__context, i) === __breaker) return __breaker.$v;
@@ -2190,16 +2136,14 @@ Opal.version = "0.3.27";
2190
2136
  return this;
2191
2137
  };
2192
2138
 
2193
- // line 1500, (corelib), Array#empty?
2194
2139
  Array_prototype['$empty?'] = function() {
2195
2140
 
2196
2141
  return !this.length;
2197
2142
  };
2198
2143
 
2199
- // line 1504, (corelib), Array#fetch
2200
- Array_prototype.$fetch = TMP_30 = function(index, defaults) {
2144
+ Array_prototype.$fetch = TMP_7 = function(index, defaults) {
2201
2145
  var __context, block;
2202
- block = TMP_30._p || nil, __context = block._s, TMP_30._p = null;
2146
+ block = TMP_7._p || nil, __context = block._s, TMP_7._p = null;
2203
2147
 
2204
2148
 
2205
2149
  var original = index;
@@ -2224,7 +2168,6 @@ Opal.version = "0.3.27";
2224
2168
 
2225
2169
  };
2226
2170
 
2227
- // line 1528, (corelib), Array#first
2228
2171
  Array_prototype.$first = function(count) {
2229
2172
 
2230
2173
 
@@ -2236,7 +2179,6 @@ Opal.version = "0.3.27";
2236
2179
 
2237
2180
  };
2238
2181
 
2239
- // line 1538, (corelib), Array#flatten
2240
2182
  Array_prototype.$flatten = function(level) {
2241
2183
 
2242
2184
 
@@ -2265,7 +2207,6 @@ Opal.version = "0.3.27";
2265
2207
 
2266
2208
  };
2267
2209
 
2268
- // line 1565, (corelib), Array#flatten!
2269
2210
  Array_prototype['$flatten!'] = function(level) {
2270
2211
 
2271
2212
 
@@ -2276,13 +2217,11 @@ Opal.version = "0.3.27";
2276
2217
 
2277
2218
  };
2278
2219
 
2279
- // line 1574, (corelib), Array#hash
2280
2220
  Array_prototype.$hash = function() {
2281
2221
 
2282
2222
  return this._id || (this._id = unique_id++);
2283
2223
  };
2284
2224
 
2285
- // line 1578, (corelib), Array#include?
2286
2225
  Array_prototype['$include?'] = function(member) {
2287
2226
 
2288
2227
 
@@ -2296,10 +2235,9 @@ Opal.version = "0.3.27";
2296
2235
 
2297
2236
  };
2298
2237
 
2299
- // line 1590, (corelib), Array#index
2300
- Array_prototype.$index = TMP_31 = function(object) {
2238
+ Array_prototype.$index = TMP_8 = function(object) {
2301
2239
  var __context, block;
2302
- block = TMP_31._p || nil, __context = block._s, TMP_31._p = null;
2240
+ block = TMP_8._p || nil, __context = block._s, TMP_8._p = null;
2303
2241
 
2304
2242
 
2305
2243
  if (object != null) {
@@ -2325,7 +2263,6 @@ Opal.version = "0.3.27";
2325
2263
 
2326
2264
  };
2327
2265
 
2328
- // line 1615, (corelib), Array#insert
2329
2266
  Array_prototype.$insert = function(index, objects) {
2330
2267
  objects = __slice.call(arguments, 1);
2331
2268
 
@@ -2349,7 +2286,6 @@ Opal.version = "0.3.27";
2349
2286
  return this;
2350
2287
  };
2351
2288
 
2352
- // line 1638, (corelib), Array#inspect
2353
2289
  Array_prototype.$inspect = function() {
2354
2290
 
2355
2291
 
@@ -2371,7 +2307,6 @@ Opal.version = "0.3.27";
2371
2307
 
2372
2308
  };
2373
2309
 
2374
- // line 1658, (corelib), Array#join
2375
2310
  Array_prototype.$join = function(sep) {
2376
2311
  if (sep == null) {
2377
2312
  sep = ""
@@ -2387,10 +2322,9 @@ Opal.version = "0.3.27";
2387
2322
 
2388
2323
  };
2389
2324
 
2390
- // line 1670, (corelib), Array#keep_if
2391
- Array_prototype.$keep_if = TMP_32 = function() {
2325
+ Array_prototype.$keep_if = TMP_9 = function() {
2392
2326
  var __context, block;
2393
- block = TMP_32._p || nil, __context = block._s, TMP_32._p = null;
2327
+ block = TMP_9._p || nil, __context = block._s, TMP_9._p = null;
2394
2328
 
2395
2329
 
2396
2330
  for (var i = 0, length = this.length, value; i < length; i++) {
@@ -2409,7 +2343,6 @@ Opal.version = "0.3.27";
2409
2343
  return this;
2410
2344
  };
2411
2345
 
2412
- // line 1689, (corelib), Array#last
2413
2346
  Array_prototype.$last = function(count) {
2414
2347
 
2415
2348
 
@@ -2430,7 +2363,6 @@ Opal.version = "0.3.27";
2430
2363
 
2431
2364
  };
2432
2365
 
2433
- // line 1708, (corelib), Array#length
2434
2366
  Array_prototype.$length = function() {
2435
2367
 
2436
2368
  return this.length;
@@ -2440,7 +2372,6 @@ Opal.version = "0.3.27";
2440
2372
 
2441
2373
  Array_prototype['$map!'] = Array_prototype['$collect!'];
2442
2374
 
2443
- // line 1716, (corelib), Array#pop
2444
2375
  Array_prototype.$pop = function(count) {
2445
2376
 
2446
2377
 
@@ -2458,7 +2389,6 @@ Opal.version = "0.3.27";
2458
2389
 
2459
2390
  };
2460
2391
 
2461
- // line 1732, (corelib), Array#push
2462
2392
  Array_prototype.$push = function(objects) {
2463
2393
  objects = __slice.call(arguments, 0);
2464
2394
 
@@ -2469,7 +2399,6 @@ Opal.version = "0.3.27";
2469
2399
  return this;
2470
2400
  };
2471
2401
 
2472
- // line 1742, (corelib), Array#rassoc
2473
2402
  Array_prototype.$rassoc = function(object) {
2474
2403
 
2475
2404
 
@@ -2487,10 +2416,9 @@ Opal.version = "0.3.27";
2487
2416
 
2488
2417
  };
2489
2418
 
2490
- // line 1758, (corelib), Array#reject
2491
- Array_prototype.$reject = TMP_33 = function() {
2419
+ Array_prototype.$reject = TMP_10 = function() {
2492
2420
  var __context, block;
2493
- block = TMP_33._p || nil, __context = block._s, TMP_33._p = null;
2421
+ block = TMP_10._p || nil, __context = block._s, TMP_10._p = null;
2494
2422
 
2495
2423
 
2496
2424
  var result = [];
@@ -2508,32 +2436,17 @@ Opal.version = "0.3.27";
2508
2436
 
2509
2437
  };
2510
2438
 
2511
- // line 1775, (corelib), Array#reject!
2512
- Array_prototype['$reject!'] = TMP_34 = function() {
2513
- var __context, block;
2514
- block = TMP_34._p || nil, __context = block._s, TMP_34._p = null;
2439
+ Array_prototype['$reject!'] = TMP_11 = function() {
2440
+ var __a, __context, block;
2441
+ block = TMP_11._p || nil, __context = block._s, TMP_11._p = null;
2515
2442
 
2516
2443
 
2517
2444
  var original = this.length;
2518
-
2519
- for (var i = 0, length = this.length, value; i < length; i++) {
2520
- if ((value = block.call(__context, this[i])) === __breaker) {
2521
- return __breaker.$v;
2522
- }
2523
-
2524
- if (value !== false && value !== nil) {
2525
- this.splice(i, 1);
2526
-
2527
- length--;
2528
- i--;
2529
- }
2530
- }
2531
-
2532
- return original === this.length ? nil : this;
2445
+ (__a = this, __a.$delete_if._p = block.$to_proc(), __a.$delete_if());
2446
+ return this.length === original ? nil : this;
2533
2447
 
2534
2448
  };
2535
2449
 
2536
- // line 1796, (corelib), Array#replace
2537
2450
  Array_prototype.$replace = function(other) {
2538
2451
 
2539
2452
 
@@ -2545,7 +2458,6 @@ Opal.version = "0.3.27";
2545
2458
 
2546
2459
  Array_prototype.$reverse = Array_prototype.reverse;
2547
2460
 
2548
- // line 1806, (corelib), Array#reverse!
2549
2461
  Array_prototype['$reverse!'] = function() {
2550
2462
 
2551
2463
 
@@ -2555,19 +2467,17 @@ Opal.version = "0.3.27";
2555
2467
 
2556
2468
  };
2557
2469
 
2558
- // line 1814, (corelib), Array#reverse_each
2559
- Array_prototype.$reverse_each = TMP_35 = function() {
2470
+ Array_prototype.$reverse_each = TMP_12 = function() {
2560
2471
  var __a, __context, block;
2561
- block = TMP_35._p || nil, __context = block._s, TMP_35._p = null;
2472
+ block = TMP_12._p || nil, __context = block._s, TMP_12._p = null;
2562
2473
 
2563
2474
  (__a = this.$reverse(), __a.$each._p = block.$to_proc(), __a.$each());
2564
2475
  return this;
2565
2476
  };
2566
2477
 
2567
- // line 1820, (corelib), Array#rindex
2568
- Array_prototype.$rindex = TMP_36 = function(object) {
2478
+ Array_prototype.$rindex = TMP_13 = function(object) {
2569
2479
  var __context, block;
2570
- block = TMP_36._p || nil, __context = block._s, TMP_36._p = null;
2480
+ block = TMP_13._p || nil, __context = block._s, TMP_13._p = null;
2571
2481
 
2572
2482
 
2573
2483
  if (block !== nil) {
@@ -2593,10 +2503,9 @@ Opal.version = "0.3.27";
2593
2503
 
2594
2504
  };
2595
2505
 
2596
- // line 1845, (corelib), Array#select
2597
- Array_prototype.$select = TMP_37 = function() {
2506
+ Array_prototype.$select = TMP_14 = function() {
2598
2507
  var __context, block;
2599
- block = TMP_37._p || nil, __context = block._s, TMP_37._p = null;
2508
+ block = TMP_14._p || nil, __context = block._s, TMP_14._p = null;
2600
2509
 
2601
2510
 
2602
2511
  var result = [];
@@ -2617,34 +2526,17 @@ Opal.version = "0.3.27";
2617
2526
 
2618
2527
  };
2619
2528
 
2620
- // line 1865, (corelib), Array#select!
2621
- Array_prototype['$select!'] = TMP_38 = function() {
2622
- var __context, block;
2623
- block = TMP_38._p || nil, __context = block._s, TMP_38._p = null;
2529
+ Array_prototype['$select!'] = TMP_15 = function() {
2530
+ var __a, __context, block;
2531
+ block = TMP_15._p || nil, __context = block._s, TMP_15._p = null;
2624
2532
 
2625
2533
 
2626
2534
  var original = this.length;
2627
-
2628
- for (var i = 0, length = original, item, value; i < length; i++) {
2629
- item = this[i];
2630
-
2631
- if ((value = block(__context, item)) === __breaker) {
2632
- return __breaker.$v;
2633
- }
2634
-
2635
- if (value === false || value === nil) {
2636
- this.splice(i, 1);
2637
-
2638
- length--;
2639
- i--;
2640
- }
2641
- }
2642
-
2535
+ (__a = this, __a.$keep_if._p = block.$to_proc(), __a.$keep_if());
2643
2536
  return this.length === original ? nil : this;
2644
2537
 
2645
2538
  };
2646
2539
 
2647
- // line 1888, (corelib), Array#shift
2648
2540
  Array_prototype.$shift = function(count) {
2649
2541
 
2650
2542
 
@@ -2660,7 +2552,6 @@ Opal.version = "0.3.27";
2660
2552
 
2661
2553
  Array_prototype.$slice = Array_prototype['$[]'];
2662
2554
 
2663
- // line 1902, (corelib), Array#slice!
2664
2555
  Array_prototype['$slice!'] = function(index, length) {
2665
2556
 
2666
2557
 
@@ -2680,16 +2571,14 @@ Opal.version = "0.3.27";
2680
2571
 
2681
2572
  };
2682
2573
 
2683
- // line 1920, (corelib), Array#take
2684
2574
  Array_prototype.$take = function(count) {
2685
2575
 
2686
2576
  return this.slice(0, count);
2687
2577
  };
2688
2578
 
2689
- // line 1924, (corelib), Array#take_while
2690
- Array_prototype.$take_while = TMP_39 = function() {
2579
+ Array_prototype.$take_while = TMP_16 = function() {
2691
2580
  var __context, block;
2692
- block = TMP_39._p || nil, __context = block._s, TMP_39._p = null;
2581
+ block = TMP_16._p || nil, __context = block._s, TMP_16._p = null;
2693
2582
 
2694
2583
 
2695
2584
  var result = [];
@@ -2712,7 +2601,6 @@ Opal.version = "0.3.27";
2712
2601
 
2713
2602
  };
2714
2603
 
2715
- // line 1946, (corelib), Array#to_a
2716
2604
  Array_prototype.$to_a = function() {
2717
2605
 
2718
2606
  return this;
@@ -2720,7 +2608,6 @@ Opal.version = "0.3.27";
2720
2608
 
2721
2609
  Array_prototype.$to_ary = Array_prototype.$to_a;
2722
2610
 
2723
- // line 1952, (corelib), Array#to_json
2724
2611
  Array_prototype.$to_json = function() {
2725
2612
 
2726
2613
 
@@ -2736,7 +2623,6 @@ Opal.version = "0.3.27";
2736
2623
 
2737
2624
  Array_prototype.$to_s = Array_prototype.$inspect;
2738
2625
 
2739
- // line 1966, (corelib), Array#uniq
2740
2626
  Array_prototype.$uniq = function() {
2741
2627
 
2742
2628
 
@@ -2758,7 +2644,6 @@ Opal.version = "0.3.27";
2758
2644
 
2759
2645
  };
2760
2646
 
2761
- // line 1986, (corelib), Array#uniq!
2762
2647
  Array_prototype['$uniq!'] = function() {
2763
2648
 
2764
2649
 
@@ -2784,7 +2669,6 @@ Opal.version = "0.3.27";
2784
2669
 
2785
2670
  };
2786
2671
 
2787
- // line 2010, (corelib), Array#unshift
2788
2672
  Array_prototype.$unshift = function(objects) {
2789
2673
  objects = __slice.call(arguments, 0);
2790
2674
 
@@ -2796,10 +2680,9 @@ Opal.version = "0.3.27";
2796
2680
 
2797
2681
  };
2798
2682
 
2799
- // line 2020, (corelib), Array#zip
2800
- Array_prototype.$zip = TMP_40 = function(others) {
2683
+ Array_prototype.$zip = TMP_17 = function(others) {
2801
2684
  var __context, block;
2802
- block = TMP_40._p || nil, __context = block._s, TMP_40._p = null;
2685
+ block = TMP_17._p || nil, __context = block._s, TMP_17._p = null;
2803
2686
  others = __slice.call(arguments, 0);
2804
2687
 
2805
2688
  var result = [], size = this.length, part, o;
@@ -2831,13 +2714,18 @@ Opal.version = "0.3.27";
2831
2714
  return result;
2832
2715
 
2833
2716
  };
2834
- ;Array._sdonate(["$[]", "$new"]);
2835
- })(self, Array);
2836
- (function(__base, __super){
2837
- // line 2052, (corelib), class Hash
2717
+
2718
+ return nil;
2719
+ })(self, Array)
2720
+ })();
2721
+ (function() {
2722
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __klass = __opal.klass;
2723
+
2724
+ return (function(__base, __super){
2838
2725
  function Hash() {};
2839
2726
  Hash = __klass(__base, __super, "Hash", Hash);
2840
- var Hash_prototype = Hash.prototype, __scope = Hash._scope, TMP_41, TMP_42, TMP_43, TMP_44, TMP_45, TMP_46, TMP_47, TMP_48, TMP_49, TMP_50, TMP_51, TMP_52;
2727
+
2728
+ ;Hash._sdonate(["$[]", "$allocate", "$from_native", "$new"]); var Hash_prototype = Hash.prototype, __scope = Hash._scope, TMP_1, TMP_2, TMP_3, TMP_4, TMP_5, TMP_6, TMP_7, TMP_8, TMP_9, TMP_10, TMP_11, TMP_12;
2841
2729
  Hash_prototype.proc = Hash_prototype.none = nil;
2842
2730
 
2843
2731
  Hash.$include(__scope.Enumerable);
@@ -2846,49 +2734,64 @@ Opal.version = "0.3.27";
2846
2734
  __hash = Opal.hash = function() {
2847
2735
  var hash = new Hash,
2848
2736
  args = __slice.call(arguments),
2737
+ keys = [],
2849
2738
  assocs = {};
2850
2739
 
2851
2740
  hash.map = assocs;
2741
+ hash.keys = keys;
2852
2742
 
2853
2743
  for (var i = 0, length = args.length, key; i < length; i++) {
2854
- key = args[i];
2855
- assocs[key] = [key, args[++i]];
2744
+ var key = args[i], obj = args[++i];
2745
+
2746
+ if (assocs[key] == null) {
2747
+ keys.push(key);
2748
+ }
2749
+
2750
+ assocs[key] = obj;
2856
2751
  }
2857
2752
 
2858
2753
  return hash;
2859
2754
  };
2755
+
2756
+ // hash2 is a faster creator for hashes that just use symbols and
2757
+ // strings as keys. The map and keys array can be constructed at
2758
+ // compile time, so they are just added here by the constructor
2759
+ // function
2760
+ __hash2 = Opal.hash2 = function(keys, map) {
2761
+ var hash = new Hash;
2762
+ hash.keys = keys;
2763
+ hash.map = map;
2764
+ return hash;
2765
+ }
2860
2766
 
2861
2767
 
2862
- // line 2072, (corelib), Hash.[]
2863
2768
  Hash['$[]'] = function(objs) {
2864
2769
  objs = __slice.call(arguments, 0);
2865
2770
  return __hash.apply(null, objs);
2866
2771
  };
2867
2772
 
2868
- // line 2076, (corelib), Hash.allocate
2869
2773
  Hash.$allocate = function() {
2870
2774
 
2871
2775
  return __hash();
2872
2776
  };
2873
2777
 
2874
- // line 2080, (corelib), Hash.from_native
2875
2778
  Hash.$from_native = function(obj) {
2876
2779
 
2877
2780
 
2878
- var hash = __hash(), map = hash.map;
2781
+ var hash = __hash(), map = hash.map, keys = hash.keys;
2879
2782
 
2880
2783
  for (var key in obj) {
2881
- map[key] = [key, obj[key]]
2784
+ keys.push(key);
2785
+ map[key] = obj[key];
2882
2786
  }
2883
2787
 
2884
2788
  return hash;
2885
2789
 
2886
2790
  };
2887
2791
 
2888
- // line 2092, (corelib), Hash.new
2889
- Hash.$new = TMP_41 = function(defaults) {
2792
+ Hash.$new = TMP_1 = function(defaults) {
2890
2793
  var __context, block;
2891
- block = TMP_41._p || nil, __context = block._s, TMP_41._p = null;
2794
+ block = TMP_1._p || nil, __context = block._s, TMP_1._p = null;
2892
2795
 
2893
2796
 
2894
2797
  var hash = __hash();
@@ -2904,30 +2807,28 @@ Opal.version = "0.3.27";
2904
2807
 
2905
2808
  };
2906
2809
 
2907
- // line 2107, (corelib), Hash#==
2908
2810
  Hash_prototype['$=='] = function(other) {
2909
-
2811
+ var __a;
2910
2812
 
2911
2813
  if (this === other) {
2912
2814
  return true;
2913
2815
  }
2914
2816
 
2915
- if (!other.map) {
2817
+ if (!other.map || !other.keys) {
2818
+ return false;
2819
+ }
2820
+
2821
+ if (this.keys.length !== other.keys.length) {
2916
2822
  return false;
2917
2823
  }
2918
2824
 
2919
2825
  var map = this.map,
2920
2826
  map2 = other.map;
2921
2827
 
2922
- for (var assoc in map) {
2923
- if (!map2[assoc]) {
2924
- return false;
2925
- }
2926
-
2927
- var obj = map[assoc][1],
2928
- obj2 = map2[assoc][1];
2828
+ for (var i = 0, length = this.keys.length; i < length; i++) {
2829
+ var key = this.keys[i], obj = map[key], obj2 = map2[key];
2929
2830
 
2930
- if (!(obj)['$=='](obj2)) {
2831
+ if ((__a = (obj)['$=='](obj2), (__a === nil || __a === false))) {
2931
2832
  return false;
2932
2833
  }
2933
2834
  }
@@ -2936,14 +2837,13 @@ Opal.version = "0.3.27";
2936
2837
 
2937
2838
  };
2938
2839
 
2939
- // line 2137, (corelib), Hash#[]
2940
2840
  Hash_prototype['$[]'] = function(key) {
2941
2841
 
2942
2842
 
2943
- var bucket;
2843
+ var bucket = this.map[key];
2944
2844
 
2945
- if (bucket = this.map[key]) {
2946
- return bucket[1];
2845
+ if (bucket != null) {
2846
+ return bucket;
2947
2847
  }
2948
2848
 
2949
2849
  var proc = this.proc;
@@ -2956,25 +2856,31 @@ Opal.version = "0.3.27";
2956
2856
 
2957
2857
  };
2958
2858
 
2959
- // line 2155, (corelib), Hash#[]=
2960
2859
  Hash_prototype['$[]='] = function(key, value) {
2961
2860
 
2962
2861
 
2963
- this.map[key] = [key, value];
2862
+ var map = this.map;
2863
+
2864
+ if (!__hasOwn.call(map, key)) {
2865
+ this.keys.push(key);
2866
+ }
2867
+
2868
+ map[key] = value;
2964
2869
 
2965
2870
  return value;
2966
2871
 
2967
2872
  };
2968
2873
 
2969
- // line 2163, (corelib), Hash#assoc
2970
2874
  Hash_prototype.$assoc = function(object) {
2971
2875
 
2972
2876
 
2973
- for (var assoc in this.map) {
2974
- var bucket = this.map[assoc];
2877
+ var keys = this.keys, key;
2975
2878
 
2976
- if ((bucket[0])['$=='](object)) {
2977
- return [bucket[0], bucket[1]];
2879
+ for (var i = 0, length = keys.length; i < length; i++) {
2880
+ key = keys[i];
2881
+
2882
+ if ((key)['$=='](object)) {
2883
+ return [key, this.map[key]];
2978
2884
  }
2979
2885
  }
2980
2886
 
@@ -2982,66 +2888,61 @@ Opal.version = "0.3.27";
2982
2888
 
2983
2889
  };
2984
2890
 
2985
- // line 2177, (corelib), Hash#clear
2986
2891
  Hash_prototype.$clear = function() {
2987
2892
 
2988
2893
 
2989
2894
  this.map = {};
2990
-
2895
+ this.keys = [];
2991
2896
  return this;
2992
2897
 
2993
2898
  };
2994
2899
 
2995
- // line 2185, (corelib), Hash#clone
2996
2900
  Hash_prototype.$clone = function() {
2997
2901
 
2998
2902
 
2999
2903
  var result = __hash(),
3000
2904
  map = this.map,
3001
- map2 = result.map;
2905
+ map2 = result.map,
2906
+ keys2 = result.keys;
3002
2907
 
3003
- for (var assoc in map) {
3004
- map2[assoc] = [map[assoc][0], map[assoc][1]];
2908
+ for (var i = 0, length = this.keys.length; i < length; i++) {
2909
+ keys2.push(this.keys[i]);
2910
+ map2[this.keys[i]] = map[this.keys[i]];
3005
2911
  }
3006
2912
 
3007
2913
  return result;
3008
2914
 
3009
2915
  };
3010
2916
 
3011
- // line 2199, (corelib), Hash#default
3012
2917
  Hash_prototype.$default = function() {
3013
2918
 
3014
2919
  return this.none;
3015
2920
  };
3016
2921
 
3017
- // line 2203, (corelib), Hash#default=
3018
2922
  Hash_prototype['$default='] = function(object) {
3019
2923
 
3020
2924
  return this.none = object;
3021
2925
  };
3022
2926
 
3023
- // line 2207, (corelib), Hash#default_proc
3024
2927
  Hash_prototype.$default_proc = function() {
3025
2928
 
3026
2929
  return this.proc;
3027
2930
  };
3028
2931
 
3029
- // line 2211, (corelib), Hash#default_proc=
3030
2932
  Hash_prototype['$default_proc='] = function(proc) {
3031
2933
 
3032
2934
  return this.proc = proc;
3033
2935
  };
3034
2936
 
3035
- // line 2215, (corelib), Hash#delete
3036
2937
  Hash_prototype.$delete = function(key) {
3037
2938
 
3038
2939
 
3039
- var map = this.map, result;
3040
-
3041
- if (result = map[key]) {
3042
- result = result[1];
2940
+ var map = this.map, result = map[key];
3043
2941
 
2942
+ if (result != null) {
3044
2943
  delete map[key];
2944
+ this.keys.$delete(key);
2945
+
3045
2946
  return result;
3046
2947
  }
3047
2948
 
@@ -3049,24 +2950,26 @@ Opal.version = "0.3.27";
3049
2950
 
3050
2951
  };
3051
2952
 
3052
- // line 2230, (corelib), Hash#delete_if
3053
- Hash_prototype.$delete_if = TMP_42 = function() {
2953
+ Hash_prototype.$delete_if = TMP_2 = function() {
3054
2954
  var __context, block;
3055
- block = TMP_42._p || nil, __context = block._s, TMP_42._p = null;
2955
+ block = TMP_2._p || nil, __context = block._s, TMP_2._p = null;
3056
2956
 
3057
2957
 
3058
- var map = this.map;
2958
+ var map = this.map, keys = this.keys, value;
3059
2959
 
3060
- for (var assoc in map) {
3061
- var bucket = map[assoc],
3062
- value;
2960
+ for (var i = 0, length = keys.length; i < length; i++) {
2961
+ var key = keys[i], obj = map[key];
3063
2962
 
3064
- if ((value = block.call(__context, bucket[0], bucket[1])) === __breaker) {
2963
+ if ((value = block.call(__context, key, obj)) === __breaker) {
3065
2964
  return __breaker.$v;
3066
2965
  }
3067
2966
 
3068
2967
  if (value !== false && value !== nil) {
3069
- delete map[assoc];
2968
+ keys.splice(i, 1);
2969
+ delete map[key];
2970
+
2971
+ length--;
2972
+ i--;
3070
2973
  }
3071
2974
  }
3072
2975
 
@@ -3076,18 +2979,17 @@ Opal.version = "0.3.27";
3076
2979
 
3077
2980
  Hash_prototype.$dup = Hash_prototype.$clone;
3078
2981
 
3079
- // line 2253, (corelib), Hash#each
3080
- Hash_prototype.$each = TMP_43 = function() {
2982
+ Hash_prototype.$each = TMP_3 = function() {
3081
2983
  var __context, block;
3082
- block = TMP_43._p || nil, __context = block._s, TMP_43._p = null;
2984
+ block = TMP_3._p || nil, __context = block._s, TMP_3._p = null;
3083
2985
 
3084
2986
 
3085
- var map = this.map;
2987
+ var map = this.map, keys = this.keys;
3086
2988
 
3087
- for (var assoc in map) {
3088
- var bucket = map[assoc];
2989
+ for (var i = 0, length = keys.length; i < length; i++) {
2990
+ var key = keys[i];
3089
2991
 
3090
- if (block.call(__context, bucket[0], bucket[1]) === __breaker) {
2992
+ if (block.call(__context, key, map[key]) === __breaker) {
3091
2993
  return __breaker.$v;
3092
2994
  }
3093
2995
  }
@@ -3096,18 +2998,17 @@ Opal.version = "0.3.27";
3096
2998
 
3097
2999
  };
3098
3000
 
3099
- // line 2269, (corelib), Hash#each_key
3100
- Hash_prototype.$each_key = TMP_44 = function() {
3001
+ Hash_prototype.$each_key = TMP_4 = function() {
3101
3002
  var __context, block;
3102
- block = TMP_44._p || nil, __context = block._s, TMP_44._p = null;
3003
+ block = TMP_4._p || nil, __context = block._s, TMP_4._p = null;
3103
3004
 
3104
3005
 
3105
- var map = this.map;
3006
+ var keys = this.keys;
3106
3007
 
3107
- for (var assoc in map) {
3108
- var bucket = map[assoc];
3008
+ for (var i = 0, length = keys.length; i < length; i++) {
3009
+ var key = keys[i];
3109
3010
 
3110
- if (block.call(__context, bucket[0]) === __breaker) {
3011
+ if (block.call(__context, key) === __breaker) {
3111
3012
  return __breaker.$v;
3112
3013
  }
3113
3014
  }
@@ -3118,18 +3019,15 @@ Opal.version = "0.3.27";
3118
3019
 
3119
3020
  Hash_prototype.$each_pair = Hash_prototype.$each;
3120
3021
 
3121
- // line 2287, (corelib), Hash#each_value
3122
- Hash_prototype.$each_value = TMP_45 = function() {
3022
+ Hash_prototype.$each_value = TMP_5 = function() {
3123
3023
  var __context, block;
3124
- block = TMP_45._p || nil, __context = block._s, TMP_45._p = null;
3024
+ block = TMP_5._p || nil, __context = block._s, TMP_5._p = null;
3125
3025
 
3126
3026
 
3127
- var map = this.map;
3027
+ var map = this.map, keys = this.keys;
3128
3028
 
3129
- for (var assoc in map) {
3130
- var bucket = map[assoc];
3131
-
3132
- if (block.call(__context, bucket[1]) === __breaker) {
3029
+ for (var i = 0, length = keys.length; i < length; i++) {
3030
+ if (block.call(__context, map[keys[i]]) === __breaker) {
3133
3031
  return __breaker.$v;
3134
3032
  }
3135
3033
  }
@@ -3138,30 +3036,24 @@ Opal.version = "0.3.27";
3138
3036
 
3139
3037
  };
3140
3038
 
3141
- // line 2303, (corelib), Hash#empty?
3142
3039
  Hash_prototype['$empty?'] = function() {
3143
3040
 
3144
3041
 
3145
- for (var assoc in this.map) {
3146
- return false;
3147
- }
3148
-
3149
- return true;
3042
+ return this.keys.length === 0;
3150
3043
 
3151
3044
  };
3152
3045
 
3153
3046
  Hash_prototype['$eql?'] = Hash_prototype['$=='];
3154
3047
 
3155
- // line 2315, (corelib), Hash#fetch
3156
- Hash_prototype.$fetch = TMP_46 = function(key, defaults) {
3048
+ Hash_prototype.$fetch = TMP_6 = function(key, defaults) {
3157
3049
  var __context, block;
3158
- block = TMP_46._p || nil, __context = block._s, TMP_46._p = null;
3050
+ block = TMP_6._p || nil, __context = block._s, TMP_6._p = null;
3159
3051
 
3160
3052
 
3161
- var bucket = this.map[key];
3053
+ var value = this.map[key];
3162
3054
 
3163
- if (bucket) {
3164
- return bucket[1];
3055
+ if (value != null) {
3056
+ return value;
3165
3057
  }
3166
3058
 
3167
3059
  if (block !== nil) {
@@ -3182,17 +3074,13 @@ Opal.version = "0.3.27";
3182
3074
 
3183
3075
  };
3184
3076
 
3185
- // line 2341, (corelib), Hash#flatten
3186
3077
  Hash_prototype.$flatten = function(level) {
3187
- var __a, __b;
3188
3078
 
3189
- var map = this.map,
3190
- result = [];
3079
+
3080
+ var map = this.map, keys = this.keys, result = [];
3191
3081
 
3192
- for (var assoc in map) {
3193
- var bucket = map[assoc],
3194
- key = bucket[0],
3195
- value = bucket[1];
3082
+ for (var i = 0, length = keys.length; i < length; i++) {
3083
+ var key = keys[i], value = map[key];
3196
3084
 
3197
3085
  result.push(key);
3198
3086
 
@@ -3201,7 +3089,7 @@ Opal.version = "0.3.27";
3201
3089
  result.push(value);
3202
3090
  }
3203
3091
  else {
3204
- result = result.concat((value).$flatten((__a = level, __b = 1, typeof(__a) === 'number' ? __a - __b : __a['$-'](__b))));
3092
+ result = result.concat((value).$flatten(level - 1));
3205
3093
  }
3206
3094
  }
3207
3095
  else {
@@ -3213,18 +3101,16 @@ Opal.version = "0.3.27";
3213
3101
 
3214
3102
  };
3215
3103
 
3216
- // line 2370, (corelib), Hash#has_key?
3217
3104
  Hash_prototype['$has_key?'] = function(key) {
3218
3105
 
3219
- return !!this.map[key];
3106
+ return this.map[key] != null;
3220
3107
  };
3221
3108
 
3222
- // line 2374, (corelib), Hash#has_value?
3223
3109
  Hash_prototype['$has_value?'] = function(value) {
3224
3110
 
3225
3111
 
3226
3112
  for (var assoc in this.map) {
3227
- if ((this.map[assoc][1])['$=='](value)) {
3113
+ if ((this.map[assoc])['$=='](value)) {
3228
3114
  return true;
3229
3115
  }
3230
3116
  }
@@ -3233,7 +3119,6 @@ Opal.version = "0.3.27";
3233
3119
 
3234
3120
  };
3235
3121
 
3236
- // line 2386, (corelib), Hash#hash
3237
3122
  Hash_prototype.$hash = function() {
3238
3123
 
3239
3124
  return this._id;
@@ -3241,15 +3126,16 @@ Opal.version = "0.3.27";
3241
3126
 
3242
3127
  Hash_prototype['$include?'] = Hash_prototype['$has_key?'];
3243
3128
 
3244
- // line 2392, (corelib), Hash#index
3245
3129
  Hash_prototype.$index = function(object) {
3246
3130
 
3247
3131
 
3248
- for (var assoc in this.map) {
3249
- var bucket = this.map[assoc];
3132
+ var map = this.map, keys = this.keys;
3133
+
3134
+ for (var i = 0, length = keys.length; i < length; i++) {
3135
+ var key = keys[i];
3250
3136
 
3251
- if (object['$=='](bucket[1])) {
3252
- return bucket[0];
3137
+ if (object['$=='](map[key])) {
3138
+ return key;
3253
3139
  }
3254
3140
  }
3255
3141
 
@@ -3257,17 +3143,16 @@ Opal.version = "0.3.27";
3257
3143
 
3258
3144
  };
3259
3145
 
3260
- // line 2406, (corelib), Hash#indexes
3261
3146
  Hash_prototype.$indexes = function(keys) {
3262
3147
  keys = __slice.call(arguments, 0);
3263
3148
 
3264
- var result = [], map = this.map, bucket;
3149
+ var result = [], map = this.map, val;
3265
3150
 
3266
3151
  for (var i = 0, length = keys.length; i < length; i++) {
3267
- var key = keys[i];
3152
+ var key = keys[i], val = map[key];
3268
3153
 
3269
- if (bucket = map[key]) {
3270
- result.push(bucket[1]);
3154
+ if (val != null) {
3155
+ result.push(val);
3271
3156
  }
3272
3157
  else {
3273
3158
  result.push(this.none);
@@ -3280,57 +3165,57 @@ Opal.version = "0.3.27";
3280
3165
 
3281
3166
  Hash_prototype.$indices = Hash_prototype.$indexes;
3282
3167
 
3283
- // line 2427, (corelib), Hash#inspect
3284
3168
  Hash_prototype.$inspect = function() {
3285
3169
 
3286
3170
 
3287
- var inspect = [],
3288
- map = this.map;
3289
-
3290
- for (var assoc in map) {
3291
- var bucket = map[assoc];
3171
+ var inspect = [], keys = this.keys, map = this.map;
3292
3172
 
3293
- inspect.push((bucket[0]).$inspect() + '=>' + (bucket[1]).$inspect());
3173
+ for (var i = 0, length = keys.length; i < length; i++) {
3174
+ var key = keys[i];
3175
+ inspect.push((key).$inspect() + '=>' + (map[key]).$inspect());
3294
3176
  }
3177
+
3295
3178
  return '{' + inspect.join(', ') + '}';
3296
3179
 
3297
3180
  };
3298
3181
 
3299
- // line 2441, (corelib), Hash#invert
3300
3182
  Hash_prototype.$invert = function() {
3301
3183
 
3302
3184
 
3303
- var result = __hash(),
3304
- map = this.map,
3305
- map2 = result.map;
3185
+ var result = __hash(), keys = this.keys, map = this.map,
3186
+ keys2 = result.keys, map2 = result.map;
3306
3187
 
3307
- for (var assoc in map) {
3308
- var bucket = map[assoc];
3188
+ for (var i = 0, length = keys.length; i < length; i++) {
3189
+ var key = keys[i], obj = map[key];
3309
3190
 
3310
- map2[bucket[1]] = [bucket[1], bucket[0]];
3191
+ keys2.push(obj);
3192
+ map2[obj] = key;
3311
3193
  }
3312
3194
 
3313
3195
  return result;
3314
3196
 
3315
3197
  };
3316
3198
 
3317
- // line 2457, (corelib), Hash#keep_if
3318
- Hash_prototype.$keep_if = TMP_47 = function() {
3199
+ Hash_prototype.$keep_if = TMP_7 = function() {
3319
3200
  var __context, block;
3320
- block = TMP_47._p || nil, __context = block._s, TMP_47._p = null;
3201
+ block = TMP_7._p || nil, __context = block._s, TMP_7._p = null;
3321
3202
 
3322
3203
 
3323
- var map = this.map, value;
3204
+ var map = this.map, keys = this.keys, value;
3324
3205
 
3325
- for (var assoc in map) {
3326
- var bucket = map[assoc];
3206
+ for (var i = 0, length = keys.length; i < length; i++) {
3207
+ var key = keys[i], obj = map[key];
3327
3208
 
3328
- if ((value = block.call(__context, bucket[0], bucket[1])) === __breaker) {
3209
+ if ((value = block.call(__context, key, obj)) === __breaker) {
3329
3210
  return __breaker.$v;
3330
3211
  }
3331
3212
 
3332
3213
  if (value === false || value === nil) {
3333
- delete map[assoc];
3214
+ keys.splice(i, 1);
3215
+ delete map[key];
3216
+
3217
+ length--;
3218
+ i--;
3334
3219
  }
3335
3220
  }
3336
3221
 
@@ -3342,70 +3227,61 @@ Opal.version = "0.3.27";
3342
3227
 
3343
3228
  Hash_prototype['$key?'] = Hash_prototype['$has_key?'];
3344
3229
 
3345
- // line 2481, (corelib), Hash#keys
3346
3230
  Hash_prototype.$keys = function() {
3347
3231
 
3348
3232
 
3349
- var result = [];
3350
-
3351
- for (var assoc in this.map) {
3352
- result.push(this.map[assoc][0]);
3353
- }
3354
-
3355
- return result;
3233
+ return this.keys.slice(0);
3356
3234
 
3357
3235
  };
3358
3236
 
3359
- // line 2493, (corelib), Hash#length
3360
3237
  Hash_prototype.$length = function() {
3361
3238
 
3362
3239
 
3363
- var result = 0;
3364
-
3365
- for (var assoc in this.map) {
3366
- result++;
3367
- }
3368
-
3369
- return result;
3240
+ return this.keys.length;
3370
3241
 
3371
3242
  };
3372
3243
 
3373
3244
  Hash_prototype['$member?'] = Hash_prototype['$has_key?'];
3374
3245
 
3375
- // line 2507, (corelib), Hash#merge
3376
- Hash_prototype.$merge = TMP_48 = function(other) {
3246
+ Hash_prototype.$merge = TMP_8 = function(other) {
3377
3247
  var __context, block;
3378
- block = TMP_48._p || nil, __context = block._s, TMP_48._p = null;
3248
+ block = TMP_8._p || nil, __context = block._s, TMP_8._p = null;
3379
3249
 
3380
3250
 
3381
- var result = __hash(),
3382
- map = this.map,
3383
- map2 = result.map;
3251
+ var keys = this.keys, map = this.map,
3252
+ result = __hash(), keys2 = result.keys, map2 = result.map;
3384
3253
 
3385
- for (var assoc in map) {
3386
- var bucket = map[assoc];
3254
+ for (var i = 0, length = keys.length; i < length; i++) {
3255
+ var key = keys[i];
3387
3256
 
3388
- map2[assoc] = [bucket[0], bucket[1]];
3257
+ keys2.push(key);
3258
+ map2[key] = map[key];
3389
3259
  }
3390
3260
 
3391
- map = other.map;
3261
+ var keys = other.keys, map = other.map;
3392
3262
 
3393
3263
  if (block === nil) {
3394
- for (var assoc in map) {
3395
- var bucket = map[assoc];
3264
+ for (var i = 0, length = keys.length; i < length; i++) {
3265
+ var key = keys[i];
3396
3266
 
3397
- map2[assoc] = [bucket[0], bucket[1]];
3267
+ if (map2[key] == null) {
3268
+ keys2.push(key);
3269
+ }
3270
+
3271
+ map2[key] = map[key];
3398
3272
  }
3399
3273
  }
3400
3274
  else {
3401
- for (var assoc in map) {
3402
- var bucket = map[assoc], key = bucket[0], val = bucket[1];
3275
+ for (var i = 0, length = keys.length; i < length; i++) {
3276
+ var key = keys[i];
3403
3277
 
3404
- if (__hasOwn.call(map2, assoc)) {
3405
- val = block.call(__context, key, map2[assoc][1], val);
3278
+ if (map2[key] == null) {
3279
+ keys2.push(key);
3280
+ map2[key] = map[key];
3281
+ }
3282
+ else {
3283
+ map2[key] = block.call(__context, key, map2[key], map[key]);
3406
3284
  }
3407
-
3408
- map2[assoc] = [key, val];
3409
3285
  }
3410
3286
  }
3411
3287
 
@@ -3413,31 +3289,36 @@ Opal.version = "0.3.27";
3413
3289
 
3414
3290
  };
3415
3291
 
3416
- // line 2544, (corelib), Hash#merge!
3417
- Hash_prototype['$merge!'] = TMP_49 = function(other) {
3292
+ Hash_prototype['$merge!'] = TMP_9 = function(other) {
3418
3293
  var __context, block;
3419
- block = TMP_49._p || nil, __context = block._s, TMP_49._p = null;
3294
+ block = TMP_9._p || nil, __context = block._s, TMP_9._p = null;
3420
3295
 
3421
3296
 
3422
- var map = this.map,
3423
- map2 = other.map;
3297
+ var keys = this.keys, map = this.map,
3298
+ keys2 = other.keys, map2 = other.map;
3424
3299
 
3425
3300
  if (block === nil) {
3426
- for (var assoc in map2) {
3427
- var bucket = map2[assoc];
3301
+ for (var i = 0, length = keys2.length; i < length; i++) {
3302
+ var key = keys2[i];
3303
+
3304
+ if (map[key] == null) {
3305
+ keys.push(key);
3306
+ }
3428
3307
 
3429
- map[assoc] = [bucket[0], bucket[1]];
3308
+ map[key] = map2[key];
3430
3309
  }
3431
3310
  }
3432
3311
  else {
3433
- for (var assoc in map2) {
3434
- var bucket = map2[assoc], key = bucket[0], val = bucket[1];
3312
+ for (var i = 0, length = keys2.length; i < length; i++) {
3313
+ var key = keys2[i];
3435
3314
 
3436
- if (__hasOwn.call(map, assoc)) {
3437
- val = block.call(__context, key, map[assoc][1], val);
3315
+ if (map[key] == null) {
3316
+ keys.push(key);
3317
+ map[key] = map2[key];
3318
+ }
3319
+ else {
3320
+ map[key] = block.call(__context, key, map[key], map2[key]);
3438
3321
  }
3439
-
3440
- map[assoc] = [key, val];
3441
3322
  }
3442
3323
  }
3443
3324
 
@@ -3445,17 +3326,16 @@ Opal.version = "0.3.27";
3445
3326
 
3446
3327
  };
3447
3328
 
3448
- // line 2572, (corelib), Hash#rassoc
3449
3329
  Hash_prototype.$rassoc = function(object) {
3450
3330
 
3451
3331
 
3452
- var map = this.map;
3332
+ var keys = this.keys, map = this.map;
3453
3333
 
3454
- for (var assoc in map) {
3455
- var bucket = map[assoc];
3334
+ for (var i = 0, length = keys.length; i < length; i++) {
3335
+ var key = keys[i], obj = map[key];
3456
3336
 
3457
- if ((bucket[1])['$=='](object)) {
3458
- return [bucket[0], bucket[1]];
3337
+ if ((obj)['$=='](object)) {
3338
+ return [key, obj];
3459
3339
  }
3460
3340
  }
3461
3341
 
@@ -3463,24 +3343,24 @@ Opal.version = "0.3.27";
3463
3343
 
3464
3344
  };
3465
3345
 
3466
- // line 2588, (corelib), Hash#reject
3467
- Hash_prototype.$reject = TMP_50 = function() {
3346
+ Hash_prototype.$reject = TMP_10 = function() {
3468
3347
  var __context, block;
3469
- block = TMP_50._p || nil, __context = block._s, TMP_50._p = null;
3348
+ block = TMP_10._p || nil, __context = block._s, TMP_10._p = null;
3470
3349
 
3471
3350
 
3472
- var map = this.map, result = __hash(), map2 = result.map;
3351
+ var keys = this.keys, map = this.map,
3352
+ result = __hash(), map2 = result.map, keys2 = result.keys;
3473
3353
 
3474
- for (var assoc in map) {
3475
- var bucket = map[assoc],
3476
- value;
3354
+ for (var i = 0, length = keys.length; i < length; i++) {
3355
+ var key = keys[i], obj = map[key], value;
3477
3356
 
3478
- if ((value = block.call(__context, bucket[0], bucket[1])) === __breaker) {
3357
+ if ((value = block.call(__context, key, obj)) === __breaker) {
3479
3358
  return __breaker.$v;
3480
3359
  }
3481
3360
 
3482
3361
  if (value === false || value === nil) {
3483
- map2[bucket[0]] = [bucket[0], bucket[1]];
3362
+ keys2.push(key);
3363
+ map2[key] = obj;
3484
3364
  }
3485
3365
  }
3486
3366
 
@@ -3488,40 +3368,39 @@ Opal.version = "0.3.27";
3488
3368
 
3489
3369
  };
3490
3370
 
3491
- // line 2609, (corelib), Hash#replace
3492
3371
  Hash_prototype.$replace = function(other) {
3493
3372
 
3494
3373
 
3495
- var map = this.map = {};
3496
-
3497
- for (var assoc in other.map) {
3498
- var bucket = other.map[assoc];
3374
+ var map = this.map = {}, keys = this.keys = [];
3499
3375
 
3500
- map[bucket[0]] = [bucket[0], bucket[1]];
3376
+ for (var i = 0, length = other.keys.length; i < length; i++) {
3377
+ var key = other.keys[i];
3378
+ keys.push(key);
3379
+ map[key] = other.map[key];
3501
3380
  }
3502
3381
 
3503
3382
  return this;
3504
3383
 
3505
3384
  };
3506
3385
 
3507
- // line 2623, (corelib), Hash#select
3508
- Hash_prototype.$select = TMP_51 = function() {
3386
+ Hash_prototype.$select = TMP_11 = function() {
3509
3387
  var __context, block;
3510
- block = TMP_51._p || nil, __context = block._s, TMP_51._p = null;
3388
+ block = TMP_11._p || nil, __context = block._s, TMP_11._p = null;
3511
3389
 
3512
3390
 
3513
- var map = this.map, result = __hash(), map2 = result.map;
3391
+ var keys = this.keys, map = this.map,
3392
+ result = __hash(), map2 = result.map, keys2 = result.keys;
3514
3393
 
3515
- for (var assoc in map) {
3516
- var bucket = map[assoc],
3517
- value;
3394
+ for (var i = 0, length = keys.length; i < length; i++) {
3395
+ var key = keys[i], obj = map[key], value;
3518
3396
 
3519
- if ((value = block.call(__context, bucket[0], bucket[1])) === __breaker) {
3397
+ if ((value = block.call(__context, key, obj)) === __breaker) {
3520
3398
  return __breaker.$v;
3521
3399
  }
3522
3400
 
3523
3401
  if (value !== false && value !== nil) {
3524
- map2[bucket[0]] = [bucket[0], bucket[1]];
3402
+ keys2.push(key);
3403
+ map2[key] = obj;
3525
3404
  }
3526
3405
  }
3527
3406
 
@@ -3529,25 +3408,27 @@ Opal.version = "0.3.27";
3529
3408
 
3530
3409
  };
3531
3410
 
3532
- // line 2644, (corelib), Hash#select!
3533
- Hash_prototype['$select!'] = TMP_52 = function() {
3411
+ Hash_prototype['$select!'] = TMP_12 = function() {
3534
3412
  var __context, block;
3535
- block = TMP_52._p || nil, __context = block._s, TMP_52._p = null;
3413
+ block = TMP_12._p || nil, __context = block._s, TMP_12._p = null;
3536
3414
 
3537
3415
 
3538
- var map = this.map, result = nil;
3416
+ var map = this.map, keys = this.keys, value, result = nil;
3539
3417
 
3540
- for (var assoc in map) {
3541
- var bucket = map[assoc],
3542
- value;
3418
+ for (var i = 0, length = keys.length; i < length; i++) {
3419
+ var key = keys[i], obj = map[key];
3543
3420
 
3544
- if ((value = block.call(__context, bucket[0], bucket[1])) === __breaker) {
3421
+ if ((value = block.call(__context, key, obj)) === __breaker) {
3545
3422
  return __breaker.$v;
3546
3423
  }
3547
3424
 
3548
3425
  if (value === false || value === nil) {
3549
- delete map[assoc];
3550
- result = this;
3426
+ keys.splice(i, 1);
3427
+ delete map[key];
3428
+
3429
+ length--;
3430
+ i--;
3431
+ result = this
3551
3432
  }
3552
3433
  }
3553
3434
 
@@ -3555,16 +3436,18 @@ Opal.version = "0.3.27";
3555
3436
 
3556
3437
  };
3557
3438
 
3558
- // line 2666, (corelib), Hash#shift
3559
3439
  Hash_prototype.$shift = function() {
3560
3440
 
3561
3441
 
3562
- var map = this.map;
3442
+ var keys = this.keys, map = this.map;
3563
3443
 
3564
- for (var assoc in map) {
3565
- var bucket = map[assoc];
3566
- delete map[assoc];
3567
- return [bucket[0], bucket[1]];
3444
+ if (keys.length) {
3445
+ var key = keys[0], obj = map[key];
3446
+
3447
+ delete map[key];
3448
+ keys.splice(0, 1);
3449
+
3450
+ return [key, obj];
3568
3451
  }
3569
3452
 
3570
3453
  return nil;
@@ -3573,59 +3456,52 @@ Opal.version = "0.3.27";
3573
3456
 
3574
3457
  Hash_prototype.$size = Hash_prototype.$length;
3575
3458
 
3576
- // line 2682, (corelib), Hash#to_a
3577
3459
  Hash_prototype.$to_a = function() {
3578
3460
 
3579
3461
 
3580
- var map = this.map,
3581
- result = [];
3462
+ var keys = this.keys, map = this.map, result = [];
3582
3463
 
3583
- for (var assoc in map) {
3584
- var bucket = map[assoc];
3585
-
3586
- result.push([bucket[0], bucket[1]]);
3464
+ for (var i = 0, length = keys.length; i < length; i++) {
3465
+ var key = keys[i];
3466
+ result.push([key, map[key]]);
3587
3467
  }
3588
3468
 
3589
3469
  return result;
3590
3470
 
3591
3471
  };
3592
3472
 
3593
- // line 2697, (corelib), Hash#to_hash
3594
3473
  Hash_prototype.$to_hash = function() {
3595
3474
 
3596
3475
  return this;
3597
3476
  };
3598
3477
 
3599
- // line 2701, (corelib), Hash#to_json
3600
3478
  Hash_prototype.$to_json = function() {
3601
3479
 
3602
3480
 
3603
- var parts = [], map = this.map, bucket;
3481
+ var inspect = [], keys = this.keys, map = this.map;
3604
3482
 
3605
- for (var assoc in map) {
3606
- bucket = map[assoc];
3607
- parts.push((bucket[0]).$to_json() + ': ' + (bucket[1]).$to_json());
3483
+ for (var i = 0, length = keys.length; i < length; i++) {
3484
+ var key = keys[i];
3485
+ inspect.push((key).$to_json() + ': ' + (map[key]).$to_json());
3608
3486
  }
3609
3487
 
3610
- return '{' + parts.join(', ') + '}';
3488
+ return '{' + inspect.join(', ') + '}';
3611
3489
 
3612
3490
  };
3613
3491
 
3614
- // line 2714, (corelib), Hash#to_native
3615
3492
  Hash_prototype.$to_native = function() {
3616
3493
 
3617
3494
 
3618
- var result = {}, map = this.map, bucket, value;
3495
+ var result = {}, keys = this.keys, map = this.map, bucket, value;
3619
3496
 
3620
- for (var assoc in map) {
3621
- bucket = map[assoc];
3622
- value = bucket[1];
3497
+ for (var i = 0, length = keys.length; i < length; i++) {
3498
+ var key = keys[i], obj = map[key];
3623
3499
 
3624
- if (value.$to_native) {
3625
- result[assoc] = (value).$to_native();
3500
+ if (obj.$to_native) {
3501
+ result[key] = (obj).$to_native();
3626
3502
  }
3627
3503
  else {
3628
- result[assoc] = value;
3504
+ result[key] = obj;
3629
3505
  }
3630
3506
  }
3631
3507
 
@@ -3637,14 +3513,13 @@ Opal.version = "0.3.27";
3637
3513
 
3638
3514
  Hash_prototype.$update = Hash_prototype['$merge!'];
3639
3515
 
3640
- // line 2738, (corelib), Hash#value?
3641
3516
  Hash_prototype['$value?'] = function(value) {
3642
3517
 
3643
3518
 
3644
3519
  var map = this.map;
3645
3520
 
3646
3521
  for (var assoc in map) {
3647
- var v = map[assoc][1];
3522
+ var v = map[assoc];
3648
3523
  if ((v)['$=='](value)) {
3649
3524
  return true;
3650
3525
  }
@@ -3656,45 +3531,47 @@ Opal.version = "0.3.27";
3656
3531
 
3657
3532
  Hash_prototype.$values_at = Hash_prototype.$indexes;
3658
3533
 
3659
- // line 2755, (corelib), Hash#values
3660
3534
  Hash_prototype.$values = function() {
3661
3535
 
3662
3536
 
3663
3537
  var map = this.map,
3664
3538
  result = [];
3665
3539
 
3666
- for (var assoc in map) {
3667
- result.push(map[assoc][1]);
3540
+ for (var key in map) {
3541
+ result.push(map[key]);
3668
3542
  }
3669
3543
 
3670
3544
  return result;
3671
3545
 
3672
3546
  };
3673
- ;Hash._sdonate(["$[]", "$allocate", "$from_native", "$new"]);
3674
- })(self, null);
3547
+
3548
+ return nil;
3549
+ })(self, null)
3550
+ })();
3551
+ (function() {
3552
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __klass = __opal.klass, __gvars = __opal.gvars;
3553
+
3675
3554
  (function(__base, __super){
3676
- // line 2768, (corelib), class String
3677
3555
  function String() {};
3678
3556
  String = __klass(__base, __super, "String", String);
3679
- var String_prototype = String.prototype, __scope = String._scope, TMP_53, TMP_54, TMP_55, TMP_56, TMP_57;
3557
+
3558
+ ;String._sdonate(["$try_convert", "$new"]); var String_prototype = String.prototype, __scope = String._scope, TMP_1, TMP_2, TMP_3, TMP_4, TMP_5;
3680
3559
 
3681
3560
  String_prototype._isString = true;
3682
3561
 
3683
3562
  String.$include(__scope.Comparable);
3684
3563
 
3685
- // line 2773, (corelib), String.try_convert
3686
3564
  String.$try_convert = function(what) {
3687
3565
 
3688
- return (function() { try {
3689
- what.$to_str()
3566
+ try {
3567
+ return what.$to_str()
3690
3568
  } catch ($err) {
3691
3569
  if (true) {
3692
3570
  nil}
3693
3571
  else { throw $err; }
3694
- } }).call(this)
3572
+ }
3695
3573
  };
3696
3574
 
3697
- // line 2779, (corelib), String.new
3698
3575
  String.$new = function(str) {
3699
3576
  if (str == null) {
3700
3577
  str = ""
@@ -3704,7 +3581,6 @@ Opal.version = "0.3.27";
3704
3581
  ;
3705
3582
  };
3706
3583
 
3707
- // line 2785, (corelib), String#%
3708
3584
  String_prototype['$%'] = function(data) {
3709
3585
 
3710
3586
 
@@ -3715,7 +3591,6 @@ Opal.version = "0.3.27";
3715
3591
 
3716
3592
  };
3717
3593
 
3718
- // line 2794, (corelib), String#*
3719
3594
  String_prototype['$*'] = function(count) {
3720
3595
 
3721
3596
 
@@ -3738,13 +3613,11 @@ Opal.version = "0.3.27";
3738
3613
 
3739
3614
  };
3740
3615
 
3741
- // line 2815, (corelib), String#+
3742
3616
  String_prototype['$+'] = function(other) {
3743
3617
 
3744
3618
  return this.toString() + other;
3745
3619
  };
3746
3620
 
3747
- // line 2819, (corelib), String#<=>
3748
3621
  String_prototype['$<=>'] = function(other) {
3749
3622
 
3750
3623
 
@@ -3756,31 +3629,26 @@ Opal.version = "0.3.27";
3756
3629
 
3757
3630
  };
3758
3631
 
3759
- // line 2829, (corelib), String#<
3760
3632
  String_prototype['$<'] = function(other) {
3761
3633
 
3762
3634
  return this < other;
3763
3635
  };
3764
3636
 
3765
- // line 2833, (corelib), String#<=
3766
3637
  String_prototype['$<='] = function(other) {
3767
3638
 
3768
3639
  return this <= other;
3769
3640
  };
3770
3641
 
3771
- // line 2837, (corelib), String#>
3772
3642
  String_prototype['$>'] = function(other) {
3773
3643
 
3774
3644
  return this > other;
3775
3645
  };
3776
3646
 
3777
- // line 2841, (corelib), String#>=
3778
3647
  String_prototype['$>='] = function(other) {
3779
3648
 
3780
3649
  return this >= other;
3781
3650
  };
3782
3651
 
3783
- // line 2845, (corelib), String#==
3784
3652
  String_prototype['$=='] = function(other) {
3785
3653
 
3786
3654
  return other == String(this);
@@ -3788,7 +3656,6 @@ Opal.version = "0.3.27";
3788
3656
 
3789
3657
  String_prototype['$==='] = String_prototype['$=='];
3790
3658
 
3791
- // line 2851, (corelib), String#=~
3792
3659
  String_prototype['$=~'] = function(other) {
3793
3660
 
3794
3661
 
@@ -3800,7 +3667,6 @@ Opal.version = "0.3.27";
3800
3667
 
3801
3668
  };
3802
3669
 
3803
- // line 2861, (corelib), String#[]
3804
3670
  String_prototype['$[]'] = function(index, length) {
3805
3671
 
3806
3672
 
@@ -3843,13 +3709,11 @@ Opal.version = "0.3.27";
3843
3709
 
3844
3710
  };
3845
3711
 
3846
- // line 2902, (corelib), String#capitalize
3847
3712
  String_prototype.$capitalize = function() {
3848
3713
 
3849
3714
  return this.charAt(0).toUpperCase() + this.substr(1).toLowerCase();
3850
3715
  };
3851
3716
 
3852
- // line 2906, (corelib), String#casecmp
3853
3717
  String_prototype.$casecmp = function(other) {
3854
3718
 
3855
3719
 
@@ -3864,10 +3728,9 @@ Opal.version = "0.3.27";
3864
3728
 
3865
3729
  };
3866
3730
 
3867
- // line 2919, (corelib), String#chars
3868
- String_prototype.$chars = TMP_53 = function() {
3731
+ String_prototype.$chars = TMP_1 = function() {
3869
3732
  var __context, __yield;
3870
- __yield = TMP_53._p || nil, __context = __yield._s, TMP_53._p = null;
3733
+ __yield = TMP_1._p || nil, __context = __yield._s, TMP_1._p = null;
3871
3734
 
3872
3735
 
3873
3736
  for (var i = 0, length = this.length; i < length; i++) {
@@ -3876,7 +3739,6 @@ Opal.version = "0.3.27";
3876
3739
 
3877
3740
  };
3878
3741
 
3879
- // line 2927, (corelib), String#chomp
3880
3742
  String_prototype.$chomp = function(separator) {
3881
3743
  if (separator == null) {
3882
3744
  separator = __gvars["/"]
@@ -3892,25 +3754,21 @@ Opal.version = "0.3.27";
3892
3754
 
3893
3755
  };
3894
3756
 
3895
- // line 2939, (corelib), String#chop
3896
3757
  String_prototype.$chop = function() {
3897
3758
 
3898
3759
  return this.substr(0, this.length - 1);
3899
3760
  };
3900
3761
 
3901
- // line 2943, (corelib), String#chr
3902
3762
  String_prototype.$chr = function() {
3903
3763
 
3904
3764
  return this.charAt(0);
3905
3765
  };
3906
3766
 
3907
- // line 2947, (corelib), String#count
3908
3767
  String_prototype.$count = function(str) {
3909
3768
 
3910
3769
  return (this.length - this.replace(new RegExp(str,"g"), '').length) / str.length;
3911
3770
  };
3912
3771
 
3913
- // line 2951, (corelib), String#demodulize
3914
3772
  String_prototype.$demodulize = function() {
3915
3773
 
3916
3774
 
@@ -3928,10 +3786,9 @@ Opal.version = "0.3.27";
3928
3786
 
3929
3787
  String_prototype.$each_char = String_prototype.$chars;
3930
3788
 
3931
- // line 2967, (corelib), String#each_line
3932
- String_prototype.$each_line = TMP_54 = function(separator) {
3789
+ String_prototype.$each_line = TMP_2 = function(separator) {
3933
3790
  var __context, __yield;
3934
- __yield = TMP_54._p || nil, __context = __yield._s, TMP_54._p = null;
3791
+ __yield = TMP_2._p || nil, __context = __yield._s, TMP_2._p = null;
3935
3792
  if (separator == null) {
3936
3793
  separator = __gvars["/"]
3937
3794
  }
@@ -3944,13 +3801,11 @@ Opal.version = "0.3.27";
3944
3801
 
3945
3802
  };
3946
3803
 
3947
- // line 2977, (corelib), String#empty?
3948
3804
  String_prototype['$empty?'] = function() {
3949
3805
 
3950
3806
  return this.length === 0;
3951
3807
  };
3952
3808
 
3953
- // line 2981, (corelib), String#end_with?
3954
3809
  String_prototype['$end_with?'] = function(suffixes) {
3955
3810
  suffixes = __slice.call(arguments, 0);
3956
3811
 
@@ -3968,7 +3823,6 @@ Opal.version = "0.3.27";
3968
3823
 
3969
3824
  String_prototype['$eql?'] = String_prototype['$=='];
3970
3825
 
3971
- // line 2997, (corelib), String#equal?
3972
3826
  String_prototype['$equal?'] = function(val) {
3973
3827
 
3974
3828
  return this.toString() === val.toString();
@@ -3976,10 +3830,9 @@ Opal.version = "0.3.27";
3976
3830
 
3977
3831
  String_prototype.$getbyte = String_prototype.charCodeAt;
3978
3832
 
3979
- // line 3003, (corelib), String#gsub
3980
- String_prototype.$gsub = TMP_55 = function(pattern, replace) {
3833
+ String_prototype.$gsub = TMP_3 = function(pattern, replace) {
3981
3834
  var __a, __context, block;
3982
- block = TMP_55._p || nil, __context = block._s, TMP_55._p = null;
3835
+ block = TMP_3._p || nil, __context = block._s, TMP_3._p = null;
3983
3836
 
3984
3837
  if ((__a = pattern['$is_a?'](__scope.String)) !== false && __a !== nil) {
3985
3838
  pattern = (new RegExp("" + __scope.Regexp.$escape(pattern)))
@@ -3995,19 +3848,16 @@ Opal.version = "0.3.27";
3995
3848
 
3996
3849
  String_prototype.$hash = String_prototype.toString;
3997
3850
 
3998
- // line 3019, (corelib), String#hex
3999
3851
  String_prototype.$hex = function() {
4000
3852
 
4001
3853
  return this.$to_i(16);
4002
3854
  };
4003
3855
 
4004
- // line 3023, (corelib), String#include?
4005
3856
  String_prototype['$include?'] = function(other) {
4006
3857
 
4007
3858
  return this.indexOf(other) !== -1;
4008
3859
  };
4009
3860
 
4010
- // line 3027, (corelib), String#index
4011
3861
  String_prototype.$index = function(what, offset) {
4012
3862
  var __a;
4013
3863
 
@@ -4046,7 +3896,6 @@ Opal.version = "0.3.27";
4046
3896
 
4047
3897
  };
4048
3898
 
4049
- // line 3064, (corelib), String#inspect
4050
3899
  String_prototype.$inspect = function() {
4051
3900
 
4052
3901
 
@@ -4072,7 +3921,6 @@ Opal.version = "0.3.27";
4072
3921
 
4073
3922
  };
4074
3923
 
4075
- // line 3088, (corelib), String#intern
4076
3924
  String_prototype.$intern = function() {
4077
3925
 
4078
3926
  return this;
@@ -4080,13 +3928,11 @@ Opal.version = "0.3.27";
4080
3928
 
4081
3929
  String_prototype.$lines = String_prototype.$each_line;
4082
3930
 
4083
- // line 3094, (corelib), String#length
4084
3931
  String_prototype.$length = function() {
4085
3932
 
4086
3933
  return this.length;
4087
3934
  };
4088
3935
 
4089
- // line 3098, (corelib), String#ljust
4090
3936
  String_prototype.$ljust = function(integer, padstr) {
4091
3937
  if (padstr == null) {
4092
3938
  padstr = " "
@@ -4094,16 +3940,14 @@ Opal.version = "0.3.27";
4094
3940
  return this.$raise(__scope.NotImplementedError);
4095
3941
  };
4096
3942
 
4097
- // line 3102, (corelib), String#lstrip
4098
3943
  String_prototype.$lstrip = function() {
4099
3944
 
4100
3945
  return this.replace(/^\s*/, '');
4101
3946
  };
4102
3947
 
4103
- // line 3106, (corelib), String#match
4104
- String_prototype.$match = TMP_56 = function(pattern, pos) {
3948
+ String_prototype.$match = TMP_4 = function(pattern, pos) {
4105
3949
  var __a, __b, __context, block;
4106
- block = TMP_56._p || nil, __context = block._s, TMP_56._p = null;
3950
+ block = TMP_4._p || nil, __context = block._s, TMP_4._p = null;
4107
3951
 
4108
3952
  return (__a = (function() { if ((__b = pattern['$is_a?'](__scope.Regexp)) !== false && __b !== nil) {
4109
3953
  return pattern
@@ -4112,7 +3956,6 @@ Opal.version = "0.3.27";
4112
3956
  }; return nil; }).call(this), __a.$match._p = block.$to_proc(), __a.$match(this, pos));
4113
3957
  };
4114
3958
 
4115
- // line 3110, (corelib), String#next
4116
3959
  String_prototype.$next = function() {
4117
3960
 
4118
3961
 
@@ -4127,13 +3970,11 @@ Opal.version = "0.3.27";
4127
3970
 
4128
3971
  };
4129
3972
 
4130
- // line 3123, (corelib), String#ord
4131
3973
  String_prototype.$ord = function() {
4132
3974
 
4133
3975
  return this.charCodeAt(0);
4134
3976
  };
4135
3977
 
4136
- // line 3127, (corelib), String#partition
4137
3978
  String_prototype.$partition = function(str) {
4138
3979
 
4139
3980
 
@@ -4144,13 +3985,11 @@ Opal.version = "0.3.27";
4144
3985
 
4145
3986
  };
4146
3987
 
4147
- // line 3136, (corelib), String#reverse
4148
3988
  String_prototype.$reverse = function() {
4149
3989
 
4150
3990
  return this.split('').reverse().join('');
4151
3991
  };
4152
3992
 
4153
- // line 3140, (corelib), String#rstrip
4154
3993
  String_prototype.$rstrip = function() {
4155
3994
 
4156
3995
  return this.replace(/\s*$/, '');
@@ -4160,7 +3999,6 @@ Opal.version = "0.3.27";
4160
3999
 
4161
4000
  String_prototype.$slice = String_prototype['$[]'];
4162
4001
 
4163
- // line 3148, (corelib), String#split
4164
4002
  String_prototype.$split = function(pattern, limit) {
4165
4003
  var __a;if (pattern == null) {
4166
4004
  pattern = ((__a = __gvars[";"]), __a !== false && __a !== nil ? __a : " ")
@@ -4168,7 +4006,6 @@ Opal.version = "0.3.27";
4168
4006
  return this.split(pattern, limit);
4169
4007
  };
4170
4008
 
4171
- // line 3152, (corelib), String#start_with?
4172
4009
  String_prototype['$start_with?'] = function(prefixes) {
4173
4010
  prefixes = __slice.call(arguments, 0);
4174
4011
 
@@ -4182,16 +4019,14 @@ Opal.version = "0.3.27";
4182
4019
 
4183
4020
  };
4184
4021
 
4185
- // line 3164, (corelib), String#strip
4186
4022
  String_prototype.$strip = function() {
4187
4023
 
4188
4024
  return this.replace(/^\s*/, '').replace(/\s*$/, '');
4189
4025
  };
4190
4026
 
4191
- // line 3168, (corelib), String#sub
4192
- String_prototype.$sub = TMP_57 = function(pattern, replace) {
4027
+ String_prototype.$sub = TMP_5 = function(pattern, replace) {
4193
4028
  var __context, block;
4194
- block = TMP_57._p || nil, __context = block._s, TMP_57._p = null;
4029
+ block = TMP_5._p || nil, __context = block._s, TMP_5._p = null;
4195
4030
 
4196
4031
 
4197
4032
  if (typeof(replace) === 'string') {
@@ -4229,7 +4064,6 @@ Opal.version = "0.3.27";
4229
4064
 
4230
4065
  String_prototype.$succ = String_prototype.$next;
4231
4066
 
4232
- // line 3205, (corelib), String#sum
4233
4067
  String_prototype.$sum = function(n) {
4234
4068
  if (n == null) {
4235
4069
  n = 16
@@ -4245,7 +4079,6 @@ Opal.version = "0.3.27";
4245
4079
 
4246
4080
  };
4247
4081
 
4248
- // line 3217, (corelib), String#swapcase
4249
4082
  String_prototype.$swapcase = function() {
4250
4083
 
4251
4084
 
@@ -4261,7 +4094,6 @@ Opal.version = "0.3.27";
4261
4094
 
4262
4095
  };
4263
4096
 
4264
- // line 3231, (corelib), String#to_a
4265
4097
  String_prototype.$to_a = function() {
4266
4098
 
4267
4099
 
@@ -4273,7 +4105,6 @@ Opal.version = "0.3.27";
4273
4105
 
4274
4106
  };
4275
4107
 
4276
- // line 3241, (corelib), String#to_f
4277
4108
  String_prototype.$to_f = function() {
4278
4109
 
4279
4110
 
@@ -4283,7 +4114,6 @@ Opal.version = "0.3.27";
4283
4114
 
4284
4115
  };
4285
4116
 
4286
- // line 3249, (corelib), String#to_i
4287
4117
  String_prototype.$to_i = function(base) {
4288
4118
  if (base == null) {
4289
4119
  base = 10
@@ -4301,7 +4131,6 @@ Opal.version = "0.3.27";
4301
4131
 
4302
4132
  String_prototype.$to_json = String_prototype.$inspect;
4303
4133
 
4304
- // line 3263, (corelib), String#to_proc
4305
4134
  String_prototype.$to_proc = function() {
4306
4135
 
4307
4136
 
@@ -4317,7 +4146,6 @@ Opal.version = "0.3.27";
4317
4146
 
4318
4147
  String_prototype.$to_sym = String_prototype.$intern;
4319
4148
 
4320
- // line 3277, (corelib), String#underscore
4321
4149
  String_prototype.$underscore = function() {
4322
4150
 
4323
4151
  return this.replace(/[-\s]+/g, '_')
@@ -4326,15 +4154,18 @@ Opal.version = "0.3.27";
4326
4154
  .toLowerCase();
4327
4155
  };
4328
4156
 
4329
- String_prototype.$upcase = String_prototype.toUpperCase;
4330
- ;String._sdonate(["$try_convert", "$new"]);
4157
+ return String_prototype.$upcase = String_prototype.toUpperCase;
4331
4158
  })(self, String);
4332
- __scope.Symbol = __scope.String;
4159
+ return __scope.Symbol = __scope.String;
4160
+ })();
4161
+ (function() {
4162
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __klass = __opal.klass;
4163
+
4333
4164
  (function(__base, __super){
4334
- // line 3288, (corelib), class Numeric
4335
4165
  function Numeric() {};
4336
4166
  Numeric = __klass(__base, __super, "Numeric", Numeric);
4337
- var Numeric_prototype = Numeric.prototype, __scope = Numeric._scope, TMP_58, TMP_59, TMP_60;
4167
+
4168
+ var Numeric_prototype = Numeric.prototype, __scope = Numeric._scope, TMP_1, TMP_2, TMP_3;
4338
4169
 
4339
4170
 
4340
4171
  Numeric_prototype._isNumber = true;
@@ -4342,121 +4173,101 @@ Opal.version = "0.3.27";
4342
4173
 
4343
4174
  Numeric.$include(__scope.Comparable);
4344
4175
 
4345
- // line 3295, (corelib), Numeric#+
4346
4176
  Numeric_prototype['$+'] = function(other) {
4347
4177
 
4348
4178
  return this + other;
4349
4179
  };
4350
4180
 
4351
- // line 3299, (corelib), Numeric#-
4352
4181
  Numeric_prototype['$-'] = function(other) {
4353
4182
 
4354
4183
  return this - other;
4355
4184
  };
4356
4185
 
4357
- // line 3303, (corelib), Numeric#*
4358
4186
  Numeric_prototype['$*'] = function(other) {
4359
4187
 
4360
4188
  return this * other;
4361
4189
  };
4362
4190
 
4363
- // line 3307, (corelib), Numeric#/
4364
4191
  Numeric_prototype['$/'] = function(other) {
4365
4192
 
4366
4193
  return this / other;
4367
4194
  };
4368
4195
 
4369
- // line 3311, (corelib), Numeric#%
4370
4196
  Numeric_prototype['$%'] = function(other) {
4371
4197
 
4372
4198
  return this % other;
4373
4199
  };
4374
4200
 
4375
- // line 3315, (corelib), Numeric#&
4376
4201
  Numeric_prototype['$&'] = function(other) {
4377
4202
 
4378
4203
  return this & other;
4379
4204
  };
4380
4205
 
4381
- // line 3319, (corelib), Numeric#|
4382
4206
  Numeric_prototype['$|'] = function(other) {
4383
4207
 
4384
4208
  return this | other;
4385
4209
  };
4386
4210
 
4387
- // line 3323, (corelib), Numeric#^
4388
4211
  Numeric_prototype['$^'] = function(other) {
4389
4212
 
4390
4213
  return this ^ other;
4391
4214
  };
4392
4215
 
4393
- // line 3327, (corelib), Numeric#<
4394
4216
  Numeric_prototype['$<'] = function(other) {
4395
4217
 
4396
4218
  return this < other;
4397
4219
  };
4398
4220
 
4399
- // line 3331, (corelib), Numeric#<=
4400
4221
  Numeric_prototype['$<='] = function(other) {
4401
4222
 
4402
4223
  return this <= other;
4403
4224
  };
4404
4225
 
4405
- // line 3335, (corelib), Numeric#>
4406
4226
  Numeric_prototype['$>'] = function(other) {
4407
4227
 
4408
4228
  return this > other;
4409
4229
  };
4410
4230
 
4411
- // line 3339, (corelib), Numeric#>=
4412
4231
  Numeric_prototype['$>='] = function(other) {
4413
4232
 
4414
4233
  return this >= other;
4415
4234
  };
4416
4235
 
4417
- // line 3343, (corelib), Numeric#<<
4418
4236
  Numeric_prototype['$<<'] = function(count) {
4419
4237
 
4420
4238
  return this << count;
4421
4239
  };
4422
4240
 
4423
- // line 3347, (corelib), Numeric#>>
4424
4241
  Numeric_prototype['$>>'] = function(count) {
4425
4242
 
4426
4243
  return this >> count;
4427
4244
  };
4428
4245
 
4429
- // line 3351, (corelib), Numeric#+@
4430
4246
  Numeric_prototype['$+@'] = function() {
4431
4247
 
4432
4248
  return +this;
4433
4249
  };
4434
4250
 
4435
- // line 3355, (corelib), Numeric#-@
4436
4251
  Numeric_prototype['$-@'] = function() {
4437
4252
 
4438
4253
  return -this;
4439
4254
  };
4440
4255
 
4441
- // line 3359, (corelib), Numeric#~
4442
4256
  Numeric_prototype['$~'] = function() {
4443
4257
 
4444
4258
  return ~this;
4445
4259
  };
4446
4260
 
4447
- // line 3363, (corelib), Numeric#**
4448
4261
  Numeric_prototype['$**'] = function(other) {
4449
4262
 
4450
4263
  return Math.pow(this, other);
4451
4264
  };
4452
4265
 
4453
- // line 3367, (corelib), Numeric#==
4454
4266
  Numeric_prototype['$=='] = function(other) {
4455
4267
 
4456
4268
  return this == other;
4457
4269
  };
4458
4270
 
4459
- // line 3371, (corelib), Numeric#<=>
4460
4271
  Numeric_prototype['$<=>'] = function(other) {
4461
4272
 
4462
4273
 
@@ -4468,28 +4279,24 @@ Opal.version = "0.3.27";
4468
4279
 
4469
4280
  };
4470
4281
 
4471
- // line 3381, (corelib), Numeric#abs
4472
4282
  Numeric_prototype.$abs = function() {
4473
4283
 
4474
4284
  return Math.abs(this);
4475
4285
  };
4476
4286
 
4477
- // line 3385, (corelib), Numeric#ceil
4478
4287
  Numeric_prototype.$ceil = function() {
4479
4288
 
4480
4289
  return Math.ceil(this);
4481
4290
  };
4482
4291
 
4483
- // line 3389, (corelib), Numeric#chr
4484
4292
  Numeric_prototype.$chr = function() {
4485
4293
 
4486
4294
  return String.fromCharCode(this);
4487
4295
  };
4488
4296
 
4489
- // line 3393, (corelib), Numeric#downto
4490
- Numeric_prototype.$downto = TMP_58 = function(finish) {
4297
+ Numeric_prototype.$downto = TMP_1 = function(finish) {
4491
4298
  var __context, block;
4492
- block = TMP_58._p || nil, __context = block._s, TMP_58._p = null;
4299
+ block = TMP_1._p || nil, __context = block._s, TMP_1._p = null;
4493
4300
 
4494
4301
 
4495
4302
  for (var i = this; i >= finish; i--) {
@@ -4504,25 +4311,21 @@ Opal.version = "0.3.27";
4504
4311
 
4505
4312
  Numeric_prototype['$eql?'] = Numeric_prototype['$=='];
4506
4313
 
4507
- // line 3407, (corelib), Numeric#even?
4508
4314
  Numeric_prototype['$even?'] = function() {
4509
4315
 
4510
4316
  return this % 2 === 0;
4511
4317
  };
4512
4318
 
4513
- // line 3411, (corelib), Numeric#floor
4514
4319
  Numeric_prototype.$floor = function() {
4515
4320
 
4516
4321
  return Math.floor(this);
4517
4322
  };
4518
4323
 
4519
- // line 3415, (corelib), Numeric#hash
4520
4324
  Numeric_prototype.$hash = function() {
4521
4325
 
4522
4326
  return this.toString();
4523
4327
  };
4524
4328
 
4525
- // line 3419, (corelib), Numeric#integer?
4526
4329
  Numeric_prototype['$integer?'] = function() {
4527
4330
 
4528
4331
  return this % 1 === 0;
@@ -4532,31 +4335,26 @@ Opal.version = "0.3.27";
4532
4335
 
4533
4336
  Numeric_prototype.$modulo = Numeric_prototype['$%'];
4534
4337
 
4535
- // line 3427, (corelib), Numeric#next
4536
4338
  Numeric_prototype.$next = function() {
4537
4339
 
4538
4340
  return this + 1;
4539
4341
  };
4540
4342
 
4541
- // line 3431, (corelib), Numeric#nonzero?
4542
4343
  Numeric_prototype['$nonzero?'] = function() {
4543
4344
 
4544
4345
  return this === 0 ? nil : this;
4545
4346
  };
4546
4347
 
4547
- // line 3435, (corelib), Numeric#odd?
4548
4348
  Numeric_prototype['$odd?'] = function() {
4549
4349
 
4550
4350
  return this % 2 !== 0;
4551
4351
  };
4552
4352
 
4553
- // line 3439, (corelib), Numeric#ord
4554
4353
  Numeric_prototype.$ord = function() {
4555
4354
 
4556
4355
  return this;
4557
4356
  };
4558
4357
 
4559
- // line 3443, (corelib), Numeric#pred
4560
4358
  Numeric_prototype.$pred = function() {
4561
4359
 
4562
4360
  return this - 1;
@@ -4564,13 +4362,12 @@ Opal.version = "0.3.27";
4564
4362
 
4565
4363
  Numeric_prototype.$succ = Numeric_prototype.$next;
4566
4364
 
4567
- // line 3449, (corelib), Numeric#times
4568
- Numeric_prototype.$times = TMP_59 = function() {
4365
+ Numeric_prototype.$times = TMP_2 = function() {
4569
4366
  var __context, block;
4570
- block = TMP_59._p || nil, __context = block._s, TMP_59._p = null;
4367
+ block = TMP_2._p || nil, __context = block._s, TMP_2._p = null;
4571
4368
 
4572
4369
 
4573
- for (var i = 0; i <= this; i++) {
4370
+ for (var i = 0; i < this; i++) {
4574
4371
  if (block.call(__context, i) === __breaker) {
4575
4372
  return __breaker.$v;
4576
4373
  }
@@ -4580,25 +4377,21 @@ Opal.version = "0.3.27";
4580
4377
 
4581
4378
  };
4582
4379
 
4583
- // line 3461, (corelib), Numeric#to_f
4584
4380
  Numeric_prototype.$to_f = function() {
4585
4381
 
4586
4382
  return parseFloat(this);
4587
4383
  };
4588
4384
 
4589
- // line 3465, (corelib), Numeric#to_i
4590
4385
  Numeric_prototype.$to_i = function() {
4591
4386
 
4592
4387
  return parseInt(this);
4593
4388
  };
4594
4389
 
4595
- // line 3469, (corelib), Numeric#to_json
4596
4390
  Numeric_prototype.$to_json = function() {
4597
4391
 
4598
4392
  return this.toString();
4599
4393
  };
4600
4394
 
4601
- // line 3473, (corelib), Numeric#to_s
4602
4395
  Numeric_prototype.$to_s = function(base) {
4603
4396
  if (base == null) {
4604
4397
  base = 10
@@ -4606,13 +4399,12 @@ Opal.version = "0.3.27";
4606
4399
  return this.toString();
4607
4400
  };
4608
4401
 
4609
- // line 3477, (corelib), Numeric#upto
4610
- Numeric_prototype.$upto = TMP_60 = function(finish) {
4402
+ Numeric_prototype.$upto = TMP_3 = function(finish) {
4611
4403
  var __context, block;
4612
- block = TMP_60._p || nil, __context = block._s, TMP_60._p = null;
4404
+ block = TMP_3._p || nil, __context = block._s, TMP_3._p = null;
4613
4405
 
4614
4406
 
4615
- for (var i = 0; i <= finish; i++) {
4407
+ for (var i = this; i <= finish; i++) {
4616
4408
  if (block.call(__context, i) === __breaker) {
4617
4409
  return __breaker.$v;
4618
4410
  }
@@ -4622,65 +4414,69 @@ Opal.version = "0.3.27";
4622
4414
 
4623
4415
  };
4624
4416
 
4625
- // line 3489, (corelib), Numeric#zero?
4626
4417
  Numeric_prototype['$zero?'] = function() {
4627
4418
 
4628
4419
  return this == 0;
4629
4420
  };
4630
4421
 
4422
+ return nil;
4631
4423
  })(self, Number);
4632
- __scope.Fixnum = __scope.Numeric;
4633
- (function(__base, __super){
4634
- // line 3495, (corelib), class Proc
4424
+ return __scope.Fixnum = __scope.Numeric;
4425
+ })();
4426
+ (function() {
4427
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __klass = __opal.klass;
4428
+
4429
+ return (function(__base, __super){
4635
4430
  function Proc() {};
4636
4431
  Proc = __klass(__base, __super, "Proc", Proc);
4637
- var Proc_prototype = Proc.prototype, __scope = Proc._scope, TMP_61;
4432
+
4433
+ ;Proc._sdonate(["$new"]); var Proc_prototype = Proc.prototype, __scope = Proc._scope, TMP_1;
4638
4434
 
4639
4435
 
4640
4436
  Proc_prototype._isProc = true;
4641
4437
  Proc_prototype.is_lambda = true;
4642
4438
 
4643
4439
 
4644
- // line 3501, (corelib), Proc.new
4645
- Proc.$new = TMP_61 = function() {
4440
+ Proc.$new = TMP_1 = function() {
4646
4441
  var __context, block;
4647
- block = TMP_61._p || nil, __context = block._s, TMP_61._p = null;
4442
+ block = TMP_1._p || nil, __context = block._s, TMP_1._p = null;
4648
4443
 
4649
4444
  if (block === nil) no_block_given();
4650
4445
  block.is_lambda = false;
4651
4446
  return block;
4652
4447
  };
4653
4448
 
4654
- // line 3507, (corelib), Proc#call
4655
4449
  Proc_prototype.$call = function(args) {
4656
4450
  args = __slice.call(arguments, 0);
4657
4451
  return this.apply(this._s, args);
4658
4452
  };
4659
4453
 
4660
- // line 3511, (corelib), Proc#to_proc
4661
4454
  Proc_prototype.$to_proc = function() {
4662
4455
 
4663
4456
  return this;
4664
4457
  };
4665
4458
 
4666
- // line 3515, (corelib), Proc#lambda?
4667
4459
  Proc_prototype['$lambda?'] = function() {
4668
4460
 
4669
4461
  return !!this.is_lambda;
4670
4462
  };
4671
4463
 
4672
- // line 3521, (corelib), Proc#arity
4673
4464
  Proc_prototype.$arity = function() {
4674
4465
 
4675
4466
  return this.length - 1;
4676
4467
  };
4677
- ;Proc._sdonate(["$new"]);
4678
- })(self, Function);
4679
- (function(__base, __super){
4680
- // line 3525, (corelib), class Range
4468
+
4469
+ return nil;
4470
+ })(self, Function)
4471
+ })();
4472
+ (function() {
4473
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __klass = __opal.klass;
4474
+
4475
+ return (function(__base, __super){
4681
4476
  function Range() {};
4682
4477
  Range = __klass(__base, __super, "Range", Range);
4683
- var Range_prototype = Range.prototype, __scope = Range._scope, TMP_62;
4478
+
4479
+ var Range_prototype = Range.prototype, __scope = Range._scope, TMP_1;
4684
4480
  Range_prototype.begin = Range_prototype.end = nil;
4685
4481
 
4686
4482
  Range.$include(__scope.Enumerable);
@@ -4698,19 +4494,16 @@ Opal.version = "0.3.27";
4698
4494
  };
4699
4495
 
4700
4496
 
4701
- // line 3541, (corelib), Range#begin
4702
4497
  Range_prototype.$begin = function() {
4703
4498
 
4704
4499
  return this.begin
4705
- };
4500
+ }, nil;
4706
4501
 
4707
- // line 3542, (corelib), Range#end
4708
4502
  Range_prototype.$end = function() {
4709
4503
 
4710
4504
  return this.end
4711
- };
4505
+ }, nil;
4712
4506
 
4713
- // line 3544, (corelib), Range#initialize
4714
4507
  Range_prototype.$initialize = function(min, max, exclude) {
4715
4508
  if (exclude == null) {
4716
4509
  exclude = false
@@ -4720,7 +4513,6 @@ Opal.version = "0.3.27";
4720
4513
  return this.exclude = exclude;
4721
4514
  };
4722
4515
 
4723
- // line 3550, (corelib), Range#==
4724
4516
  Range_prototype['$=='] = function(other) {
4725
4517
 
4726
4518
 
@@ -4732,13 +4524,11 @@ Opal.version = "0.3.27";
4732
4524
 
4733
4525
  };
4734
4526
 
4735
- // line 3561, (corelib), Range#===
4736
4527
  Range_prototype['$==='] = function(obj) {
4737
4528
 
4738
4529
  return obj >= this.begin && (this.exclude ? obj < this.end : obj <= this.end);
4739
4530
  };
4740
4531
 
4741
- // line 3565, (corelib), Range#cover?
4742
4532
  Range_prototype['$cover?'] = function(value) {
4743
4533
  var __a, __b, __c;
4744
4534
  return ((__a = (this.begin)['$<='](value)) ? value['$<=']((function() { if ((__b = this['$exclude_end?']()) !== false && __b !== nil) {
@@ -4748,13 +4538,12 @@ Opal.version = "0.3.27";
4748
4538
  }; return nil; }).call(this)) : __a);
4749
4539
  };
4750
4540
 
4751
- // line 3569, (corelib), Range#each
4752
- Range_prototype.$each = TMP_62 = function() {
4753
- var current = nil, __a, __b, __context, __yield;
4754
- __yield = TMP_62._p || nil, __context = __yield._s, TMP_62._p = null;
4541
+ Range_prototype.$each = TMP_1 = function() {
4542
+ var current = nil, __a, __b, __c, __context, __yield;
4543
+ __yield = TMP_1._p || nil, __context = __yield._s, TMP_1._p = null;
4755
4544
 
4756
4545
  current = this.$min();
4757
- while ((__b = !current['$=='](this.$max())) !== false && __b !== nil){if (__yield.call(__context, current) === __breaker) return __breaker.$v;
4546
+ while ((__b = (__c = current['$=='](this.$max()), (__c === nil || __c === false))) !== false && __b !== nil){if (__yield.call(__context, current) === __breaker) return __breaker.$v;
4758
4547
  current = current.$succ();};
4759
4548
  if ((__a = this['$exclude_end?']()) === false || __a === nil) {
4760
4549
  if (__yield.call(__context, current) === __breaker) return __breaker.$v
@@ -4762,7 +4551,6 @@ Opal.version = "0.3.27";
4762
4551
  return this;
4763
4552
  };
4764
4553
 
4765
- // line 3583, (corelib), Range#eql?
4766
4554
  Range_prototype['$eql?'] = function(other) {
4767
4555
  var __a;
4768
4556
  if ((__a = __scope.Range['$==='](other)) === false || __a === nil) {
@@ -4771,13 +4559,11 @@ Opal.version = "0.3.27";
4771
4559
  return (__a = ((__a = this['$exclude_end?']()['$=='](other['$exclude_end?']())) ? (this.begin)['$eql?'](other.$begin()) : __a), __a !== false && __a !== nil ? (this.end)['$eql?'](other.$end()) : __a);
4772
4560
  };
4773
4561
 
4774
- // line 3589, (corelib), Range#exclude_end?
4775
4562
  Range_prototype['$exclude_end?'] = function() {
4776
4563
 
4777
4564
  return this.exclude;
4778
4565
  };
4779
4566
 
4780
- // line 3594, (corelib), Range#include?
4781
4567
  Range_prototype['$include?'] = function(val) {
4782
4568
 
4783
4569
  return obj >= this.begin && obj <= this.end;
@@ -4789,7 +4575,6 @@ Opal.version = "0.3.27";
4789
4575
 
4790
4576
  Range_prototype['$member?'] = Range_prototype['$include?'];
4791
4577
 
4792
- // line 3604, (corelib), Range#step
4793
4578
  Range_prototype.$step = function(n) {
4794
4579
  if (n == null) {
4795
4580
  n = 1
@@ -4797,24 +4582,25 @@ Opal.version = "0.3.27";
4797
4582
  return this.$raise(__scope.NotImplementedError);
4798
4583
  };
4799
4584
 
4800
- // line 3608, (corelib), Range#to_s
4801
4585
  Range_prototype.$to_s = function() {
4802
4586
 
4803
4587
  return this.begin + (this.exclude ? '...' : '..') + this.end;
4804
4588
  };
4805
4589
 
4806
- Range_prototype.$inspect = Range_prototype.$to_s;
4807
-
4808
- })(self, null);
4809
- (function(__base, __super){
4810
- // line 3614, (corelib), class Time
4590
+ return Range_prototype.$inspect = Range_prototype.$to_s;
4591
+ })(self, null)
4592
+ })();
4593
+ (function() {
4594
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __klass = __opal.klass;
4595
+
4596
+ return (function(__base, __super){
4811
4597
  function Time() {};
4812
4598
  Time = __klass(__base, __super, "Time", Time);
4813
- var Time_prototype = Time.prototype, __scope = Time._scope;
4599
+
4600
+ ;Time._sdonate(["$at", "$new", "$now"]); var Time_prototype = Time.prototype, __scope = Time._scope;
4814
4601
 
4815
4602
  Time.$include(__scope.Comparable);
4816
4603
 
4817
- // line 3617, (corelib), Time.at
4818
4604
  Time.$at = function(seconds, frac) {
4819
4605
  if (frac == null) {
4820
4606
  frac = 0
@@ -4822,7 +4608,6 @@ Opal.version = "0.3.27";
4822
4608
  return new Date(seconds * 1000 + frac);
4823
4609
  };
4824
4610
 
4825
- // line 3621, (corelib), Time.new
4826
4611
  Time.$new = function(year, month, day, hour, minute, second, millisecond) {
4827
4612
 
4828
4613
 
@@ -4847,25 +4632,21 @@ Opal.version = "0.3.27";
4847
4632
 
4848
4633
  };
4849
4634
 
4850
- // line 3644, (corelib), Time.now
4851
4635
  Time.$now = function() {
4852
4636
 
4853
4637
  return new Date();
4854
4638
  };
4855
4639
 
4856
- // line 3648, (corelib), Time#+
4857
4640
  Time_prototype['$+'] = function(other) {
4858
4641
  var __a, __b;
4859
4642
  return __scope.Time.$allocate((__a = this.$to_f(), __b = other.$to_f(), typeof(__a) === 'number' ? __a + __b : __a['$+'](__b)));
4860
4643
  };
4861
4644
 
4862
- // line 3652, (corelib), Time#-
4863
4645
  Time_prototype['$-'] = function(other) {
4864
4646
  var __a, __b;
4865
4647
  return __scope.Time.$allocate((__a = this.$to_f(), __b = other.$to_f(), typeof(__a) === 'number' ? __a - __b : __a['$-'](__b)));
4866
4648
  };
4867
4649
 
4868
- // line 3656, (corelib), Time#<=>
4869
4650
  Time_prototype['$<=>'] = function(other) {
4870
4651
 
4871
4652
  return this.$to_f()['$<=>'](other.$to_f());
@@ -4873,13 +4654,11 @@ Opal.version = "0.3.27";
4873
4654
 
4874
4655
  Time_prototype.$day = Time_prototype.getDate;
4875
4656
 
4876
- // line 3662, (corelib), Time#eql?
4877
4657
  Time_prototype['$eql?'] = function(other) {
4878
4658
  var __a;
4879
4659
  return (__a = other['$is_a?'](__scope.Time), __a !== false && __a !== nil ? this['$<=>'](other)['$zero?']() : __a);
4880
4660
  };
4881
4661
 
4882
- // line 3666, (corelib), Time#friday?
4883
4662
  Time_prototype['$friday?'] = function() {
4884
4663
 
4885
4664
  return this.getDay() === 5;
@@ -4891,13 +4670,11 @@ Opal.version = "0.3.27";
4891
4670
 
4892
4671
  Time_prototype.$min = Time_prototype.getMinutes;
4893
4672
 
4894
- // line 3676, (corelib), Time#mon
4895
4673
  Time_prototype.$mon = function() {
4896
4674
 
4897
4675
  return this.getMonth() + 1;
4898
4676
  };
4899
4677
 
4900
- // line 3680, (corelib), Time#monday?
4901
4678
  Time_prototype['$monday?'] = function() {
4902
4679
 
4903
4680
  return this.getDay() === 1;
@@ -4905,7 +4682,6 @@ Opal.version = "0.3.27";
4905
4682
 
4906
4683
  Time_prototype.$month = Time_prototype.$mon;
4907
4684
 
4908
- // line 3686, (corelib), Time#saturday?
4909
4685
  Time_prototype['$saturday?'] = function() {
4910
4686
 
4911
4687
  return this.getDay() === 6;
@@ -4913,31 +4689,26 @@ Opal.version = "0.3.27";
4913
4689
 
4914
4690
  Time_prototype.$sec = Time_prototype.getSeconds;
4915
4691
 
4916
- // line 3692, (corelib), Time#sunday?
4917
4692
  Time_prototype['$sunday?'] = function() {
4918
4693
 
4919
4694
  return this.getDay() === 0;
4920
4695
  };
4921
4696
 
4922
- // line 3696, (corelib), Time#thursday?
4923
4697
  Time_prototype['$thursday?'] = function() {
4924
4698
 
4925
4699
  return this.getDay() === 4;
4926
4700
  };
4927
4701
 
4928
- // line 3700, (corelib), Time#to_f
4929
4702
  Time_prototype.$to_f = function() {
4930
4703
 
4931
4704
  return this.getTime() / 1000;
4932
4705
  };
4933
4706
 
4934
- // line 3704, (corelib), Time#to_i
4935
4707
  Time_prototype.$to_i = function() {
4936
4708
 
4937
4709
  return parseInt(this.getTime() / 1000);
4938
4710
  };
4939
4711
 
4940
- // line 3708, (corelib), Time#tuesday?
4941
4712
  Time_prototype['$tuesday?'] = function() {
4942
4713
 
4943
4714
  return this.getDay() === 2;
@@ -4945,29 +4716,28 @@ Opal.version = "0.3.27";
4945
4716
 
4946
4717
  Time_prototype.$wday = Time_prototype.getDay;
4947
4718
 
4948
- // line 3714, (corelib), Time#wednesday?
4949
4719
  Time_prototype['$wednesday?'] = function() {
4950
4720
 
4951
4721
  return this.getDay() === 3;
4952
4722
  };
4953
4723
 
4954
- Time_prototype.$year = Time_prototype.getFullYear;
4955
- ;Time._sdonate(["$at", "$new", "$now"]);
4956
- })(self, Date);
4724
+ return Time_prototype.$year = Time_prototype.getFullYear;
4725
+ })(self, Date)
4726
+ })();
4727
+ (function() {
4728
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __module = __opal.module, __hash2 = __opal.hash2;
4729
+
4957
4730
  var json_parse = JSON.parse;
4958
- (function(__base){
4959
- // line 3722, (corelib), module JSON
4731
+ return (function(__base){
4960
4732
  function JSON() {};
4961
4733
  JSON = __module(__base, "JSON", JSON);
4962
4734
  var JSON_prototype = JSON.prototype, __scope = JSON._scope;
4963
4735
 
4964
- // line 3723, (corelib), JSON.parse
4965
4736
  JSON.$parse = function(source) {
4966
4737
 
4967
4738
  return to_opal(json_parse(source));
4968
4739
  };
4969
4740
 
4970
- // line 3728, (corelib), JSON.from_object
4971
4741
  JSON.$from_object = function(js_object) {
4972
4742
 
4973
4743
  return to_opal(js_object);
@@ -5001,12 +4771,13 @@ Opal.version = "0.3.27";
5001
4771
  return arr;
5002
4772
  }
5003
4773
  else {
5004
- var hash = __hash(), v, map = hash.map;
4774
+ var hash = __hash2([], {}), v, map = hash.map, keys = hash.keys;
5005
4775
 
5006
4776
  for (var k in value) {
5007
4777
  if (__hasOwn.call(value, k)) {
5008
4778
  v = to_opal(value[k]);
5009
- map[k] = [k, v];
4779
+ keys.push(k);
4780
+ map[k] = v;
5010
4781
  }
5011
4782
  }
5012
4783
  }
@@ -5017,16 +4788,19 @@ Opal.version = "0.3.27";
5017
4788
 
5018
4789
  ;JSON._sdonate(["$parse", "$from_object"]);
5019
4790
  })(self);
4791
+ })();
4792
+ (function() {
4793
+ var __opal = Opal, self = __opal.top, __scope = __opal, nil = __opal.nil, __breaker = __opal.breaker, __slice = __opal.slice, __klass = __opal.klass, __hash2 = __opal.hash2;
4794
+
5020
4795
  return (function(__base, __super){
5021
- // line 3775, (corelib), class Template
5022
4796
  function Template() {};
5023
4797
  Template = __klass(__base, __super, "Template", Template);
5024
- var Template_prototype = Template.prototype, __scope = Template._scope, TMP_63;
4798
+
4799
+ ;Template._sdonate(["$[]", "$[]="]); var Template_prototype = Template.prototype, __scope = Template._scope, TMP_1;
5025
4800
  Template_prototype.body = nil;
5026
4801
 
5027
- Template._cache = __hash();
4802
+ Template._cache = __hash2([], {});
5028
4803
 
5029
- // line 3777, (corelib), Template.[]
5030
4804
  Template['$[]'] = function(name) {
5031
4805
 
5032
4806
  if (this._cache == null) this._cache = nil;
@@ -5034,7 +4808,6 @@ Opal.version = "0.3.27";
5034
4808
  return this._cache['$[]'](name)
5035
4809
  };
5036
4810
 
5037
- // line 3781, (corelib), Template.[]=
5038
4811
  Template['$[]='] = function(name, instance) {
5039
4812
 
5040
4813
  if (this._cache == null) this._cache = nil;
@@ -5042,24 +4815,23 @@ Opal.version = "0.3.27";
5042
4815
  return this._cache['$[]='](name, instance)
5043
4816
  };
5044
4817
 
5045
- // line 3785, (corelib), Template#initialize
5046
- Template_prototype.$initialize = TMP_63 = function(name) {
4818
+ Template_prototype.$initialize = TMP_1 = function(name) {
5047
4819
  var __context, body;
5048
- body = TMP_63._p || nil, __context = body._s, TMP_63._p = null;
4820
+ body = TMP_1._p || nil, __context = body._s, TMP_1._p = null;
5049
4821
 
5050
4822
  this.body = body;
5051
4823
  this.name = name;
5052
4824
  return __scope.Template['$[]='](name, this);
5053
4825
  };
5054
4826
 
5055
- // line 3791, (corelib), Template#render
5056
4827
  Template_prototype.$render = function(ctx) {
5057
4828
  var __a;if (ctx == null) {
5058
4829
  ctx = this
5059
4830
  }
5060
4831
  return (__a = ctx, __a.$instance_eval._p = this.body.$to_proc(), __a.$instance_eval());
5061
4832
  };
5062
- ;Template._sdonate(["$[]", "$[]="]);
5063
- })(self, null);
4833
+
4834
+ return nil;
4835
+ })(self, null)
5064
4836
  })();
5065
4837
  }).call(this);