red 4.0.6 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/source/ruby.rb CHANGED
@@ -29,6 +29,14 @@
29
29
  };
30
30
  },
31
31
 
32
+ donateConstantsToClass: function(donor,recipient,overwrite) {
33
+ for(var x in donor) {
34
+ if(x.slice(0,2)==='c$' && (overwrite || recipient[x]===undefined)) {
35
+ recipient[x]=donor[x];
36
+ };
37
+ };
38
+ },
39
+
32
40
  updateChildren: function(parentClass) {
33
41
  for(var x in parentClass.__children__) {
34
42
  var childClass=Red.inferConstantFromString(x);
@@ -54,7 +62,7 @@
54
62
  newClass.__children__ = {};
55
63
  newClass.__class__ = c$Class;
56
64
  newClass.prototype.__class__=newClass;
57
- Red.donateMethodsToSingleton(c$Class.prototype,newClass,true)
65
+ Red.donateMethodsToSingleton(c$Class.prototype,newClass,true);
58
66
  },
59
67
 
60
68
  interpretNamespace: function(longName) {
@@ -70,53 +78,49 @@
70
78
  },
71
79
 
72
80
  _module: function(longName,block){
73
- var newModule,context=Red.interpretNamespace(longName),namespace=context[0],name=context[1];
74
- if(namespace['c$'+name]) {
75
- newModule = namespace['c$'+name];
81
+ var newModule,context=Red.interpretNamespace(longName),namespace=context[0],name=context[1],c$name='c$'+name;
82
+ if(namespace[c$name]) {
83
+ if(namespace[c$name].m$class&&namespace[c$name].m$class()!==c$Module){m$raise(c$TypeError,$q(longName+' is not a Module'));};
84
+ newModule = namespace[c$name];
76
85
  } else {
77
86
  newModule = c$Module.m$new(longName);
78
- namespace['c$'+name] = newModule;
87
+ namespace[c$name] = newModule;
79
88
  newModule.__includers__={};
80
89
  };
81
90
  if(typeof(block)=='function') { block.call(newModule); };
91
+ Red.updateIncluders(newModule);
82
92
  },
83
93
 
84
94
  _class: function(longName,superclass,block){
85
- var newClass,context=Red.interpretNamespace(longName),namespace=context[0],name=context[1];
86
- if(namespace['c$'+name]) {
87
- if(name!=='Object' && superclass!==namespace['c$'+name].__superclass__){m$raise(c$TypeError,$q('superclass mismatch for class '+longName));};
88
- newClass = namespace['c$'+name];
95
+ var newClass,context=Red.interpretNamespace(longName),namespace=context[0],name=context[1],c$name='c$'+name;
96
+ if(namespace[c$name]) {
97
+ if(namespace[c$name].m$class&&namespace[c$name].m$class()!==c$Class){m$raise(c$TypeError,$q(longName+' is not a Class'));};
98
+ if(name!=='Object'&&superclass!==namespace[c$name].__superclass__){m$raise(c$TypeError,$q('superclass mismatch for class '+longName));};
99
+ newClass = namespace[c$name];
89
100
  if(name=='Module'&&!(newClass.__superclass__.__children__[name])){Red.conferInheritance(c$Module,c$Object);}
90
101
  if(name=='Class'&&!(newClass.__superclass__.__children__[name])){Red.conferInheritance(c$Class,c$Module);}
91
102
  } else {
92
- switch(name){
93
- case 'Array':newClass=Array;break;case 'Numeric':newClass=Number;break;
94
- default: newClass = function() { this.__id__ = Red.id++ };
95
- };
103
+ switch(name){case 'Array':newClass=Array;break;case 'Numeric':newClass=Number;break;default:newClass=function(){this.__id__=Red.id++;};};
104
+ if(superclass.m$class&&superclass.m$class()!==c$Class){m$raise(c$TypeError,$q('superclass must be a Class ('+superclass.m$class().__name__+' given)'))}
96
105
  Red.conferInheritance(newClass,superclass);
97
106
  Red.initializeClass(longName,newClass);
98
107
  superclass.__children__[newClass.__name__]=true;
99
108
  superclass.m$inherited && superclass.m$inherited(newClass);
100
- namespace['c$'+name] = newClass;
101
- };
102
- if(name == 'Object' || superclass == c$Object){
103
- newClass.cvset = function(var_name,object) { return newClass['v$'+var_name] = object; };
104
- newClass.cvget = function(var_name) { return newClass['v$'+var_name]; };
105
- } else {
106
- newClass.cvset = function() { return superclass.cvset.apply(null,arguments); };
107
- newClass.cvget = function() { return superclass.cvget.apply(null,arguments); };
109
+ namespace[c$name]=newClass;
108
110
  };
109
- if(typeof(block)=='function') { block.call(newClass); };
111
+ if(name=='Object'||superclass==c$Object){newClass.cvset=function(v,o){return newClass['v$'+v]=o;};newClass.cvget=function(v){return newClass['v$'+v];};}else{newClass.cvset=function(v,o){return superclass.cvset(v,o);};newClass.cvget=function(v){return superclass.cvget(v);};};
112
+ if(typeof(block)=='function'){block.call(newClass);};
110
113
  Red.updateChildren(newClass);
111
- if((typeof(c$TrueClass)!='undefined'&&newClass==c$TrueClass)||(typeof(c$FalseClass)!='undefined'&&newClass==c$FalseClass)) { Red.donateMethodsToClass(newClass.prototype,Boolean.prototype,true); };
114
+ if((typeof(c$TrueClass)!='undefined'&&newClass==c$TrueClass)||(typeof(c$FalseClass)!='undefined'&&newClass==c$FalseClass)){Red.donateMethodsToClass(newClass.prototype,Boolean.prototype,true);};
112
115
  },
113
116
 
114
117
  LoopError: {
115
- _break:function(value){var e=new(Error);e.__keyword__='break';e._value=value==null?nil:value;throw(e);},
116
- _next:function(value){var e=new(Error);e.__keyword__='next';e._value=value==null?nil:value;throw(e);},
118
+ _break:function(returnValue){var e=new(Error);e.__keyword__='break';e.__return__=returnValue==null?nil:returnValue;throw(e);},
119
+ _next:function(returnValue){var e=new(Error);e.__keyword__='next';e.__return__=returnValue==null?nil:returnValue;throw(e);},
117
120
  _redo:function(){var e=new(Error);e.__keyword__='redo';throw(e);},
118
121
  }
119
- };
122
+ }
123
+ ;
120
124
 
121
125
  var $u=undefined,nil=null,$={};
122
126
 
@@ -125,18 +129,21 @@ c$Module = function(){this.__id__=Red.id++};c$Module.__name__='Module';c$Module.
125
129
  c$Object = function(){this.__id__=Red.id++};c$Object.__name__='Object';c$Object.__children__={};c$Module.__superclass__=c$Object;
126
130
 
127
131
  c$Object.prototype.toString=function(){return '#<'+this.m$class().__name__.replace(/\\./g,'::')+':0x'+(this.__id__*999^4000000).toString(16)+'>'};
128
- Function.prototype.m$=function(o){var f=this;var p=function(){return f.apply(o,arguments);};p._arity=f.arity;p.__id__=Red.id++;return p;};
132
+ Function.prototype.m$=function(o){var f=this;var p=function(){return f.apply(o,arguments);};p.__unbound__=f;p.__arity__=f.arity;p.__id__=Red.id++;return p;};
129
133
  window.__name__='window';
130
134
  window.prototype=window;
131
135
  window.__children__={'Object':true};
132
136
  window.m$include=function(){for(var i=0,modules=arguments,l=modules.length;i<l;++i){var mp=modules[i].prototype;for(var x in mp){if(x.slice(0,2)=='m$'){var f=function(){return arguments.callee._source[arguments.callee._name].apply(window,arguments) };f._source=mp;f._name=x;window[x]=f;};};modules[i].m$included(window);modules[i].__includers__['window']=true;};if(modules[0]!=c$Kernel){Red.donateMethodsToClass(window,c$Object.prototype);Red.updateChildren(c$Object);};return window;};
133
- window.m$blockGivenBool=function(){typeof(arguments[0])=='function'}
137
+ window.m$block_given_bool=function(){typeof(arguments[0])=='function'}
134
138
 
135
- function $e(e,ary){if(e.m$isABool){for(var i=0,l=ary.length;i<l;++i){if(e.m$isABool(ary[i])){return true;};};};return false;};
136
- function $Q(){for(var i=1,s=arguments[0],l=arguments.length;i<l;++i){s+=$q(arguments[i]).m$toS()._value;};return $q(s);};
139
+ function $a(min,max,args,bg){var a=args.length-bg;if(a<min){n=min;}else{if(max!=-1&&a>max){n=max;}else{return;};};m$raise(c$ArgumentError, $q('wrong number of arguments ('+a+' for '+n+')'));}
140
+ function $e(e,ary){if(e.m$is_a_bool){for(var i=0,l=ary.length;i<l;++i){if(e.m$is_a_bool(ary[i])){return true;};};};return false;};
141
+ function $m(obj,name){var str=obj.m$inspect().__value__;str=str[0]=='#'?str:str+':'+obj.m$class().__name__;m$raise(c$NoMethodError, $q('undefined method "'+name+'" for '+str));}
142
+ function $n(obj,name){var str=obj.m$inspect().__value__;str=str[0]=='#'?str:str+':'+obj.m$class().__name__;m$raise(c$NameError, $q('undefined local variable or method "'+name+'" for '+str));}
143
+ function $Q(){for(var i=1,s=arguments[0],l=arguments.length;i<l;++i){s+=$q(arguments[i]).m$to_s().__value__;};return $q(s);};
137
144
  function $q(obj){if(typeof obj!=='string'){return obj;};return c$String.m$new(obj);};
138
145
  function $r(value,options){return c$Regexp.m$new(value,options);};
139
- function $s(value){return(c$Symbol._table[value]||c$Symbol.m$new(value));};
146
+ function $s(value){return(c$Symbol.__table__[value]||c$Symbol.m$new(value));};
140
147
  function $T(x){return x!==false&&x!==nil&&x!=undefined;};
141
148
 
142
149
  `
@@ -170,7 +177,7 @@ class Object
170
177
  # may override this behavior.
171
178
  #
172
179
  def ==(other)
173
- `this.__id__==other.__id__`
180
+ `this.__id__===other.__id__`
174
181
  end
175
182
 
176
183
  # call-seq:
@@ -181,7 +188,7 @@ class Object
181
188
  # semantics in case statements.
182
189
  #
183
190
  def ===(other)
184
- `this.__id__==other.__id__`
191
+ `this.__id__===other.__id__`
185
192
  end
186
193
 
187
194
  # call-seq:
@@ -224,8 +231,8 @@ class Object
224
231
  # k.__send__(:hello, "gentle", "readers") #=> "Hello gentle readers"
225
232
  #
226
233
  def __send__(method,*args)
227
- `method=this['m$'+sym._value.replace('=','Eql')]`
228
- `if(!method){m$raise(c$NoMethodError,$q('undefined method "'+sym._value+'" for '+this));}`
234
+ `method=this['m$'+sym.__value__.replace('=','_eql').replace('!','_bang').replace('?','_bool')]`
235
+ `if(!method){m$raise(c$NoMethodError,$q('undefined method "'+sym.__value__+'" for '+this));}`
229
236
  `method.apply(this,args)`
230
237
  end
231
238
 
@@ -364,7 +371,7 @@ class Object
364
371
  # k.hello #=> "Hello from Mod"
365
372
  #
366
373
  def extend(*modules)
367
- `for(var i=0,l=modules.length;i<l;++i){modules[i].m$extendObject(this);modules[i].m$extended(this);}`
374
+ `for(var i=0,l=modules.length;i<l;++i){modules[i].m$extend_object(this);modules[i].m$extended(this);}`
368
375
  return self
369
376
  end
370
377
 
@@ -387,7 +394,7 @@ class Object
387
394
  # not overridden, uses the +to_s+ method to generate the string.
388
395
  #
389
396
  def inspect
390
- `this.m$toS()`
397
+ `this.m$to_s()`
391
398
  end
392
399
 
393
400
  # call-seq:
@@ -407,7 +414,7 @@ class Object
407
414
  # k.instance_eval { @secret } #=> 99
408
415
  #
409
416
  def instance_eval(&block)
410
- `block._block.m$(this)()`
417
+ `block.__block__.m$(this)()`
411
418
  end
412
419
 
413
420
  # call-seq:
@@ -436,7 +443,7 @@ class Object
436
443
  # k.instance_variable_defined?("@b") #=> false
437
444
  #
438
445
  def instance_variable_defined?(name)
439
- `this[name._value.replace('@','i$')]!=null`
446
+ `this[name.__value__.replace('@','i$')]!=null`
440
447
  end
441
448
 
442
449
  # call-seq:
@@ -456,7 +463,7 @@ class Object
456
463
  # k.instance_variable_get(:@a) #=> 99
457
464
  #
458
465
  def instance_variable_get(name)
459
- `var v=this[name._value.replace('@','i$')]`
466
+ `var v=this[name.__value__.replace('@','i$')]`
460
467
  `v==null?nil:v`
461
468
  end
462
469
 
@@ -478,7 +485,7 @@ class Object
478
485
  #
479
486
  # FIX: Incomplete
480
487
  def instance_variable_set(name, obj)
481
- `this[name._value.replace('@','i$')]=obj`
488
+ `this[name.__value__.replace('@','i$')]=obj`
482
489
  end
483
490
 
484
491
  # call-seq:
@@ -500,7 +507,7 @@ class Object
500
507
  #
501
508
  def instance_variables
502
509
  `var result=[]`
503
- `for(var x in this){if(x.slice(0,2)=='i$'){result.push($q('@'+$_uncamel(x.slice(2,x.length))));};}`
510
+ `for(var x in this){if(x.slice(0,2)=='i$'){result.push($q('@'+x.slice(2,x.length)));};}`
504
511
  return `result`
505
512
  end
506
513
 
@@ -616,8 +623,8 @@ class Object
616
623
  # k.methods.length #=> 42
617
624
  #
618
625
  def methods
619
- `var result=[]`
620
- `for(var x in this){if(x.slice(0,2)=='m$'&&x!='m$initialize'){$q($_uncamel(x.slice(2,x.length)));};}`
626
+ `var result=[],sub={_eql2:'==',_eql3:'===',_etld:'=~',_brac:'[]',_breq:'[]=',_lteq:'<=',_gteq:'>=',_ltlt:'<<',_gtgt:'>>',_lthn:'<',_gthn:'>',_ltgt:'<=>',_pipe:'|',_ampe:'&',_plus:'+',_posi:'+@',_nega:'-@',_star:'*',_str2:'**',_slsh:'/',_perc:'%',_care:'^',_tild:'~'}`
627
+ `for(var x in this){if(x.slice(0,2)=='m$'&&x!='m$initialize'){var str=x.slice(2,x.length);str=sub[str]||str;result.push($q(str.replace('_bool','?').replace('_bang','!').replace('_eql','=')));};}`
621
628
  return `result`
622
629
  end
623
630
 
@@ -671,7 +678,7 @@ class Object
671
678
  # Returns +true+ if _obj_ responds to the given method.
672
679
  #
673
680
  def respond_to?(method)
674
- `typeof(this['m$'+method._value])=='function'`
681
+ `typeof(this['m$'+method.__value__])=='function'`
675
682
  end
676
683
 
677
684
  # call-seq:
@@ -692,8 +699,9 @@ class Object
692
699
  # k.send(:hello, "gentle", "readers") #=> "Hello gentle readers"
693
700
  #
694
701
  def send(sym,*args)
695
- `method=this['m$'+sym._value.replace('=','Eql')]`
696
- `if(!method){m$raise(c$NoMethodError,$q('undefined method "'+sym._value+'" for '+this));}`
702
+ `var str=sym.__value__.replace('=','_eql').replace('!','_bang').replace('?','_bool');sub={'==':'_eql2','===':'_eql3','=~':'_etld','[]':'_brac','[]=':'_breq','<=':'_lteq','>=':'_gteq','<<':'_ltlt','>>':'_gtgt','<':'_lthn','>':'_gthn','<=>':'_ltgt','|':'_pipe','&':'_ampe','+':'_plus','+@':'_posi','-@':'_nega','*':'_star','**':'_str2','/':'_slsh','%':'_perc','^':'_care','~':'_tild'}`
703
+ `var method=this['m$'+(sub[str]||str)]`
704
+ `if(!method){m$raise(c$NoMethodError,$q('undefined method "'+sym.__value__+'" for '+this));}`
697
705
  `method.apply(this,args)`
698
706
  end
699
707
 
@@ -778,7 +786,7 @@ class Module
778
786
  # a.say_bye #=> "goodbye"
779
787
  #
780
788
  def initialize(module_name, &block)
781
- `this.__name__=moduleName._value||moduleName`
789
+ `this.__name__=module_name.__value__||module_name`
782
790
  `this.prototype={}`
783
791
  end
784
792
 
@@ -792,7 +800,7 @@ class Module
792
800
  end
793
801
 
794
802
  def ===(obj)
795
- `obj.m$isABool(this)`
803
+ `obj.m$is_a_bool(this)`
796
804
  end
797
805
 
798
806
  def >(other_module)
@@ -820,28 +828,29 @@ class Module
820
828
  def append_features(mod)
821
829
  `Red.donateMethodsToSingleton(this,mod)`
822
830
  `Red.donateMethodsToClass(this.prototype,mod.prototype)`
831
+ `Red.donateConstantsToClass(this,mod)`
823
832
  return `mod`
824
833
  end
825
834
 
826
835
  def attr(attribute, writer = false)
827
- `var a=attribute._value`
836
+ `var a=attribute.__value__`
828
837
  `f1=this.prototype['m$'+a]=function(){return this['i$'+arguments.callee._name];};f1._name=a`
829
- `if(writer){f2=this.prototype['m$'+a._value+'Eql']=function(x){return this['i$'+arguments.callee._name]=x;};f2._name=a;}`
838
+ `if(writer){f2=this.prototype['m$'+a.__value__+'_eql']=function(x){return this['i$'+arguments.callee._name]=x;};f2._name=a;}`
830
839
  return nil
831
840
  end
832
841
 
833
842
  def attr_accessor(*symbols)
834
843
  `for(var i=0,l=symbols.length;i<l;++i){
835
- var a=symbols[i]._value;
844
+ var a=symbols[i].__value__;
836
845
  f1=this.prototype['m$'+a]=function(){return this['i$'+arguments.callee._name];};f1._name=a;
837
- f2=this.prototype['m$'+a+'Eql']=function(x){return this['i$'+arguments.callee._name]=x;};f2._name=a;
846
+ f2=this.prototype['m$'+a+'_eql']=function(x){return this['i$'+arguments.callee._name]=x;};f2._name=a;
838
847
  }`
839
848
  return nil
840
849
  end
841
850
 
842
851
  def attr_reader(*symbols)
843
852
  `for(var i=0,l=symbols.length;i<l;++i){
844
- var a=symbols[i]._value;
853
+ var a=symbols[i].__value__;
845
854
  f=this.prototype['m$'+a]=function(){return this['i$'+arguments.callee._name];};f._name=a;
846
855
  }`
847
856
  return nil
@@ -849,8 +858,8 @@ class Module
849
858
 
850
859
  def attr_writer(*symbols)
851
860
  `for(var i=0,l=symbols.length;i<l;++i){
852
- var a=symbols[i]._value;
853
- f=this.prototype['m$'+a+'Eql']=function(x){return this['i$'+arguments.callee._name]=x;};f._name=a;
861
+ var a=symbols[i].__value__;
862
+ f=this.prototype['m$'+a+'_eql']=function(x){return this['i$'+arguments.callee._name]=x;};f._name=a;
854
863
  }`
855
864
  return nil
856
865
  end
@@ -975,7 +984,7 @@ class Module
975
984
  # k.hello #=> "Hello from Mod"
976
985
  #
977
986
  def include(*modules)
978
- `for(var i=0,l=modules.length;i<l;++i){var mod=modules[i];mod.m$appendFeatures(this);mod.m$included(this);mod.__includers__[this.__name__]=true;}`
987
+ `for(var i=0,l=modules.length;i<l;++i){var mod=modules[i];mod.m$append_features(this);mod.m$included(this);mod.__includers__[this.__name__]=true;}`
979
988
  return self
980
989
  end
981
990
 
@@ -1077,8 +1086,8 @@ class Class < Module
1077
1086
  #
1078
1087
  # FIX: Incomplete
1079
1088
  def self.new(class_name, superclass = Object)
1080
- `Red._class(className._value,superclass,function(){})`
1081
- return `window['c$'+className._value]`
1089
+ `Red._class(class_name.__value__,superclass,function(){})`
1090
+ return `window['c$'+class_name.__value__]`
1082
1091
  end
1083
1092
 
1084
1093
  # call-seq:
@@ -1294,8 +1303,8 @@ end
1294
1303
  #
1295
1304
  module Kernel
1296
1305
  # FIX: Incomplete
1297
- def block_given?
1298
- `typeof(arguments[0])=='function'`
1306
+ def block_given?(x)
1307
+ `typeof(x)=='function'`
1299
1308
  end
1300
1309
 
1301
1310
  # FIX: Incomplete
@@ -1318,8 +1327,9 @@ module Kernel
1318
1327
  #
1319
1328
  # FIX: Incomplete
1320
1329
  def lambda(func)
1321
- `result=new(c$Proc)()`
1322
- `result._block=func`
1330
+ `var result=new(c$Proc)()`
1331
+ `result.__block__=func`
1332
+ `result.__block__.__id__=Red.id++`
1323
1333
  return `result`
1324
1334
  end
1325
1335
 
@@ -1358,8 +1368,9 @@ module Kernel
1358
1368
  #
1359
1369
  # FIX: Incomplete
1360
1370
  def proc(func)
1361
- `result=new(c$Proc)()`
1362
- `result._block=func`
1371
+ `var result=new(c$Proc)()`
1372
+ `result.__block__=func`
1373
+ `result.__block__.__id__=Red.id++`
1363
1374
  return `result`
1364
1375
  end
1365
1376
 
@@ -1375,15 +1386,15 @@ module Kernel
1375
1386
  #
1376
1387
  # FIX: Incomplete
1377
1388
  def puts(obj)
1378
- `var string=obj.m$toS&&obj.m$toS()||$q(''+obj)`
1379
- `console.log(string._value.replace(/\\\\/g,'\\\\\\\\'))`
1389
+ `var string=obj.m$to_s&&obj.m$to_s()||$q(''+obj)`
1390
+ `console.log(string.__value__.replace(/\\\\/g,'\\\\\\\\'))`
1380
1391
  return nil
1381
1392
  end
1382
1393
 
1383
1394
  # FIX: Incomplete
1384
- def raise
1395
+ def raise(*args)
1385
1396
  `var exception_class=c$RuntimeError,msg=$q('')`
1386
- `if(arguments[0]&&arguments[0].m$isABool(c$Exception)){
1397
+ `if(arguments[0]&&arguments[0].m$is_a_bool(c$Exception)){
1387
1398
  var e=arguments[0];
1388
1399
  }else{
1389
1400
  if(arguments[0]&&arguments[0].m$class()==c$String){
@@ -1395,7 +1406,7 @@ module Kernel
1395
1406
  }
1396
1407
  }`
1397
1408
  `var e=e||exception_class.m$new(msg)`
1398
- `e._stack=new Error().stack`
1409
+ `e.__stack__=new Error().stack`
1399
1410
  `throw(e)`
1400
1411
  return nil
1401
1412
  end
@@ -1437,13 +1448,13 @@ module Kernel
1437
1448
 
1438
1449
  # FIX: Incomplete
1439
1450
  def sprintf(string)
1440
- `var i=1,source=string._value,result=[],m=$u,arg=$u,val=$u,str=$u,dL=$u,chr=$u,pad=$u;
1451
+ `var i=1,source=string.__value__,result=[],m=$u,arg=$u,val=$u,str=$u,dL=$u,chr=$u,pad=$u;
1441
1452
  while(source){
1442
1453
  if(m=source.match(/^[^%]+/)){result.push(m[0]);source=source.slice(m[0].length);continue;};
1443
1454
  if(m=source.match(/^%%/)) {result.push('%'); source=source.slice(m[0].length);continue;};
1444
1455
  // 1(0)2(wdth) 3(prec) 4(field-type )
1445
1456
  if(m=source.match(/^%(0)?(\\d+)?(?:\\.(\\d+))?([bcdEefGgiopsuXx])/)){
1446
- arg = arguments[i]._value||arguments[i];
1457
+ arg = arguments[i].__value__||arguments[i];
1447
1458
  switch(m[4]){
1448
1459
  case'b':str=parseFloat(arg).toString(2);break;
1449
1460
  case'c':str=String.fromCharCode(arg);break;
@@ -1455,8 +1466,8 @@ module Kernel
1455
1466
  case'g':str='-FIX-';break;
1456
1467
  case'i':val=parseInt(arg);str=''+val;break;
1457
1468
  case'o':str=parseFloat(arg).toString(8);break;
1458
- case'p':str=$q(arg).m$inspect()._value;break;
1459
- case's':val=arg.m$toS&&arg.m$toS()._value||arg;str=(m[3]?val.slice(0,m[2]):val);break;
1469
+ case'p':str=$q(arg).m$inspect().__value__;break;
1470
+ case's':val=arg.m$to_s&&arg.m$to_s().__value__||arg;str=(m[3]?val.slice(0,m[2]):val);break;
1460
1471
  case'u':val=parseInt(arg);str=''+(val<0?'..'+(Math.pow(2,32)+val):val);break;
1461
1472
  case'X':str=parseInt(arg).toString(16).toUpperCase();break;
1462
1473
  case'x':str=parseInt(arg).toString(16);break;
@@ -1758,7 +1769,7 @@ class Array
1758
1769
  # [1,2,3] * 3 #=> [1, 2, 3, 1, 2, 3, 1, 2, 3]
1759
1770
  #
1760
1771
  def *(arg)
1761
- `if(arg.m$class()==c$String){return this.join(arg);}`
1772
+ `if(arg.m$class()==c$String){return $q(this.join(arg));}`
1762
1773
  `var result=[],i=0,l=parseInt(arg)`
1763
1774
  `while(i<l){result=result.concat(this);i++;}`
1764
1775
  return `result`
@@ -1866,10 +1877,10 @@ class Array
1866
1877
  # a[5,1] #=> []
1867
1878
  # a[5..10] #=> []
1868
1879
  #
1869
- def [](index, length)
1880
+ def [](index, length = nil)
1870
1881
  `var l=this.length`
1871
1882
  `if(index.m$class()==c$Range){
1872
- var start=index._start,end=index._exclusive?index._end-1:index._end;
1883
+ var start=index.__start__,end=index.__exclusive__?index.__end__-1:index.__end__;
1873
1884
  index=start<0?start+l:start;
1874
1885
  length=(end<0?end+l:end)-index+1;
1875
1886
  if(length<0){length=0};
@@ -1910,13 +1921,17 @@ class Array
1910
1921
  def []=(index, length, object)
1911
1922
  `var l=this.length`
1912
1923
  `if(object==null){object=length;length=$u;}`
1913
- `if(index.m$class()==c$Range){var start=index._start,end=index._exclusive?index._end-1:index._end;index=start<0?start+l:start;length=(end<0?end+l:end)-index+1;if(length<0){length=0};}else{if(index<0){index+=l;};if(length<0){throw('IndexError: negative length')}}`
1924
+ `if(index.m$class()==c$Range){var start=index.__start__,end=index.__exclusive__?index.__end__-1:index.__end__;index=start<0?start+l:start;length=(end<0?end+l:end)-index+1;if(length<0){length=0};}else{if(index<0){index+=l;};if(length<0){throw('IndexError: negative length')}}`
1914
1925
  `if(index<0){throw('RangeError: out of range');}`
1915
1926
  `while(this.length<index){this.push(nil);}`
1916
1927
  `if($T(length)){var l=this.length,final=(index+length>l)?l:index+length;this._replace(this.slice(0,index).concat(object===nil?[]:(object.m$class()==c$Array?object:[object])).concat(this.slice(final,l)))}else{this[index]=object}`
1917
1928
  return `object`
1918
1929
  end
1919
1930
 
1931
+ def __id__ # :nodoc:
1932
+ `this.__id__||(this.__id__=Red.id++)`
1933
+ end
1934
+
1920
1935
  # call-seq:
1921
1936
  # ary.assoc(obj) -> array or nil
1922
1937
  #
@@ -1981,7 +1996,7 @@ class Array
1981
1996
  # a #=> [1, 2, 3, 4]
1982
1997
  #
1983
1998
  def collect
1984
- `for(var i=0,l=this.length,result=[];i<l;++i){try{result[i]=#{yield `this[i]`};}catch(e){switch(e.__keyword__){case 'next':result[i]=e._value;break;case 'break':return e._value;break;case 'redo':--i;break;default:throw(e);};};}`
1999
+ `for(var i=0,l=this.length,result=[];i<l;++i){try{result[i]=#{yield `this[i]`};}catch(e){switch(e.__keyword__){case 'next':result[i]=e.__return__;break;case 'break':return e.__return__;break;case 'redo':--i;break;default:throw(e);};};}`
1985
2000
  return `result`
1986
2001
  end
1987
2002
 
@@ -1999,7 +2014,7 @@ class Array
1999
2014
  # a.collect! {|x| x + 100 } #=> [201, 202, 203, 204]
2000
2015
  #
2001
2016
  def collect!
2002
- `for(var i=0,l=this.length;i<l;++i){try{this[i]=#{yield `this[i]`};}catch(e){switch(e.__keyword__){case 'next':this[i]=e._value;break;case 'break':return e._value;break;case 'redo':--i;break;default:throw(e);};};}`
2017
+ `for(var i=0,l=this.length;i<l;++i){try{this[i]=#{yield `this[i]`};}catch(e){switch(e.__keyword__){case 'next':this[i]=e.__return__;break;case 'break':return e.__return__;break;case 'redo':--i;break;default:throw(e);};};}`
2003
2018
  return self
2004
2019
  end
2005
2020
 
@@ -2062,7 +2077,7 @@ class Array
2062
2077
  def delete(obj)
2063
2078
  `for(var i=0,l=this.length,temp=[];i<l;++i){if(!(this[i].m$_eql2(obj))){temp.push(this[i]);};}`
2064
2079
  `this._replace(temp)`
2065
- return `l===this.length?(blockGivenBool?#{yield}:nil):obj`
2080
+ return `l===this.length?(#{block_given?}?#{yield}:nil):obj`
2066
2081
  end
2067
2082
 
2068
2083
  # call-seq:
@@ -2098,7 +2113,7 @@ class Array
2098
2113
  # a.delete_if {|element| element >= 'b' } #=> ["a"]
2099
2114
  #
2100
2115
  def delete_if
2101
- `for(var temp=[],i=0,l=this.length;i<l;++i){try{if(!$T(#{yield `this[i]`})){temp.push(this[i]);};}catch(e){switch(e.__keyword__){case 'next':if(!$T(e._value)){temp.push(this[i]);};break;case 'break':return e._value;break;case 'redo':--i;break;default:throw(e);};};}`
2116
+ `for(var temp=[],i=0,l=this.length;i<l;++i){try{if(!$T(#{yield `this[i]`})){temp.push(this[i]);};}catch(e){switch(e.__keyword__){case 'next':if(!$T(e.__return__)){temp.push(this[i]);};break;case 'break':return e.__return__;break;case 'redo':--i;break;default:throw(e);};};}`
2102
2117
  `this._replace(temp)`
2103
2118
  end
2104
2119
 
@@ -2116,7 +2131,7 @@ class Array
2116
2131
  # C
2117
2132
  #
2118
2133
  def each
2119
- `for(var i=0,l=this.length;i<l;++i){try{#{yield `this[i]`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e._value;break;case 'redo':--i;break;default:throw(e);};};}`
2134
+ `for(var i=0,l=this.length;i<l;++i){try{#{yield `this[i]`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e.__return__;break;case 'redo':--i;break;default:throw(e);};};}`
2120
2135
  return self
2121
2136
  end
2122
2137
 
@@ -2134,7 +2149,7 @@ class Array
2134
2149
  # 102
2135
2150
  #
2136
2151
  def each_index
2137
- `for(var i=0,l=this.length;i<l;++i){try{#{yield `i`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e._value;break;case 'redo':--i;break;default:throw(e);};};}`
2152
+ `for(var i=0,l=this.length;i<l;++i){try{#{yield `i`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e.__return__;break;case 'redo':--i;break;default:throw(e);};};}`
2138
2153
  return self
2139
2154
  end
2140
2155
 
@@ -2163,10 +2178,15 @@ class Array
2163
2178
  #
2164
2179
  def eql?(ary)
2165
2180
  `if(ary.m$class()!==c$Array||ary.length!==this.length){return false;}`
2166
- `for(var i=0,l=this.length;i<l;++i){if(!(this[i].m$eqlBool(ary[i]))){return false;};}`
2181
+ `for(var i=0,l=this.length;i<l;++i){if(!(this[i].m$eql_bool(ary[i]))){return false;};}`
2167
2182
  return true
2168
2183
  end
2169
2184
 
2185
+ def equal?(ary) # :nodoc:
2186
+ `var thisId=this.__id__||(this.__id__=Red.id++),aryId=ary.__id__||(ary.__id__=Red.id++)`
2187
+ `thisId==aryId`
2188
+ end
2189
+
2170
2190
  # call-seq:
2171
2191
  # ary.fetch(index) -> object or nil
2172
2192
  # ary.fetch(index, default) -> object or default
@@ -2272,8 +2292,9 @@ class Array
2272
2292
  # a.flatten! #=> nil
2273
2293
  #
2274
2294
  def flatten!
2275
- `for(var i=0,l=this.length,result=[];i<l;++i){if(this[i].m$class()==c$Array){result=result.concat(this[i].m$flattenBang());}else{result.push(this[i]);};}`
2276
- return `this.length==result.length?nil:this._replace(result)`
2295
+ `var flatten=function(ary){for(var i=0,l=ary.length,result=[];i<l;++i){if(ary[i].m$class()==c$Array){result=result.concat(ary[i].m$flatten());}else{result.push(ary[i]);};};return result;}`
2296
+ `for(var i=0,l=this.length,result=[];i<l;++i){if(this[i].m$class()==c$Array){result=result.concat(flatten(this[i]));}else{result.push(this[i]);};}`
2297
+ return `l==result.length?nil:this._replace(result)`
2277
2298
  end
2278
2299
 
2279
2300
  def hash # :nodoc:
@@ -2336,7 +2357,7 @@ class Array
2336
2357
  # [1,2,3].inspect #=> "[1, 2, 3]"
2337
2358
  #
2338
2359
  def inspect
2339
- `for(var i=1,l=this.length,result='['+(this[0]!=null?this[0].m$inspect()._value:'');i<l;++i){result+=', '+this[i].m$inspect()._value;}`
2360
+ `for(var i=1,l=this.length,result='['+(this[0]!=null?this[0].m$inspect().__value__:'');i<l;++i){result+=', '+this[i].m$inspect().__value__;}`
2340
2361
  return `$q(result+']')`
2341
2362
  end
2342
2363
 
@@ -2351,8 +2372,8 @@ class Array
2351
2372
  # %w(a b c).join('.') #=> "a.b.c"
2352
2373
  #
2353
2374
  def join(str = '')
2354
- `var result=this[0]!=null?this[0].m$join?this[0].m$join(str._value)._value:this[0].m$toS()._value:''`
2355
- `for(var i=1,l=this.length;i<l;++i){result+=(str._value||'')+(this[i].m$join?this[i].m$join(str)._value:this[i].m$toS()._value);}`
2375
+ `var result=this[0]!=null?this[0].m$join?this[0].m$join(str.__value__).__value__:this[0].m$to_s().__value__:''`
2376
+ `for(var i=1,l=this.length;i<l;++i){result+=(str.__value__||'')+(this[i].m$join?this[i].m$join(str).__value__:this[i].m$to_s().__value__);}`
2356
2377
  return `$q(result)`
2357
2378
  end
2358
2379
 
@@ -2402,7 +2423,7 @@ class Array
2402
2423
  # a #=> [1, 2, 3, 4]
2403
2424
  #
2404
2425
  def map
2405
- `for(var i=0,l=this.length,result=[];i<l;++i){try{result[i]=#{yield `this[i]`};}catch(e){switch(e.__keyword__){case 'next':result[i]=e._value;break;case 'break':return e._value;break;case 'redo':--i;break;default:throw(e);};};}`
2426
+ `for(var i=0,l=this.length,result=[];i<l;++i){try{result[i]=#{yield `this[i]`};}catch(e){switch(e.__keyword__){case 'next':result[i]=e.__return__;break;case 'break':return e.__return__;break;case 'redo':--i;break;default:throw(e);};};}`
2406
2427
  return `result`
2407
2428
  end
2408
2429
 
@@ -2420,7 +2441,7 @@ class Array
2420
2441
  # a.map! {|x| x + 100 } #=> [201, 202, 203, 204]
2421
2442
  #
2422
2443
  def map!
2423
- `for(var i=0,l=this.length;i<l;++i){try{this[i]=#{yield `this[i]`};}catch(e){switch(e.__keyword__){case 'next':this[i]=e._value;break;case 'break':return e._value;break;case 'redo':--i;break;default:throw(e);};};}`
2444
+ `for(var i=0,l=this.length;i<l;++i){try{this[i]=#{yield `this[i]`};}catch(e){switch(e.__keyword__){case 'next':this[i]=e.__return__;break;case 'break':return e.__return__;break;case 'redo':--i;break;default:throw(e);};};}`
2424
2445
  return self
2425
2446
  end
2426
2447
 
@@ -2436,6 +2457,10 @@ class Array
2436
2457
  return `result`
2437
2458
  end
2438
2459
 
2460
+ def object_id # :nodoc:
2461
+ `this.__id__||(this.__id__=Red.id++)`
2462
+ end
2463
+
2439
2464
  # call-seq:
2440
2465
  # ary.pop -> object or nil
2441
2466
  #
@@ -2498,7 +2523,7 @@ class Array
2498
2523
  # a #=> [1, 2, 3, 4, 5]
2499
2524
  #
2500
2525
  def reject
2501
- `for(var i=0,l=this.length,result=[];i<l;++i){try{if(!$T(#{yield `this[i]`})){result.push(this[i]);};}catch(e){switch(e.__keyword__){case 'next':if(!$T(e._value)){result.push(this[i]);};break;case 'break':return e._value;break;case 'redo':--i;break;default:throw(e);};};}`
2526
+ `for(var i=0,l=this.length,result=[];i<l;++i){try{if(!$T(#{yield `this[i]`})){result.push(this[i]);};}catch(e){switch(e.__keyword__){case 'next':if(!$T(e.__return__)){result.push(this[i]);};break;case 'break':return e.__return__;break;case 'redo':--i;break;default:throw(e);};};}`
2502
2527
  return `result`
2503
2528
  end
2504
2529
 
@@ -2515,7 +2540,7 @@ class Array
2515
2540
  # a #=> [1, 2, 3]
2516
2541
  #
2517
2542
  def reject!
2518
- `for(var i=0,l=this.length,temp=[];i<l;++i){try{if(!$T(#{yield `this[i]`})){temp.push(this[i]);};}catch(e){switch(e.__keyword__){case 'next':if(!$T(e._value)){temp.push(this[i]);};break;case 'break':return e._value;break;case 'redo':--i;break;default:throw(e);};};}`
2543
+ `for(var i=0,l=this.length,temp=[];i<l;++i){try{if(!$T(#{yield `this[i]`})){temp.push(this[i]);};}catch(e){switch(e.__keyword__){case 'next':if(!$T(e.__return__)){temp.push(this[i]);};break;case 'break':return e.__return__;break;case 'redo':--i;break;default:throw(e);};};}`
2519
2544
  return `temp.length==l?nil:this._replace(temp)`
2520
2545
  end
2521
2546
 
@@ -2545,7 +2570,8 @@ class Array
2545
2570
  # a #=> [1, 2, 3, 4, 5]
2546
2571
  #
2547
2572
  def reverse
2548
- `this.reverse()`
2573
+ `for(var i=this.length,result=[];i>0;){result.push(this[--i]);}`
2574
+ return `result`
2549
2575
  end
2550
2576
 
2551
2577
  # call-seq:
@@ -2559,8 +2585,7 @@ class Array
2559
2585
  # a #=> [5, 4, 3, 2, 1]
2560
2586
  #
2561
2587
  def reverse!
2562
- `for(var i=0,l=this.length,last=l-1;i<l;++i){j=last-i;if(i>=j){break;};this._swap(i,j);}`
2563
- return self
2588
+ `this.reverse()`
2564
2589
  end
2565
2590
 
2566
2591
  # call-seq:
@@ -2578,7 +2603,7 @@ class Array
2578
2603
  # A
2579
2604
  #
2580
2605
  def reverse_each
2581
- `for(var i=this.length;i>0;){try{#{yield `this[--i]`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e._value;break;case 'redo':++i;break;default:throw(e);};};}`
2606
+ `for(var i=this.length;i>0;){try{#{yield `this[--i]`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e.__return__;break;case 'redo':++i;break;default:throw(e);};};}`
2582
2607
  return self
2583
2608
  end
2584
2609
 
@@ -2607,7 +2632,7 @@ class Array
2607
2632
  # [1,2,3,4,5].select {|x| x > 3 } #=> [4, 5]
2608
2633
  #
2609
2634
  def select
2610
- `for(var i=0,l=this.length,result=[];i<l;++i){try{if($T(#{yield `this[i]`})){result.push(this[i]);};}catch(e){switch(e.__keyword__){case 'next':if($T(e._value)){result.push(this[i]);};break;case 'break':return e._value;break;case 'redo':--i;break;default:throw(e);};};}`
2635
+ `for(var i=0,l=this.length,result=[];i<l;++i){try{if($T(#{yield `this[i]`})){result.push(this[i]);};}catch(e){switch(e.__keyword__){case 'next':if($T(e.__return__)){result.push(this[i]);};break;case 'break':return e.__return__;break;case 'redo':--i;break;default:throw(e);};};}`
2611
2636
  return `result`
2612
2637
  end
2613
2638
 
@@ -2690,7 +2715,7 @@ class Array
2690
2715
  #
2691
2716
  def slice!(index, length)
2692
2717
  `var l=this.length`
2693
- `if(index.m$class()==c$Range){var start=index._start,end=index._exclusive?index._end-1:index._end;index=start<0?start+l:start;length=(end<0?end+l:end)-index+1;if(length<0){length=0};}else{if(index<0){index+=l;};if(length<0){throw('IndexError: negative length')};}`
2718
+ `if(index.m$class()==c$Range){var start=index.__start__,end=index.__exclusive__?index.__end__-1:index.__end__;index=start<0?start+l:start;length=(end<0?end+l:end)-index+1;if(length<0){length=0};}else{if(index<0){index+=l;};if(length<0){throw('IndexError: negative length')};}`
2694
2719
  `if(index>=l){return nil;}`
2695
2720
  `if(index<0){throw('RangeError: out of range');}`
2696
2721
  `if($T(length)){if(length<=0){return [];};result=this.slice(index,index+length);this._replace(this.slice(0,index).concat(this.slice(index+length)));}else{result=this[index];this._replace(this.slice(0,index).concat(this.slice(index+1,l)));}`
@@ -2713,7 +2738,7 @@ class Array
2713
2738
  #
2714
2739
  # FIX: Doesn't handle loop control keywords
2715
2740
  def sort(block)
2716
- `c$Array.apply(null,this)._quickSort(0,this.length,block)`
2741
+ `c$Array.apply(null,this)._quick_sort(0,this.length,block)`
2717
2742
  end
2718
2743
 
2719
2744
  # call-seq:
@@ -2732,7 +2757,7 @@ class Array
2732
2757
  #
2733
2758
  # FIX: Doesn't handle loop control keywords
2734
2759
  def sort!(block)
2735
- `this._quickSort(0,this.length,block)`
2760
+ `this._quick_sort(0,this.length,block)`
2736
2761
  end
2737
2762
 
2738
2763
  # call-seq:
@@ -2841,7 +2866,7 @@ class Array
2841
2866
  end
2842
2867
 
2843
2868
  `_._partition=function(first,last,pivot,block){var value=this[pivot],store=first;this._swap(pivot,last);for(var i=0,l=this.length;i<l;++i){if(i<first||i>=last){continue;};var cmp=block?block(this[i],value):this[i].m$_ltgt(value);if(cmp==-1||cmp==0){this._swap(store++,i);};};this._swap(last,store);return(store);}`
2844
- `_._quickSort=function(start,finish,block){if(finish-1>start){var pivot=start+Math.floor(Math.random()*(finish-start));pivot=this._partition(start,(finish-1),pivot,block);this._quickSort(start,pivot,block);this._quickSort((pivot+1),finish,block);};return(this);}`
2869
+ `_._quick_sort=function(start,finish,block){if(finish-1>start){var pivot=start+Math.floor(Math.random()*(finish-start));pivot=this._partition(start,(finish-1),pivot,block);this._quick_sort(start,pivot,block);this._quick_sort((pivot+1),finish,block);};return(this);}`
2845
2870
  `_._replace=function(ary){this.length=0;for(var i=0,l=ary.length;i<l;++i){this.push(ary[i])};return this;}`
2846
2871
  `_._swap=function(x,y){var z=this[x];this[x]=this[y];this[y]=z;return this;}`
2847
2872
  end
@@ -2869,7 +2894,7 @@ class Exception
2869
2894
  # Returns a new +Exception+ object, with an optional _message_.
2870
2895
  #
2871
2896
  def initialize(msg)
2872
- `if(msg!=null){this._message=msg._value;}`
2897
+ `if(msg!=null){this.__message__=msg.__value__;}`
2873
2898
  end
2874
2899
 
2875
2900
  # call-seq:
@@ -2879,8 +2904,8 @@ class Exception
2879
2904
  # array of strings, each containing <i>"/path/to/filename:line"</i>.
2880
2905
  #
2881
2906
  def backtrace
2882
- `if(this._stack==null){return [];}`
2883
- `for(var i=0,lines=this._stack.match(/@[^\\n]+:\\d+/g),l=lines.length,result=[];i<l;++i){result.push($q(lines[i].match(/@\\w+:\\/*(\\/[^\\n]+:\\d+)/)[1]));}`
2907
+ `if(this.__stack__==null){return [];}`
2908
+ `for(var i=0,lines=this.__stack__.match(/@[^\\n]+:\\d+/g),l=lines.length,result=[];i<l;++i){result.push($q(lines[i].match(/@\\w+:\\/*(\\/[^\\n]+:\\d+)/)[1]));}`
2884
2909
  return `result`
2885
2910
  end
2886
2911
 
@@ -2893,7 +2918,7 @@ class Exception
2893
2918
  #
2894
2919
  def exception(arg)
2895
2920
  `if(arg==null||arg==this){return this;}`
2896
- `this.m$class().m$new(arg.m$toStr())`
2921
+ `this.m$class().m$new(arg.m$to_str())`
2897
2922
  end
2898
2923
 
2899
2924
  # call-seq:
@@ -2903,7 +2928,7 @@ class Exception
2903
2928
  #
2904
2929
  def inspect
2905
2930
  `var class_name=this.m$class().__name__.replace(/\\./g,'::')`
2906
- `this._message==''?$q(class_name):$q('#<'+class_name+': '+(this._message||class_name)+'>')`
2931
+ `this.__message__==''?$q(class_name):$q('#<'+class_name+': '+(this.__message__||class_name)+'>')`
2907
2932
  end
2908
2933
 
2909
2934
  # call-seq:
@@ -2915,7 +2940,7 @@ class Exception
2915
2940
  # is set).
2916
2941
  #
2917
2942
  def message
2918
- `this._message==null?$q(this.m$class().__name__.replace(/\\./g,'::')):$q(this._message)`
2943
+ `this.__message__==null?$q(this.m$class().__name__.replace(/\\./g,'::')):$q(this.__message__)`
2919
2944
  end
2920
2945
 
2921
2946
  # call-seq:
@@ -2925,8 +2950,8 @@ class Exception
2925
2950
  # an array of +String+ objects in the format described in
2926
2951
  # <tt>Exception#backtrace</tt>.
2927
2952
  def set_backtrace(ary)
2928
- `for(var i=0,l=ary.length,result='';i<l;++i){result=result+'@xx://'+ary[i]._value+'\\n';}`
2929
- `this._stack=result`
2953
+ `for(var i=0,l=ary.length,result='';i<l;++i){result=result+'@xx://'+ary[i].__value__+'\\n';}`
2954
+ `this.__stack__=result`
2930
2955
  return `ary`
2931
2956
  end
2932
2957
 
@@ -2939,7 +2964,7 @@ class Exception
2939
2964
  # is set).
2940
2965
  #
2941
2966
  def to_s
2942
- `this._message==null?$q(this.m$class().__name__.replace(/\\./g,'::')):$q(this._message)`
2967
+ `this.__message__==null?$q(this.m$class().__name__.replace(/\\./g,'::')):$q(this.__message__)`
2943
2968
  end
2944
2969
 
2945
2970
  # call-seq:
@@ -2951,11 +2976,11 @@ class Exception
2951
2976
  # is set).
2952
2977
  #
2953
2978
  def to_str
2954
- `this._message==null?$q(this.m$class().__name__.replace(/\\./g,'::')):$q(this._message)`
2979
+ `this.__message__==null?$q(this.m$class().__name__.replace(/\\./g,'::')):$q(this.__message__)`
2955
2980
  end
2956
2981
  end
2957
2982
  `
2958
- c$Exception.prototype.toString=function(){var class_name=this.m$class().__name__.replace(/\\./g,'::'),str=class_name+': '+(this._message||class_name);console.log(str+(this._stack!=null?'\\n from '+this.m$backtrace().join('\\n from '):''));return '#<'+str+'>';}
2983
+ c$Exception.prototype.toString=function(){var class_name=this.m$class().__name__.replace(/\\./g,'::'),str=class_name+': '+(this.__message__||class_name);console.log(str+(this.__stack__!=null?'\\n from '+this.m$backtrace().join('\\n from '):''));return '#<'+str+'>';}
2959
2984
  `
2960
2985
  class StandardError < Exception ; end
2961
2986
  class ArgumentError < StandardError ; end
@@ -3046,7 +3071,7 @@ class Hash
3046
3071
  #
3047
3072
  def self.[](*args)
3048
3073
  `if(args.length==1&&args[0].m$class()==c$Hash){return args[0];}`
3049
- `for(var i=0,l=args.length,result=c$Hash.m$new(),c=result._contents;i<l;i+=2){var k=args[i],v=args[i+1],h=k.m$hash();c[h]=[k,v]}`
3074
+ `for(var i=0,l=args.length,result=c$Hash.m$new(),c=result.__contents__;i<l;i+=2){var k=args[i],v=args[i+1],h=k.m$hash();c[h]=[k,v]}`
3050
3075
  return `result`
3051
3076
  end
3052
3077
 
@@ -3084,9 +3109,9 @@ class Hash
3084
3109
  # # Values from defaults are stored in the hash
3085
3110
  # h2.keys #=> [:c, :d]
3086
3111
  #
3087
- def initialize(&block)
3088
- `this._default=(block==null?nil:block)`
3089
- `this._contents={}`
3112
+ def initialize(*args,&block)
3113
+ `this.__default__=(args[0]==null?block==null?nil:block:args[0])`
3114
+ `this.__contents__={}`
3090
3115
  end
3091
3116
 
3092
3117
  # call-seq:
@@ -3105,7 +3130,7 @@ class Hash
3105
3130
  # h3 == h4 #=> false
3106
3131
  #
3107
3132
  def ==(other)
3108
- `var c=this._contents,o=other._contents`
3133
+ `var c=this.__contents__,o=other.__contents__`
3109
3134
  `for(var x in o){if(x.slice(1,2)=='_'&&c[x]==null){return false;};}`
3110
3135
  `for(var x in c){if(x.slice(1,2)=='_'&&!c[x][1].m$_eql2(o[x][1])){return false;};}`
3111
3136
  return true
@@ -3124,8 +3149,8 @@ class Hash
3124
3149
  # h[:c] => nil
3125
3150
  #
3126
3151
  def [](k)
3127
- `var kv=this._contents[k.m$hash()]`
3128
- `if(!kv){var d=this._default;return(typeof(d)=='function'?d(this,kv[0]):d);}`
3152
+ `var kv=this.__contents__[k.m$hash()]`
3153
+ `if(!kv){var d=this.__default__;return(typeof(d)=='function'?d(this,kv[0]):d);}`
3129
3154
  return `kv[1]`
3130
3155
  end
3131
3156
 
@@ -3144,7 +3169,7 @@ class Hash
3144
3169
  # h #=> {:a => 150, :b => 200, :c => 300}
3145
3170
  #
3146
3171
  def []=(k,v)
3147
- `this._contents[k.m$hash()]=[k,v]`
3172
+ `this.__contents__[k.m$hash()]=[k,v]`
3148
3173
  return `v`
3149
3174
  end
3150
3175
 
@@ -3159,7 +3184,7 @@ class Hash
3159
3184
  # h #=> {}
3160
3185
  #
3161
3186
  def clear
3162
- `this._contents={}`
3187
+ `this.__contents__={}`
3163
3188
  return self
3164
3189
  end
3165
3190
 
@@ -3183,7 +3208,7 @@ class Hash
3183
3208
  # h.default(2) #=> 20
3184
3209
  #
3185
3210
  def default(key = nil)
3186
- `var d=this._default`
3211
+ `var d=this.__default__`
3187
3212
  return `typeof(d)=='function'?d(this,key):d`
3188
3213
  end
3189
3214
 
@@ -3207,7 +3232,7 @@ class Hash
3207
3232
  # h['foo'] #=> #<Proc:201>
3208
3233
  #
3209
3234
  def default=(obj)
3210
- `this._default=obj`
3235
+ `this.__default__=obj`
3211
3236
  return self
3212
3237
  end
3213
3238
 
@@ -3224,7 +3249,7 @@ class Hash
3224
3249
  # a #=> [nil, nil, 4]
3225
3250
  #
3226
3251
  def default_proc
3227
- `var d=this._default`
3252
+ `var d=this.__default__`
3228
3253
  return `typeof(d)=='function'?c$Proc.m$new(d):nil`
3229
3254
  end
3230
3255
 
@@ -3244,7 +3269,7 @@ class Hash
3244
3269
  # h.delete(:z) {|k| "#{k.inspect} not found" } #=> ":z not found"
3245
3270
  #
3246
3271
  def delete(k)
3247
- `var c=this._contents,d=this._default,x=k.m$hash(),kv=c[x]`
3272
+ `var c=this.__contents__,d=this.__default__,x=k.m$hash(),kv=c[x]`
3248
3273
  `if(kv!=null){var result=kv[1];delete(c[x]);return result;}`
3249
3274
  return `typeof(_block)=='function'?#{yield `k`}:(typeof(d)=='function'?d(this,k):d)`
3250
3275
  end
@@ -3260,8 +3285,8 @@ class Hash
3260
3285
  # h.delete_if {|k,v| v >= 200 } #=> {:a => 100}
3261
3286
  #
3262
3287
  def delete_if
3263
- `var c=this._contents`
3264
- `for(var x in c){try{if(x.slice(1,2)=='_'&&$T(#{yield(`c[x][0]`,`c[x][1]`)})){delete(c[x]);};}catch(e){switch(e.__keyword__){case 'next':if($T(e._value)){delete(c[x]);};break;case 'break':return e._value;break;default:throw(e);};};}`
3288
+ `var c=this.__contents__`
3289
+ `for(var x in c){try{if(x.slice(1,2)=='_'&&$T(#{yield(`c[x][0]`,`c[x][1]`)})){delete(c[x]);};}catch(e){switch(e.__keyword__){case 'next':if($T(e.__return__)){delete(c[x]);};break;case 'break':return e.__return__;break;default:throw(e);};};}`
3265
3290
  return self
3266
3291
  end
3267
3292
 
@@ -3287,8 +3312,8 @@ class Hash
3287
3312
  # key-value array is [:b, 100]
3288
3313
  #
3289
3314
  def each
3290
- `var c=this._contents`
3291
- `for(var x in c){try{if(x.slice(1,2)=='_'){var kv=c[x];_block._arity==1?#{yield(`[kv[0],kv[1]]`)}:#{yield(`kv[0],kv[1]`)}};}catch(e){switch(e.__keyword__){case 'next':;break;case 'break':return e._value;break;default:throw(e);};};}`
3315
+ `var c=this.__contents__`
3316
+ `for(var x in c){try{if(x.slice(1,2)=='_'){var kv=c[x];_block.__arity__==1?#{yield(`[kv[0],kv[1]]`)}:#{yield(`kv[0],kv[1]`)}};}catch(e){switch(e.__keyword__){case 'next':;break;case 'break':return e.__return__;break;default:throw(e);};};}`
3292
3317
  return self
3293
3318
  end
3294
3319
 
@@ -3307,8 +3332,8 @@ class Hash
3307
3332
  # :b
3308
3333
  #
3309
3334
  def each_key
3310
- `var c=this._contents`
3311
- `for(var x in c){try{if(x.slice(1,2)=='_'){#{yield `c[x][0]`}};}catch(e){switch(e.__keyword__){case 'next':;break;case 'break':return e._value;break;default:throw(e);};};}`
3335
+ `var c=this.__contents__`
3336
+ `for(var x in c){try{if(x.slice(1,2)=='_'){#{yield `c[x][0]`}};}catch(e){switch(e.__keyword__){case 'next':;break;case 'break':return e.__return__;break;default:throw(e);};};}`
3312
3337
  return self
3313
3338
  end
3314
3339
 
@@ -3328,8 +3353,8 @@ class Hash
3328
3353
  # :b is 200
3329
3354
  #
3330
3355
  def each_pair
3331
- `var c=this._contents`
3332
- `for(var x in c){try{if(x.slice(1,2)=='_'){var kv=c[x];#{yield(`kv[0]`,`kv[1]`)}};}catch(e){switch(e.__keyword__){case 'next':;break;case 'break':return e._value;break;default:throw(e);};};}`
3356
+ `var c=this.__contents__`
3357
+ `for(var x in c){try{if(x.slice(1,2)=='_'){var kv=c[x];#{yield(`kv[0]`,`kv[1]`)}};}catch(e){switch(e.__keyword__){case 'next':;break;case 'break':return e.__return__;break;default:throw(e);};};}`
3333
3358
  return self
3334
3359
  end
3335
3360
 
@@ -3349,8 +3374,8 @@ class Hash
3349
3374
  # 200
3350
3375
  #
3351
3376
  def each_value
3352
- `var c=this._contents`
3353
- `for(var x in c){try{if(x.slice(1,2)=='_'){#{yield `c[x][1]`}};}catch(e){switch(e.__keyword__){case 'next':;break;case 'break':return e._value;break;default:throw(e);};};}`
3377
+ `var c=this.__contents__`
3378
+ `for(var x in c){try{if(x.slice(1,2)=='_'){#{yield `c[x][1]`}};}catch(e){switch(e.__keyword__){case 'next':;break;case 'break':return e.__return__;break;default:throw(e);};};}`
3354
3379
  return self
3355
3380
  end
3356
3381
 
@@ -3362,7 +3387,7 @@ class Hash
3362
3387
  # {}.empty? #=> true
3363
3388
  #
3364
3389
  def empty?
3365
- `for(var x in this._contents){if(x.slice(1,2)=='_'){return false;};}`
3390
+ `for(var x in this.__contents__){if(x.slice(1,2)=='_'){return false;};}`
3366
3391
  return true
3367
3392
  end
3368
3393
 
@@ -3381,7 +3406,7 @@ class Hash
3381
3406
  # h.fetch(:z) { |k| "No value at #{k.inspect}"} #=> "No value at :z"
3382
3407
  #
3383
3408
  def fetch(key, &block)
3384
- `var c=this._contents,k=key.m$hash(),kv=c[k]`
3409
+ `var c=this.__contents__,k=key.m$hash(),kv=c[k]`
3385
3410
  `if(kv!=null){return kv[1];}`
3386
3411
  return `typeof(block)=='function'?block(key):block`
3387
3412
  end
@@ -3400,7 +3425,7 @@ class Hash
3400
3425
  # h.has_key?(:z) #=> false
3401
3426
  #
3402
3427
  def has_key?(k)
3403
- `!!this._contents[k.m$hash()]`
3428
+ `!!this.__contents__[k.m$hash()]`
3404
3429
  end
3405
3430
 
3406
3431
  # call-seq:
@@ -3416,7 +3441,7 @@ class Hash
3416
3441
  # h.has_value?(999) #=> false
3417
3442
  #
3418
3443
  def has_value?(value)
3419
- `var c=this._contents`
3444
+ `var c=this.__contents__`
3420
3445
  `for(var x in c){if(x.slice(1,2)=='_'&&c[x][1].m$_eql2(value)){return true;};}`
3421
3446
  return false
3422
3447
  end
@@ -3438,7 +3463,7 @@ class Hash
3438
3463
  # h.include?(:z) #=> false
3439
3464
  #
3440
3465
  def include?(k)
3441
- `!!this._contents[k.m$hash()]`
3466
+ `!!this.__contents__[k.m$hash()]`
3442
3467
  end
3443
3468
 
3444
3469
  # call-seq:
@@ -3452,7 +3477,7 @@ class Hash
3452
3477
  # h.index(999) #=> nil
3453
3478
  #
3454
3479
  def index(value)
3455
- `var c=this._contents`
3480
+ `var c=this.__contents__`
3456
3481
  `for(var x in c){var kv=c[x];if(x.slice(1,2)=='_'&&kv[1].m$_eql2(value)){return kv[0];};}`
3457
3482
  return nil
3458
3483
  end
@@ -3467,8 +3492,8 @@ class Hash
3467
3492
  # h.inspect #=> "{:a => 100, :b => 200}"
3468
3493
  #
3469
3494
  def inspect
3470
- `var contents=[],c=this._contents`
3471
- `for(var x in c){if(x.slice(1,2)=='_'){var kv=c[x];contents.push(kv[0].m$inspect()._value+' => '+kv[1].m$inspect()._value);};}`
3495
+ `var contents=[],c=this.__contents__`
3496
+ `for(var x in c){if(x.slice(1,2)=='_'){var kv=c[x];contents.push(kv[0].m$inspect().__value__+' => '+kv[1].m$inspect().__value__);};}`
3472
3497
  return `$q('{'+contents.join(', ')+'}')`
3473
3498
  end
3474
3499
 
@@ -3483,8 +3508,8 @@ class Hash
3483
3508
  # h.invert #=> {100 => :m, 300 => :y, 200 => :d, 0 => :a}
3484
3509
  #
3485
3510
  def invert
3486
- `var c=this._contents,result=c$Hash.m$new()`
3487
- `for(var x in c){if(x.slice(1,2)=='_'){var ckv=c[x],rkv=result._contents[ckv[1].m$hash()]=[];rkv[0]=ckv[1];rkv[1]=ckv[0]};}`
3511
+ `var c=this.__contents__,result=c$Hash.m$new()`
3512
+ `for(var x in c){if(x.slice(1,2)=='_'){var ckv=c[x],rkv=result.__contents__[ckv[1].m$hash()]=[];rkv[0]=ckv[1];rkv[1]=ckv[0]};}`
3488
3513
  return `result`
3489
3514
  end
3490
3515
 
@@ -3502,7 +3527,7 @@ class Hash
3502
3527
  # h.key?(:z) #=> false
3503
3528
  #
3504
3529
  def key?(k)
3505
- `!!this._contents[k.m$hash()]`
3530
+ `!!this.__contents__[k.m$hash()]`
3506
3531
  end
3507
3532
 
3508
3533
  # call-seq:
@@ -3516,7 +3541,7 @@ class Hash
3516
3541
  # h.keys #=> [:a, :b]
3517
3542
  #
3518
3543
  def keys
3519
- `var c=this._contents,result=[]`
3544
+ `var c=this.__contents__,result=[]`
3520
3545
  `for(var x in c){if(x.slice(1,2)=='_'){result.push(c[x][0]);};}`
3521
3546
  return `result`
3522
3547
  end
@@ -3534,7 +3559,7 @@ class Hash
3534
3559
  # h.length #=> 0
3535
3560
  #
3536
3561
  def length
3537
- `var c=this._contents,result=0`
3562
+ `var c=this.__contents__,result=0`
3538
3563
  `for(var x in c){if(x.slice(1,2)=='_'){result++;};}`
3539
3564
  return `result`
3540
3565
  end
@@ -3553,7 +3578,7 @@ class Hash
3553
3578
  # h.member?(:z) #=> false
3554
3579
  #
3555
3580
  def member?(k)
3556
- `!!this._contents[k.m$hash()]`
3581
+ `!!this.__contents__[k.m$hash()]`
3557
3582
  end
3558
3583
 
3559
3584
  # call-seq:
@@ -3572,7 +3597,7 @@ class Hash
3572
3597
  #
3573
3598
  # FIX: Doesn't handle loop control keywords
3574
3599
  def merge(other)
3575
- `var c=this._contents,o=other._contents,result=c$Hash.m$new(),r=result._contents`
3600
+ `var c=this.__contents__,o=other.__contents__,result=c$Hash.m$new(),r=result.__contents__`
3576
3601
  `for(var x in c){if(x.slice(1,2)=='_'){r[x]=c[x];};}`
3577
3602
  `for(var x in o){var ckv=c[x],okv=o[x];if(x.slice(1,2)=='_'){typeof(_block)=='function'&&ckv!=null?r[x]=[ckv[0],#{yield(`ckv[0]`,`ckv[1]`,`okv[1]`)}]:r[x]=okv;};}`
3578
3603
  return `result`
@@ -3596,7 +3621,7 @@ class Hash
3596
3621
  #
3597
3622
  # FIX: Doesn't handle loop control keywords
3598
3623
  def merge!(other)
3599
- `var c=this._contents,o=other._contents`
3624
+ `var c=this.__contents__,o=other.__contents__`
3600
3625
  `for(var x in o){var ckv=c[x],okv=o[x];if(x.slice(1,2)=='_'){typeof(_block)=='function'&&ckv!=null?ckv[1]=#{yield(`ckv[0]`,`ckv[1]`,`okv[1]`)}:c[x]=okv;};}`
3601
3626
  return self
3602
3627
  end
@@ -3614,8 +3639,8 @@ class Hash
3614
3639
  # h #=> {:a => 100, :b => 200, :c => 300}
3615
3640
  #
3616
3641
  def reject
3617
- `var c=this._contents,result=c$Hash.m$new()`
3618
- `for(var x in c){try{var kv=c[x];if(x.slice(1,2)=='_'&&!$T(#{yield(`kv[0]`,`kv[1]`)})){result._contents[x]=kv;};}catch(e){switch(e.__keyword__){case 'next':if(!$T(e._value)){result._contents[x]=kv;};break;case 'break':return e._value;break;default:throw(e);};};}`
3642
+ `var c=this.__contents__,result=c$Hash.m$new()`
3643
+ `for(var x in c){try{var kv=c[x];if(x.slice(1,2)=='_'&&!$T(#{yield(`kv[0]`,`kv[1]`)})){result.__contents__[x]=kv;};}catch(e){switch(e.__keyword__){case 'next':if(!$T(e.__return__)){result.__contents__[x]=kv;};break;case 'break':return e.__return__;break;default:throw(e);};};}`
3619
3644
  return `result`
3620
3645
  end
3621
3646
 
@@ -3633,8 +3658,8 @@ class Hash
3633
3658
  # h #=> {:a => 100}
3634
3659
  #
3635
3660
  def reject!
3636
- `var c=this._contents,u=true`
3637
- `for(var x in c){try{var kv=c[x];if(x.slice(1,2)=='_'&&$T(#{yield(`kv[0]`,`kv[1]`)})){u=false;delete(c[x]);};}catch(e){switch(e.__keyword__){case 'next':if($T(e._value)){u=false;delete(c[x]);};break;case 'break':return e._value;break;default:throw(e);};};}`
3661
+ `var c=this.__contents__,u=true`
3662
+ `for(var x in c){try{var kv=c[x];if(x.slice(1,2)=='_'&&$T(#{yield(`kv[0]`,`kv[1]`)})){u=false;delete(c[x]);};}catch(e){switch(e.__keyword__){case 'next':if($T(e.__return__)){u=false;delete(c[x]);};break;case 'break':return e.__return__;break;default:throw(e);};};}`
3638
3663
  return `u?nil:this`
3639
3664
  end
3640
3665
 
@@ -3649,8 +3674,8 @@ class Hash
3649
3674
  # h #=> {:c => 300, :d => 400}
3650
3675
  #
3651
3676
  def replace(other)
3652
- `this._contents={}`
3653
- `var c=this._contents,o=other._contents`
3677
+ `this.__contents__={}`
3678
+ `var c=this.__contents__,o=other.__contents__`
3654
3679
  `for(var x in o){if(x.slice(1,2)=='_'){c[x]=o[x];};}`
3655
3680
  return self
3656
3681
  end
@@ -3667,8 +3692,8 @@ class Hash
3667
3692
  # h.select {|k,v| v < 200} #=> [[:a, 100]]
3668
3693
  #
3669
3694
  def select
3670
- `var c=this._contents,result=[]`
3671
- `for(var x in c){try{var kv=c[x];if(x.slice(1,2)=='_'&&$T(#{yield(`kv[0]`,`kv[1]`)})){result.push(kv);};}catch(e){switch(e.__keyword__){case 'next':if($T(e._value)){result.push(kv);};break;case 'break':return e._value;break;default:throw(e);};};}`
3695
+ `var c=this.__contents__,result=[]`
3696
+ `for(var x in c){try{var kv=c[x];if(x.slice(1,2)=='_'&&$T(#{yield(`kv[0]`,`kv[1]`)})){result.push(kv);};}catch(e){switch(e.__keyword__){case 'next':if($T(e.__return__)){result.push(kv);};break;case 'break':return e.__return__;break;default:throw(e);};};}`
3672
3697
  return `result`
3673
3698
  end
3674
3699
 
@@ -3686,7 +3711,7 @@ class Hash
3686
3711
  # h #=> {}
3687
3712
  #
3688
3713
  def shift
3689
- `var c=this._contents,d=this._default,result=typeof(d)=='function'?d(nil):d`
3714
+ `var c=this.__contents__,d=this.__default__,result=typeof(d)=='function'?d(nil):d`
3690
3715
  `for(var x in c){if(x.slice(1,2)=='_'){result=[c[x][0],c[x][1]];delete(c[x]);break;};}`
3691
3716
  return `result`
3692
3717
  end
@@ -3704,7 +3729,7 @@ class Hash
3704
3729
  # h.size #=> 0
3705
3730
  #
3706
3731
  def size
3707
- `var c=this._contents,result=0`
3732
+ `var c=this.__contents__,result=0`
3708
3733
  `for(var x in c){if(x.slice(1,2)=='_'){result++;};}`
3709
3734
  return `result`
3710
3735
  end
@@ -3723,9 +3748,9 @@ class Hash
3723
3748
  #
3724
3749
  # FIX: Doesn't handle loop control keywords
3725
3750
  def sort(&block)
3726
- `var c=this._contents,result=[]`
3751
+ `var c=this.__contents__,result=[]`
3727
3752
  `for(var x in c){if(x.slice(1,2)=='_'){result.push(c[x]);};}`
3728
- return `c$Array.prototype._quickSort.call(result,0,result.length,block)`
3753
+ return `c$Array.prototype._quick_sort.call(result,0,result.length,block)`
3729
3754
  end
3730
3755
 
3731
3756
  # call-seq:
@@ -3743,7 +3768,7 @@ class Hash
3743
3768
  # h #=> {:a => 150, :b => 200, :c => 300}
3744
3769
  #
3745
3770
  def store(k,v)
3746
- `this._contents[k.m$hash()]=[k,v]`
3771
+ `this.__contents__[k.m$hash()]=[k,v]`
3747
3772
  return `v`
3748
3773
  end
3749
3774
 
@@ -3757,7 +3782,7 @@ class Hash
3757
3782
  # h.to_a #=> [[:a, 100], [:b, 200]]
3758
3783
  #
3759
3784
  def to_a
3760
- `var c=this._contents,result=[]`
3785
+ `var c=this.__contents__,result=[]`
3761
3786
  `for(var x in c){if(x.slice(1,2)=='_'){result.push(c[x]);};}`
3762
3787
  return `result`
3763
3788
  end
@@ -3779,7 +3804,7 @@ class Hash
3779
3804
  # <tt>Array#join</tt> with the default separator.
3780
3805
  #
3781
3806
  def to_s
3782
- `var c=this._contents,result=[]`
3807
+ `var c=this.__contents__,result=[]`
3783
3808
  `for(var x in c){if(x.slice(1,2)=='_'){result.push(c[x]);};}`
3784
3809
  return `c$Array.prototype.m$join.call(result)`
3785
3810
  end
@@ -3802,7 +3827,7 @@ class Hash
3802
3827
  #
3803
3828
  # FIX: Doesn't handle loop control keywords
3804
3829
  def update(other)
3805
- `var c=this._contents,o=other._contents`
3830
+ `var c=this.__contents__,o=other.__contents__`
3806
3831
  `for(var x in o){var ckv=c[x],okv=o[x];if(x.slice(1,2)=='_'){typeof(_block)=='function'&&ckv!=null?ckv[1]=#{yield(`ckv[0]`,`ckv[1]`,`okv[1]`)}:c[x]=okv;};}`
3807
3832
  return self
3808
3833
  end
@@ -3820,8 +3845,8 @@ class Hash
3820
3845
  # h.value?(999) #=> false
3821
3846
  #
3822
3847
  def value?(value)
3823
- `var c=this._contents`
3824
- `for(var x in this._contents){if(x.slice(1,2)=='_'&&c[x][1].m$_eql2(value)){return true;};}`
3848
+ `var c=this.__contents__`
3849
+ `for(var x in this.__contents__){if(x.slice(1,2)=='_'&&c[x][1].m$_eql2(value)){return true;};}`
3825
3850
  return false
3826
3851
  end
3827
3852
 
@@ -3836,7 +3861,7 @@ class Hash
3836
3861
  # h.values #=> [100, 200]
3837
3862
  #
3838
3863
  def values
3839
- `var c=this._contents,result=[]`
3864
+ `var c=this.__contents__,result=[]`
3840
3865
  `for(var x in c){if(x.slice(1,2)=='_'){result.push(c[x][1]);};}`
3841
3866
  return `result`
3842
3867
  end
@@ -3852,7 +3877,7 @@ class Hash
3852
3877
  # h.values_at(:a,:c) #=> [100,300]
3853
3878
  #
3854
3879
  def values_at(*args)
3855
- `for(var i=0,l=args.length,c=this._contents,d=this._default,result=[];i<l;++i){var h=args[i].m$hash(),kv=c[h];result.push(kv?kv[1]:(typeof(d)=='function'?d(this,args[i]):d))}`
3880
+ `for(var i=0,l=args.length,c=this.__contents__,d=this.__default__,result=[];i<l;++i){var h=args[i].m$hash(),kv=c[h];result.push(kv?kv[1]:(typeof(d)=='function'?d(this,args[i]):d))}`
3856
3881
  return `result`
3857
3882
  end
3858
3883
  end
@@ -3863,7 +3888,7 @@ end
3863
3888
  #
3864
3889
  class MatchData
3865
3890
  def initialize # :nodoc:
3866
- `this._captures=[]`
3891
+ `this.__captures__=[]`
3867
3892
  end
3868
3893
 
3869
3894
  # call-seq:
@@ -3885,7 +3910,7 @@ class MatchData
3885
3910
  # m[-3, 2] #=> ["X", "113"]
3886
3911
  #
3887
3912
  def [](*args)
3888
- `c$Array.prototype.m$_brac.apply(this._captures,args)`
3913
+ `c$Array.prototype.m$_brac.apply(this.__captures__,args)`
3889
3914
  end
3890
3915
 
3891
3916
  # FIX: Incomplete
@@ -3905,7 +3930,7 @@ class MatchData
3905
3930
  # m[3] #=> "8"
3906
3931
  #
3907
3932
  def captures
3908
- `this._captures.slice(1)`
3933
+ `this.__captures__.slice(1)`
3909
3934
  end
3910
3935
 
3911
3936
  # FIX: Incomplete
@@ -3923,11 +3948,11 @@ class MatchData
3923
3948
  # m.length #=> 5
3924
3949
  #
3925
3950
  def length
3926
- `this._captures.length`
3951
+ `this.__captures__.length`
3927
3952
  end
3928
3953
 
3929
3954
  def inspect # :nodoc:
3930
- `c$Object.prototype.m$toS.apply(this)`
3955
+ `c$Object.prototype.m$to_s.apply(this)`
3931
3956
  end
3932
3957
 
3933
3958
  # FIX: Incomplete
@@ -3944,7 +3969,7 @@ class MatchData
3944
3969
  # m.post_match #=> ": The Movie"
3945
3970
  #
3946
3971
  def post_match
3947
- `this._post`
3972
+ `this.__post__`
3948
3973
  end
3949
3974
 
3950
3975
  # call-seq:
@@ -3957,7 +3982,7 @@ class MatchData
3957
3982
  # m.pre_match #=> "T"
3958
3983
  #
3959
3984
  def pre_match
3960
- `this._pre`
3985
+ `this.__pre__`
3961
3986
  end
3962
3987
 
3963
3988
  # FIX: Incomplete
@@ -3975,7 +4000,7 @@ class MatchData
3975
4000
  # m.size #=> 5
3976
4001
  #
3977
4002
  def size
3978
- `this._captures.length`
4003
+ `this.__captures__.length`
3979
4004
  end
3980
4005
 
3981
4006
  # call-seq:
@@ -3991,7 +4016,7 @@ class MatchData
3991
4016
  # m2.string #=> "THX1138."
3992
4017
  #
3993
4018
  def string
3994
- `$q(this._string)`
4019
+ `$q(this.__string__)`
3995
4020
  end
3996
4021
 
3997
4022
  # call-seq:
@@ -4004,7 +4029,7 @@ class MatchData
4004
4029
  # m.to_a #=> ["HX1138", "H", "X", "113", "8"]
4005
4030
  #
4006
4031
  def to_a
4007
- `this._captures`
4032
+ `this.__captures__`
4008
4033
  end
4009
4034
 
4010
4035
  # call-seq:
@@ -4017,7 +4042,7 @@ class MatchData
4017
4042
  # m.to_s #=> "HX1138"
4018
4043
  #
4019
4044
  def to_s
4020
- `this._captures[0]`
4045
+ `this.__captures__[0]`
4021
4046
  end
4022
4047
 
4023
4048
  # FIX: Incomplete
@@ -4104,6 +4129,10 @@ class NilClass
4104
4129
  0
4105
4130
  end
4106
4131
 
4132
+ def to_proc # :nodoc:
4133
+ nil
4134
+ end
4135
+
4107
4136
  # call-seq:
4108
4137
  # nil.to_s -> ''
4109
4138
  #
@@ -4336,7 +4365,7 @@ class Numeric
4336
4365
  # ?a.chr #=> "a"
4337
4366
  #
4338
4367
  def chr
4339
- `String.fromCharCode(parseInt(this))`
4368
+ `$q(String.fromCharCode(parseInt(this)))`
4340
4369
  end
4341
4370
 
4342
4371
  # call-seq:
@@ -4382,7 +4411,7 @@ class Numeric
4382
4411
  # 1..
4383
4412
  #
4384
4413
  def downto(limit)
4385
- `for(var i=this.valueOf();i>=limit;--i){try{#{yield `i`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e._value;break;case 'redo':++i;break;default:throw(e);};};}`
4414
+ `for(var i=this.valueOf();i>=limit;--i){try{#{yield `i`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e.__return__;break;case 'redo':++i;break;default:throw(e);};};}`
4386
4415
  return self
4387
4416
  end
4388
4417
 
@@ -4542,7 +4571,7 @@ class Numeric
4542
4571
  #
4543
4572
  def step(limit, step)
4544
4573
  `var i=this.valueOf()`
4545
- `if(step>0){if(i<limit){for(;limit>=i;i+=step){try{#{yield `i`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e._value;break;case 'redo':i-=step;break;default:throw(e);};};};};}else{if(i>limit){for(;limit<=i;i+=step){try{#{yield `i`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e._value;break;case 'redo':i-=step;break;default:throw(e);};}};;};}`
4574
+ `if(step>0){if(i<limit){for(;limit>=i;i+=step){try{#{yield `i`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e.__return__;break;case 'redo':i-=step;break;default:throw(e);};};};};}else{if(i>limit){for(;limit<=i;i+=step){try{#{yield `i`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e.__return__;break;case 'redo':i-=step;break;default:throw(e);};}};;};}`
4546
4575
  return self
4547
4576
  end
4548
4577
 
@@ -4579,7 +4608,7 @@ class Numeric
4579
4608
  # 4
4580
4609
  #
4581
4610
  def times
4582
- `for(var i=0,l=this.valueOf();i<l;++i){try{#{yield `i`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e._value;break;case 'redo':--i;break;default:throw(e);};}}`
4611
+ `for(var i=0,l=this.valueOf();i<l;++i){try{#{yield `i`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e.__return__;break;case 'redo':--i;break;default:throw(e);};}}`
4583
4612
  return self
4584
4613
  end
4585
4614
 
@@ -4661,7 +4690,7 @@ class Numeric
4661
4690
  # 100..
4662
4691
  #
4663
4692
  def upto(limit)
4664
- `for(var i=this.valueOf();i<=limit;++i){try{#{yield `i`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e._value;break;case 'redo':--i;break;default:throw(e);};};}`
4693
+ `for(var i=this.valueOf();i<=limit;++i){try{#{yield `i`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e.__return__;break;case 'redo':--i;break;default:throw(e);};};}`
4665
4694
  return self
4666
4695
  end
4667
4696
 
@@ -4697,11 +4726,19 @@ class Proc
4697
4726
  # Creates a new +Proc+ object, bound to the current context.
4698
4727
  #
4699
4728
  def initialize(func)
4700
- `this._block=func`
4729
+ `this.__block__=func`
4730
+ `this.__block__.__id__=func.__id__||Red.id++`
4731
+ `this.__id__=this.__block__.__id__`
4701
4732
  end
4702
4733
 
4703
- # FIX: Incomplete
4704
- def ==
4734
+ # call-seq:
4735
+ # prc == other => true or false
4736
+ #
4737
+ # Returns +true+ if _prc_ and _other_ are the same object, +false+
4738
+ # otherwise.
4739
+ #
4740
+ def ==(other)
4741
+ `this.__id__==other.__id__`
4705
4742
  end
4706
4743
 
4707
4744
  # call-seq:
@@ -4718,7 +4755,7 @@ class Proc
4718
4755
  # proc[4] #=> 400
4719
4756
  #
4720
4757
  def []()
4721
- `this._block.apply(this,arguments)`
4758
+ `this.__block__.apply(this,arguments)`
4722
4759
  end
4723
4760
 
4724
4761
  # FIX: Incomplete
@@ -4740,7 +4777,7 @@ class Proc
4740
4777
  # proc.call(4) #=> 400
4741
4778
  #
4742
4779
  def call
4743
- `this._block.apply(this,arguments)`
4780
+ `this.__block__.apply(this,arguments)`
4744
4781
  end
4745
4782
 
4746
4783
  # call-seq:
@@ -4804,9 +4841,9 @@ class Range
4804
4841
  # it will be excluded.
4805
4842
  #
4806
4843
  def initialize(start,finish,exclusive=false)
4807
- `this._start=start`
4808
- `this._end=finish`
4809
- `this._exclusive=exclusive`
4844
+ `this.__start__=start`
4845
+ `this.__end__=finish`
4846
+ `this.__exclusive__=exclusive`
4810
4847
  end
4811
4848
 
4812
4849
  # call-seq:
@@ -4822,7 +4859,7 @@ class Range
4822
4859
  #
4823
4860
  def ==(object)
4824
4861
  `if(object.constructor!==c$Range){return false;}`
4825
- `this._start.m$_eql2(object._start)&&this._end.m$_eql2(object._end)&&this._exclusive==object._exclusive`
4862
+ `this.__start__.m$_eql2(object.__start__)&&this.__end__.m$_eql2(object.__end__)&&this.__exclusive__==object.__exclusive__`
4826
4863
  end
4827
4864
 
4828
4865
  # call-seq:
@@ -4845,8 +4882,8 @@ class Range
4845
4882
  # high
4846
4883
  #
4847
4884
  def ===(obj)
4848
- `var s=#{obj <=> `this._start`},e=#{obj <=> `this._end`}`
4849
- `s==0||s==1?(this._exclusive?e==-1:e==-1||e==0):false`
4885
+ `var s=#{obj <=> `this.__start__`},e=#{obj <=> `this.__end__`}`
4886
+ `s==0||s==1?(this.__exclusive__?e==-1:e==-1||e==0):false`
4850
4887
  end
4851
4888
 
4852
4889
  # call-seq:
@@ -4858,13 +4895,13 @@ class Range
4858
4895
  # (1..10).begin #=> 1
4859
4896
  #
4860
4897
  def begin
4861
- `this._start`
4898
+ `this.__start__`
4862
4899
  end
4863
4900
 
4864
4901
  # FIX: Incomplete
4865
4902
  def each
4866
- `var start=this._start,end=this._end`
4867
- `if(typeof(start)=='number'&&typeof(end)=='number'){if(!this._exclusive){end++;};for(var i=start;i<end;i++){#{yield `i`};};}`
4903
+ `var start=this.__start__,end=this.__end__`
4904
+ `if(typeof(start)=='number'&&typeof(end)=='number'){if(!this.__exclusive__){end++;};for(var i=start;i<end;i++){try{#{yield `i`};}catch(e){switch(e.__keyword__){case 'next':break;case 'break':return e.__return__;break;case 'redo':--i;break;default:throw(e);};};};}`
4868
4905
  return self
4869
4906
  end
4870
4907
 
@@ -4878,7 +4915,7 @@ class Range
4878
4915
  # (1...10).end #=> 10
4879
4916
  #
4880
4917
  def end()
4881
- `this._end`
4918
+ `this.__end__`
4882
4919
  end
4883
4920
 
4884
4921
  # call-seq:
@@ -4887,7 +4924,7 @@ class Range
4887
4924
  # Returns +true+ if _rng_ excludes its end value.
4888
4925
  #
4889
4926
  def exclude_end?
4890
- `this._exclusive`
4927
+ `this.__exclusive__`
4891
4928
  end
4892
4929
 
4893
4930
  # call-seq:
@@ -4903,7 +4940,7 @@ class Range
4903
4940
  #
4904
4941
  def eql?(object)
4905
4942
  `if(object.constructor!==c$Range){return false;}`
4906
- `this._start.m$eqlBool(object._start)&&this._end.m$eqlBool(object._end)&&this._exclusive==object._exclusive`
4943
+ `this.__start__.m$eql_bool(object.__start__)&&this.__end__.m$eql_bool(object.__end__)&&this.__exclusive__==object.__exclusive__`
4907
4944
  end
4908
4945
 
4909
4946
  # call-seq:
@@ -4915,7 +4952,7 @@ class Range
4915
4952
  # (1..10).first #=> 1
4916
4953
  #
4917
4954
  def first
4918
- `this._start`
4955
+ `this.__start__`
4919
4956
  end
4920
4957
 
4921
4958
  # FIX: Incomplete
@@ -4933,8 +4970,8 @@ class Range
4933
4970
  # (1...10).include?(10) #=> false
4934
4971
  #
4935
4972
  def include?(obj)
4936
- `var s=#{obj <=> `this._start`},e=#{obj <=> `this._end`}`
4937
- `s==0||s==1?(this._exclusive?e==-1:e==-1||e==0):false`
4973
+ `var s=#{obj <=> `this.__start__`},e=#{obj <=> `this.__end__`}`
4974
+ `s==0||s==1?(this.__exclusive__?e==-1:e==-1||e==0):false`
4938
4975
  end
4939
4976
 
4940
4977
  # call-seq:
@@ -4944,7 +4981,7 @@ class Range
4944
4981
  # and end objects).
4945
4982
  #
4946
4983
  def inspect
4947
- `$q(''+this._start.m$inspect()+(this._exclusive?'...':'..')+this._end.m$inspect())`
4984
+ `$q(''+this.__start__.m$inspect()+(this.__exclusive__?'...':'..')+this.__end__.m$inspect())`
4948
4985
  end
4949
4986
 
4950
4987
  # call-seq:
@@ -4957,7 +4994,7 @@ class Range
4957
4994
  # (1...10).last #=> 10
4958
4995
  #
4959
4996
  def last
4960
- `this._end`
4997
+ `this.__end__`
4961
4998
  end
4962
4999
 
4963
5000
  # call-seq:
@@ -4971,8 +5008,8 @@ class Range
4971
5008
  # (1...10).member?(10) #=> false
4972
5009
  #
4973
5010
  def member?(obj)
4974
- `var s=#{obj <=> `this._start`},e=#{obj <=> `this._end`}`
4975
- `s==0||s==1?(this._exclusive?e==-1:e==-1||e==0):false`
5011
+ `var s=#{obj <=> `this.__start__`},e=#{obj <=> `this.__end__`}`
5012
+ `s==0||s==1?(this.__exclusive__?e==-1:e==-1||e==0):false`
4976
5013
  end
4977
5014
 
4978
5015
  # FIX: Incomplete
@@ -4985,7 +5022,7 @@ class Range
4985
5022
  # Converts _rng_ to a printable form.
4986
5023
  #
4987
5024
  def to_s
4988
- `$q(''+this._start+(this._exclusive?'...':'..')+this._end)`
5025
+ `$q(''+this.__start__+(this.__exclusive__?'...':'..')+this.__end__)`
4989
5026
  end
4990
5027
  end
4991
5028
 
@@ -5038,7 +5075,7 @@ class Regexp
5038
5075
  # Regexp.escape('\\*?{}.') #=> \\\\\*\?\{\}\.
5039
5076
  #
5040
5077
  def self.escape(str)
5041
- `$q(str._value.replace(/([-.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1'))`
5078
+ `$q(str.__value__.replace(/([-.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1'))`
5042
5079
  end
5043
5080
 
5044
5081
  # FIX: Incomplete
@@ -5056,7 +5093,7 @@ class Regexp
5056
5093
  # Regexp.quote('\\*?{}.') #=> \\\\\*\?\{\}\.
5057
5094
  #
5058
5095
  def self.quote(str)
5059
- `str._value.replace(/([-.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1')`
5096
+ `str.__value__.replace(/([-.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1')`
5060
5097
  end
5061
5098
 
5062
5099
  # FIX: Incomplete
@@ -5079,9 +5116,9 @@ class Regexp
5079
5116
  # r3 = Regexp.new(r2) #=> /cat/i
5080
5117
  #
5081
5118
  def initialize(regexp, options)
5082
- `switch(options){case 0:this._options='';break;case 1:this._options='i';break;case 2:this._options='x';break;case 3:this._options='ix';break;case 4:this._options='s';break;case 5:this._options='si';break;case 6:this._options='sx';break;case 7:this._options='six';break;default:this._options=options?'i':'';}`
5083
- `this._source=regexp._value||regexp`
5084
- `this._value=new(RegExp)(this._source,'m'+(/i/.test(this._options)?'i':''))`
5119
+ `switch(options){case 0:this.__options__='';break;case 1:this.__options__='i';break;case 2:this.__options__='x';break;case 3:this.__options__='ix';break;case 4:this.__options__='s';break;case 5:this.__options__='si';break;case 6:this.__options__='sx';break;case 7:this.__options__='six';break;default:this.__options__=options?'i':'';}`
5120
+ `this.__source__=regexp.__value__||regexp`
5121
+ `this.__value__=new(RegExp)(this.__source__,'m'+(/i/.test(this.__options__)?'i':''))`
5085
5122
  end
5086
5123
 
5087
5124
  # call-seq:
@@ -5095,7 +5132,7 @@ class Regexp
5095
5132
  # /abc/ == /abc/i #=> false
5096
5133
  #
5097
5134
  def ==(rxp)
5098
- `this._source===rxp._source&&this._options===rxp._options`
5135
+ `this.__source__===rxp.__source__&&this.__options__===rxp.__options__`
5099
5136
  end
5100
5137
 
5101
5138
  # call-seq:
@@ -5116,9 +5153,9 @@ class Regexp
5116
5153
  # FIX: Incomplete
5117
5154
  def ===(string)
5118
5155
  `var c=$u,result=c$MatchData.m$new()`
5119
- `if(!$T(c=string._value.match(this._value))){return nil;}`
5120
- `for(var i=0,l=c.length;i<l;++i){result._captures[i]=$q(c[i])}`
5121
- `result._string=string._value`
5156
+ `if(!$T(c=string.__value__.match(this.__value__))){return nil;}`
5157
+ `for(var i=0,l=c.length;i<l;++i){result.__captures__[i]=$q(c[i])}`
5158
+ `result.__string__=string.__value__`
5122
5159
  return `result`
5123
5160
  end
5124
5161
 
@@ -5134,9 +5171,9 @@ class Regexp
5134
5171
  # FIX: Incomplete
5135
5172
  def =~(string)
5136
5173
  `var c=$u,result=c$MatchData.m$new()`
5137
- `if(!$T(c=string._value.match(this._value))){return nil;}`
5138
- `for(var i=0,l=c.length;i<l;++i){result._captures[i]=$q(c[i])}`
5139
- `result._string=string._value`
5174
+ `if(!$T(c=string.__value__.match(this.__value__))){return nil;}`
5175
+ `for(var i=0,l=c.length;i<l;++i){result.__captures__[i]=$q(c[i])}`
5176
+ `result.__string__=string.__value__`
5140
5177
  return `result`
5141
5178
  end
5142
5179
 
@@ -5150,7 +5187,7 @@ class Regexp
5150
5187
  # Returns the status of the +IGNORECASE+ flag.
5151
5188
  #
5152
5189
  def casefold?
5153
- `/i/.test(this._options)`
5190
+ `/i/.test(this.__options__)`
5154
5191
  end
5155
5192
 
5156
5193
  # call-seq:
@@ -5164,7 +5201,7 @@ class Regexp
5164
5201
  # /abc/.eql? /abc/i #=> false
5165
5202
  #
5166
5203
  def eql?(rxp)
5167
- `this._source===rxp._source&&this._options===rxp._options`
5204
+ `this.__source__===rxp.__source__&&this.__options__===rxp.__options__`
5168
5205
  end
5169
5206
 
5170
5207
  def hash # :nodoc:
@@ -5192,11 +5229,11 @@ class Regexp
5192
5229
  #
5193
5230
  def match(string)
5194
5231
  `var c=$u,result=c$MatchData.m$new()`
5195
- `if(!$T(c=string._value.match(this._value))){return nil;}`
5196
- `for(var i=0,l=c.length;i<l;++i){result._captures[i]=$q(c[i])}`
5197
- `result._string=string._value`
5198
- `result._pre=RegExp.leftContext`
5199
- `result._post=RegExp.rightContext`
5232
+ `if(!$T(c=string.__value__.match(this.__value__))){return nil;}`
5233
+ `for(var i=0,l=c.length;i<l;++i){result.__captures__[i]=$q(c[i])}`
5234
+ `result.__string__=string.__value__`
5235
+ `result.__pre__=RegExp.leftContext`
5236
+ `result.__post__=RegExp.rightContext`
5200
5237
  return `result`
5201
5238
  end
5202
5239
 
@@ -5220,9 +5257,9 @@ class Regexp
5220
5257
  #
5221
5258
  def options
5222
5259
  `var result=0`
5223
- `if(/i/.test(this._options)){result+=1}`
5224
- `if(/x/.test(this._options)){result+=2}`
5225
- `if(/s/.test(this._options)){result+=4}`
5260
+ `if(/i/.test(this.__options__)){result+=1}`
5261
+ `if(/x/.test(this.__options__)){result+=2}`
5262
+ `if(/s/.test(this.__options__)){result+=4}`
5226
5263
  return `result`
5227
5264
  end
5228
5265
 
@@ -5234,7 +5271,7 @@ class Regexp
5234
5271
  # /ab+c/i.source #=> "ab+c"
5235
5272
  #
5236
5273
  def source
5237
- `$q(this._source)`
5274
+ `$q(this.__source__)`
5238
5275
  end
5239
5276
 
5240
5277
  # call-seq:
@@ -5247,8 +5284,8 @@ class Regexp
5247
5284
  # /ab+c/i.to_s #=> "(?i-mx:ab+c)"
5248
5285
  #
5249
5286
  def to_s
5250
- `var o=this._options.replace('s','m'),c=o.match(/(m)?(i)?(x)?/)`
5251
- `$q('(?'+o+(c[0]=='mix'?'':'-')+(c[1]?'':'m')+(c[2]?'':'i')+(c[3]?'':'x')+':'+this._source+')')`
5287
+ `var o=this.__options__.replace('s','m'),c=o.match(/(m)?(i)?(x)?/)`
5288
+ `$q('(?'+o+(c[0]=='mix'?'':'-')+(c[1]?'':'m')+(c[2]?'':'i')+(c[3]?'':'x')+':'+this.__source__+')')`
5252
5289
  end
5253
5290
  end
5254
5291
 
@@ -5265,7 +5302,7 @@ class String
5265
5302
  # Returns a new string object containing a copy of _str_.
5266
5303
  #
5267
5304
  def initialize(string = `''`)
5268
- `this._value=string._value||string`
5305
+ `this.__value__=string.__value__||string`
5269
5306
  end
5270
5307
 
5271
5308
  # call-seq:
@@ -5293,7 +5330,7 @@ class String
5293
5330
  # 'abc ' * 3 #=> "abc abc abc "
5294
5331
  #
5295
5332
  def *(n)
5296
- `for(var i=0,str=this._value,result='';i<n;++i){result+=str;}`
5333
+ `for(var i=0,str=this.__value__,result='';i<n;++i){result+=str;}`
5297
5334
  return `$q(result)`
5298
5335
  end
5299
5336
 
@@ -5306,7 +5343,7 @@ class String
5306
5343
  # 'abc' + 'def' #=> 'abcdef'
5307
5344
  #
5308
5345
  def +(str)
5309
- `$q(this._value + str._value)`
5346
+ `$q(this.__value__ + str.__value__)`
5310
5347
  end
5311
5348
 
5312
5349
  # call-seq:
@@ -5325,7 +5362,7 @@ class String
5325
5362
  # s << 103 << 104 #=> "abcdefgh"
5326
5363
  #
5327
5364
  def <<(obj)
5328
- `this._value+=(typeof(obj)=='number'?String.fromCharCode(obj):obj._value)`
5365
+ `this.__value__+=(typeof(obj)=='number'?String.fromCharCode(obj):obj.__value__)`
5329
5366
  return self
5330
5367
  end
5331
5368
 
@@ -5350,7 +5387,7 @@ class String
5350
5387
  #
5351
5388
  def <=>(str)
5352
5389
  `if(str.m$class()!=c$String){return nil;}`
5353
- `var tv=this._value,sv=str._value`
5390
+ `var tv=this.__value__,sv=str.__value__`
5354
5391
  `if(tv>sv){return 1;}`
5355
5392
  `if(tv==sv){return 0;}`
5356
5393
  `if(tv<sv){return -1;}`
@@ -5414,7 +5451,7 @@ class String
5414
5451
  # '123ABC'.capitalize #=> "123abc"
5415
5452
  #
5416
5453
  def capitalize
5417
- `var v=this._value`
5454
+ `var v=this.__value__`
5418
5455
  `$q(v.slice(0,1).toUpperCase()+v.slice(1,v.length).toLowerCase())`
5419
5456
  end
5420
5457
 
@@ -5431,9 +5468,9 @@ class String
5431
5468
  # s #=> "Abcdef"
5432
5469
  #
5433
5470
  def capitalize!
5434
- `var v=this._value`
5435
- `this._value=v.slice(0,1).toUpperCase()+v.slice(1,v.length).toLowerCase()`
5436
- return `v==this._value?nil:this`
5471
+ `var v=this.__value__`
5472
+ `this.__value__=v.slice(0,1).toUpperCase()+v.slice(1,v.length).toLowerCase()`
5473
+ return `v==this.__value__?nil:this`
5437
5474
  end
5438
5475
 
5439
5476
  # call-seq:
@@ -5448,7 +5485,7 @@ class String
5448
5485
  #
5449
5486
  def casecmp(str)
5450
5487
  `if(str.m$class()!=c$String){return nil;}`
5451
- `var tv=this._value.toLowerCase(),sv=str._value.toLowerCase()`
5488
+ `var tv=this.__value__.toLowerCase(),sv=str.__value__.toLowerCase()`
5452
5489
  `if(tv>sv){return 1;}`
5453
5490
  `if(tv==sv){return 0;}`
5454
5491
  `if(tv<sv){return -1;}`
@@ -5491,7 +5528,7 @@ class String
5491
5528
  # a.concat(103).concat(104) #=> "abcdefgh"
5492
5529
  #
5493
5530
  def concat(obj)
5494
- `this._value+=(typeof(obj)=='number'?String.fromCharCode(obj):obj._value)`
5531
+ `this.__value__+=(typeof(obj)=='number'?String.fromCharCode(obj):obj.__value__)`
5495
5532
  return self
5496
5533
  end
5497
5534
 
@@ -5520,7 +5557,7 @@ class String
5520
5557
  # 'aBCDEf'.downcase #=> "abcdef"
5521
5558
  #
5522
5559
  def downcase
5523
- `$q(this._value.toLowerCase())`
5560
+ `$q(this.__value__.toLowerCase())`
5524
5561
  end
5525
5562
 
5526
5563
  # call-seq:
@@ -5536,9 +5573,9 @@ class String
5536
5573
  # s #=> "abcdef"
5537
5574
  #
5538
5575
  def downcase!
5539
- `var v=this._value`
5540
- `this._value=v.toLowerCase()`
5541
- return `v==this._value?nil:this`
5576
+ `var v=this.__value__`
5577
+ `this.__value__=v.toLowerCase()`
5578
+ return `v==this.__value__?nil:this`
5542
5579
  end
5543
5580
 
5544
5581
  # FIX: Incomplete
@@ -5562,7 +5599,7 @@ class String
5562
5599
  # ''.empty? #=> true
5563
5600
  #
5564
5601
  def empty?
5565
- `this._value==''`
5602
+ `this.__value__==''`
5566
5603
  end
5567
5604
 
5568
5605
  # call-seq:
@@ -5572,7 +5609,7 @@ class String
5572
5609
  #
5573
5610
  def eql?(str)
5574
5611
  `if(str.m$class()!=c$String){return false;}`
5575
- `this._value==str._value`
5612
+ `this.__value__==str.__value__`
5576
5613
  end
5577
5614
 
5578
5615
  # FIX: Incomplete
@@ -5584,7 +5621,7 @@ class String
5584
5621
  end
5585
5622
 
5586
5623
  def hash # :nodoc:
5587
- `'q_'+this._value`
5624
+ `'q_'+this.__value__`
5588
5625
  end
5589
5626
 
5590
5627
  # call-seq:
@@ -5600,7 +5637,7 @@ class String
5600
5637
  # 'abcdef'.hex #=> 0
5601
5638
  #
5602
5639
  def hex
5603
- `var result=parseInt(this._value,16)`
5640
+ `var result=parseInt(this.__value__,16)`
5604
5641
  return `result.toString()=='NaN'?0:result`
5605
5642
  end
5606
5643
 
@@ -5615,7 +5652,7 @@ class String
5615
5652
  # 'abcdef'.include?(?c) #=> true
5616
5653
  #
5617
5654
  def include?(obj)
5618
- `new(RegExp)(typeof(obj)=='number'?String.fromCharCode(obj):obj._value.replace(/([-.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1')).test(this._value)`
5655
+ `new(RegExp)(typeof(obj)=='number'?String.fromCharCode(obj):obj.__value__.replace(/([-.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1')).test(this.__value__)`
5619
5656
  end
5620
5657
 
5621
5658
  # FIX: Incomplete
@@ -5628,7 +5665,7 @@ class String
5628
5665
 
5629
5666
  # FIX: Incomplete
5630
5667
  def inspect
5631
- `$q('"'+this._value.replace(/\\\\/g,'\\\\\\\\').replace(/"/g,'\\\\"')+'"')`
5668
+ `$q('"'+this.__value__.replace(/\\\\/g,'\\\\\\\\').replace(/"/g,'\\\\"')+'"')`
5632
5669
  end
5633
5670
 
5634
5671
  # call-seq:
@@ -5641,7 +5678,7 @@ class String
5641
5678
  # 'abcdef'.intern #=> :abcdef
5642
5679
  #
5643
5680
  def intern
5644
- `$s(this._value)`
5681
+ `$s(this.__value__)`
5645
5682
  end
5646
5683
 
5647
5684
  # call-seq:
@@ -5654,7 +5691,7 @@ class String
5654
5691
  # 'ab\ncd'.length #=> 5
5655
5692
  #
5656
5693
  def length
5657
- `this._value.length`
5694
+ `this.__value__.length`
5658
5695
  end
5659
5696
 
5660
5697
  # FIX: Incomplete
@@ -5670,7 +5707,7 @@ class String
5670
5707
  # '\tabcdef'.lstrip #=> "abcdef"
5671
5708
  #
5672
5709
  def lstrip
5673
- `$q(this._value.replace(/^\\s*/,''))`
5710
+ `$q(this.__value__.replace(/^\\s*/,''))`
5674
5711
  end
5675
5712
 
5676
5713
  # call-seq:
@@ -5686,9 +5723,9 @@ class String
5686
5723
  # s #=> "abcdef"
5687
5724
  #
5688
5725
  def lstrip!
5689
- `var v=this._value`
5690
- `this._value=v.replace(/^\\s*/,'')`
5691
- return `this._value==v?nil:this`
5726
+ `var v=this.__value__`
5727
+ `this.__value__=v.replace(/^\\s*/,'')`
5728
+ return `this.__value__==v?nil:this`
5692
5729
  end
5693
5730
 
5694
5731
  # call-seq:
@@ -5703,7 +5740,7 @@ class String
5703
5740
  # 'abcdee'.match('xx') #=> nil
5704
5741
  #
5705
5742
  def match(pattern)
5706
- `$r(pattern._source||pattern._value,pattern._options).m$match(this)`
5743
+ `$r(pattern.__source__||pattern.__value__,pattern.__options__).m$match(this)`
5707
5744
  end
5708
5745
 
5709
5746
  # call-seq:
@@ -5727,7 +5764,7 @@ class String
5727
5764
  # 'ZZZ9999'.next #=> 'AAAA0000'
5728
5765
  #
5729
5766
  def next
5730
- `var v=this._value`
5767
+ `var v=this.__value__`
5731
5768
  `if(!/[a-zA-Z0-9]/.test(v)){return $q(v);}`
5732
5769
  `if(/^\\d+$/.test(v)){return $q(''+(+v+1))}`
5733
5770
  `for(var i=v.length-1,carry=i>=0,result='';i>=0;--i){var c=v[i],lc=/[a-z]/.test(c),uc=/[A-Z]/.test(c),n=/[0-9]/.test(c);if($T(carry)&&(lc||uc||n)){if(lc||uc){if(c=='z'||c=='Z'){result=(lc?'a':'A')+result;carry=i;}else{result=String.fromCharCode(c.charCodeAt()+1)+result;carry=false;};}else{if(c=='9'){result='0'+result;carry=i}else{result=''+(+c+1)+result;carry=false;};};}else{result=c+result;};}`
@@ -5743,12 +5780,12 @@ class String
5743
5780
  # <tt>String#next</tt> for details.
5744
5781
  #
5745
5782
  def next!
5746
- `var v=this._value`
5783
+ `var v=this.__value__`
5747
5784
  `if(!/[a-zA-Z0-9]/.test(v)){return $q(v);}`
5748
5785
  `if(/^\\d+$/.test(v)){return $q(''+(+v+1))}`
5749
5786
  `for(var i=v.length-1,carry=i>=0,result='';i>=0;--i){var c=v[i],lc=/[a-z]/.test(c),uc=/[A-Z]/.test(c),n=/[0-9]/.test(c);if($T(carry)&&(lc||uc||n)){if(lc||uc){if(c=='z'||c=='Z'){result=(lc?'a':'A')+result;carry=i;}else{result=String.fromCharCode(c.charCodeAt()+1)+result;carry=false;};}else{if(c=='9'){result='0'+result;carry=i}else{result=''+(+c+1)+result;carry=false;};};}else{result=c+result;};}`
5750
5787
  `if($T(carry)){var c=v[carry],insert=/[a-z]/.test(c)?'a':(/[A-Z]/.test(c)?'A':'1');result=result.slice(0,carry)+insert+result.slice(carry,result.length);}`
5751
- `this._value=result`
5788
+ `this.__value__=result`
5752
5789
  return self
5753
5790
  end
5754
5791
 
@@ -5765,7 +5802,7 @@ class String
5765
5802
  # 'abcdef'.hex #=> 0
5766
5803
  #
5767
5804
  def oct
5768
- `var result=parseInt(this._value,8)`
5805
+ `var result=parseInt(this.__value__,8)`
5769
5806
  return `result.toString()=='NaN'?0:result`
5770
5807
  end
5771
5808
 
@@ -5780,7 +5817,7 @@ class String
5780
5817
  # s #=> "def"
5781
5818
  #
5782
5819
  def replace(str)
5783
- `this._value=str._value`
5820
+ `this.__value__=str.__value__`
5784
5821
  end
5785
5822
 
5786
5823
  # call-seq:
@@ -5791,7 +5828,7 @@ class String
5791
5828
  # 'abcdef'.reverse #=> 'fedcba'
5792
5829
  #
5793
5830
  def reverse
5794
- `$q(this._value.split('').reverse().join(''))`
5831
+ `$q(this.__value__.split('').reverse().join(''))`
5795
5832
  end
5796
5833
 
5797
5834
  # call-seq:
@@ -5805,7 +5842,7 @@ class String
5805
5842
  # s #=> 'fedcba'
5806
5843
  #
5807
5844
  def reverse!
5808
- `this._value=this._value.split('').reverse().join('')`
5845
+ `this.__value__=this.__value__.split('').reverse().join('')`
5809
5846
  return self
5810
5847
  end
5811
5848
 
@@ -5826,7 +5863,7 @@ class String
5826
5863
  # 'abcdef\r\n'.rstrip #=> "abcdef"
5827
5864
  #
5828
5865
  def rstrip
5829
- `$q(this._value.replace(/\\s*$/,''))`
5866
+ `$q(this.__value__.replace(/\\s*$/,''))`
5830
5867
  end
5831
5868
 
5832
5869
  # call-seq:
@@ -5842,9 +5879,9 @@ class String
5842
5879
  # s #=> "abcdef"
5843
5880
  #
5844
5881
  def rstrip!
5845
- `var v=this._value`
5846
- `this._value=v.replace(/\\s*$/,'')`
5847
- return `this._value==v?nil:this`
5882
+ `var v=this.__value__`
5883
+ `this.__value__=v.replace(/\\s*$/,'')`
5884
+ return `this.__value__==v?nil:this`
5848
5885
  end
5849
5886
 
5850
5887
  # FIX: Incomplete
@@ -5861,7 +5898,7 @@ class String
5861
5898
  # 'ab\ncd'.size #=> 5
5862
5899
  #
5863
5900
  def size
5864
- `this._value.length`
5901
+ `this.__value__.length`
5865
5902
  end
5866
5903
 
5867
5904
  # call-seq:
@@ -5895,7 +5932,7 @@ class String
5895
5932
 
5896
5933
  # FIX: Incomplete
5897
5934
  def split(pattern = /\s+/, limit = nil)
5898
- `var a=this._value.split(pattern._value),result=[]`
5935
+ `var a=this.__value__.split(pattern.__value__),result=[]`
5899
5936
  `for(var i=0,l=a.length;i<l;++i){result.push($q(a[i]));}`
5900
5937
  return `result`
5901
5938
  end
@@ -5913,7 +5950,7 @@ class String
5913
5950
  # '\tabcdef\r\n'.strip #=> "abcdef"
5914
5951
  #
5915
5952
  def strip
5916
- `$q(this._value.replace(/^\\s*|\\s*$/,''))`
5953
+ `$q(this.__value__.replace(/^\\s*|\\s*$/,''))`
5917
5954
  end
5918
5955
 
5919
5956
  # call-seq:
@@ -5929,9 +5966,9 @@ class String
5929
5966
  # s #=> "abcdef"
5930
5967
  #
5931
5968
  def strip!
5932
- `var v=this._value`
5933
- `this._value=v.replace(/^\\s*|\\s*$/,'')`
5934
- return `this._value==v?nil:this`
5969
+ `var v=this.__value__`
5970
+ `this.__value__=v.replace(/^\\s*|\\s*$/,'')`
5971
+ return `this.__value__==v?nil:this`
5935
5972
  end
5936
5973
 
5937
5974
  # FIX: Incomplete
@@ -5963,7 +6000,7 @@ class String
5963
6000
  # 'ZZZ9999'.succ #=> 'AAAA0000'
5964
6001
  #
5965
6002
  def succ
5966
- `var v=this._value`
6003
+ `var v=this.__value__`
5967
6004
  `if(!/[a-zA-Z0-9]/.test(v)){return $q(v);}`
5968
6005
  `if(/^\\d+$/.test(v)){return $q(''+(+v+1))}`
5969
6006
  `for(var i=v.length-1,carry=i>=0,result='';i>=0;--i){var c=v[i],lc=/[a-z]/.test(c),uc=/[A-Z]/.test(c),n=/[0-9]/.test(c);if($T(carry)&&(lc||uc||n)){if(lc||uc){if(c=='z'||c=='Z'){result=(lc?'a':'A')+result;carry=i;}else{result=String.fromCharCode(c.charCodeAt()+1)+result;carry=false;};}else{if(c=='9'){result='0'+result;carry=i}else{result=''+(+c+1)+result;carry=false;};};}else{result=c+result;};}`
@@ -5979,12 +6016,12 @@ class String
5979
6016
  # <tt>String#next</tt> for details.
5980
6017
  #
5981
6018
  def succ!
5982
- `var v=this._value`
6019
+ `var v=this.__value__`
5983
6020
  `if(!/[a-zA-Z0-9]/.test(v)){return $q(v);}`
5984
6021
  `if(/^\\d+$/.test(v)){return $q(''+(+v+1))}`
5985
6022
  `for(var i=v.length-1,carry=i>=0,result='';i>=0;--i){var c=v[i],lc=/[a-z]/.test(c),uc=/[A-Z]/.test(c),n=/[0-9]/.test(c);if($T(carry)&&(lc||uc||n)){if(lc||uc){if(c=='z'||c=='Z'){result=(lc?'a':'A')+result;carry=i;}else{result=String.fromCharCode(c.charCodeAt()+1)+result;carry=false;};}else{if(c=='9'){result='0'+result;carry=i}else{result=''+(+c+1)+result;carry=false;};};}else{result=c+result;};}`
5986
6023
  `if($T(carry)){var c=v[carry],insert=/[a-z]/.test(c)?'a':(/[A-Z]/.test(c)?'A':'1');result=result.slice(0,carry)+insert+result.slice(carry,result.length);}`
5987
- `this._value=result`
6024
+ `this.__value__=result`
5988
6025
  return self
5989
6026
  end
5990
6027
 
@@ -6001,7 +6038,7 @@ class String
6001
6038
  # 'aBc123'.swapcase #=> "AbC123"
6002
6039
  #
6003
6040
  def swapcase
6004
- `$q(this._value.replace(/([a-z]+)|([A-Z]+)/g,function($0,$1,$2){return $1?$0.toUpperCase():$0.toLowerCase();}))`
6041
+ `$q(this.__value__.replace(/([a-z]+)|([A-Z]+)/g,function($0,$1,$2){return $1?$0.toUpperCase():$0.toLowerCase();}))`
6005
6042
  end
6006
6043
 
6007
6044
  # call-seq:
@@ -6020,9 +6057,9 @@ class String
6020
6057
  # s2 #=> "123"
6021
6058
  #
6022
6059
  def swapcase!
6023
- `var v=this._value`
6024
- `this._value=v.replace(/([a-z]+)|([A-Z]+)/g,function($0,$1,$2){return $1?$0.toUpperCase():$0.toLowerCase();})`
6025
- return `this._value==v?nil:this`
6060
+ `var v=this.__value__`
6061
+ `this.__value__=v.replace(/([a-z]+)|([A-Z]+)/g,function($0,$1,$2){return $1?$0.toUpperCase():$0.toLowerCase();})`
6062
+ return `this.__value__==v?nil:this`
6026
6063
  end
6027
6064
 
6028
6065
  # call-seq:
@@ -6093,7 +6130,7 @@ class String
6093
6130
  # 'abcdef'.to_sym #=> :abcdef
6094
6131
  #
6095
6132
  def to_sym
6096
- `$s(this._value)`
6133
+ `$s(this.__value__)`
6097
6134
  end
6098
6135
 
6099
6136
  # FIX: Incomplete
@@ -6121,7 +6158,7 @@ class String
6121
6158
  # 'aBCDEf'.upcase #=> "ABCDEF"
6122
6159
  #
6123
6160
  def upcase
6124
- `$q(this._value.toUpperCase())`
6161
+ `$q(this.__value__.toUpperCase())`
6125
6162
  end
6126
6163
 
6127
6164
  # call-seq:
@@ -6137,9 +6174,9 @@ class String
6137
6174
  # s #=> "ABCDEF"
6138
6175
  #
6139
6176
  def upcase!
6140
- `var v=this._value`
6141
- `this._value=v.toUpperCase()`
6142
- return `v==this._value?nil:this`
6177
+ `var v=this.__value__`
6178
+ `this.__value__=v.toUpperCase()`
6179
+ return `v==this.__value__?nil:this`
6143
6180
  end
6144
6181
 
6145
6182
  # FIX: Incomplete
@@ -6183,17 +6220,17 @@ class Symbol
6183
6220
  #
6184
6221
  def self.all_symbols
6185
6222
  `var result=[]`
6186
- `for(var x in c$Symbol._table){if(c$Symbol._table[x].m$class()==c$Symbol){result.push(c$Symbol._table[x]);}}`
6223
+ `for(var x in c$Symbol.__table__){if(c$Symbol.__table__[x].m$class()==c$Symbol){result.push(c$Symbol.__table__[x]);}}`
6187
6224
  return `result`
6188
6225
  end
6189
6226
 
6190
6227
  def initialize(value) # :nodoc:
6191
- `this._value=value`
6192
- `c$Symbol._table[value]=this`
6228
+ `this.__value__=value`
6229
+ `c$Symbol.__table__[value]=this`
6193
6230
  end
6194
6231
 
6195
6232
  def hash # :nodoc:
6196
- `'s_'+this._value`
6233
+ `'s_'+this.__value__`
6197
6234
  end
6198
6235
 
6199
6236
  # call-seq:
@@ -6205,7 +6242,7 @@ class Symbol
6205
6242
  # :foo.id2name #=> "foo"
6206
6243
  #
6207
6244
  def id2name
6208
- `$q(this._value)`
6245
+ `$q(this.__value__)`
6209
6246
  end
6210
6247
 
6211
6248
  # call-seq:
@@ -6240,7 +6277,7 @@ class Symbol
6240
6277
  # :foo.to_s #=> "foo"
6241
6278
  #
6242
6279
  def to_s
6243
- `$q(this._value)`
6280
+ `$q(this.__value__)`
6244
6281
  end
6245
6282
 
6246
6283
  # call-seq:
@@ -6253,7 +6290,7 @@ class Symbol
6253
6290
  return self
6254
6291
  end
6255
6292
 
6256
- `c$Symbol._table=new(Object)`
6293
+ `c$Symbol.__table__=new(Object)`
6257
6294
 
6258
6295
  undef dup
6259
6296
  undef clone
@@ -6276,7 +6313,7 @@ class Time
6276
6313
  #
6277
6314
  def self.at(seconds,milliseconds)
6278
6315
  `var t=c$Time.m$new()`
6279
- `t._value=typeof(seconds)=='number'?new(Date)(seconds*1000+(milliseconds||0)):seconds._value`
6316
+ `t.__value__=typeof(seconds)=='number'?new(Date)(seconds*1000+(milliseconds||0)):seconds.__value__`
6280
6317
  return `t`
6281
6318
  end
6282
6319
 
@@ -6311,7 +6348,7 @@ class Time
6311
6348
  # t2.to_f #=> 1222222222.991
6312
6349
  #
6313
6350
  def initialize
6314
- `this._value=new(Date)`
6351
+ `this.__value__=new(Date)`
6315
6352
  end
6316
6353
 
6317
6354
  # call-seq:
@@ -6325,7 +6362,7 @@ class Time
6325
6362
  #
6326
6363
  def +(numeric)
6327
6364
  `var t=c$Time.m$new()`
6328
- `t._value=new(Date)(numeric*1000+this._value.valueOf())`
6365
+ `t.__value__=new(Date)(numeric*1000+this.__value__.valueOf())`
6329
6366
  return `t`
6330
6367
  end
6331
6368
 
@@ -6343,7 +6380,7 @@ class Time
6343
6380
  # t2 - 2592000 #=> Tue Sep 23 2008 22:10:22 GMT-0400 (EDT)
6344
6381
  #
6345
6382
  def -(time)
6346
- `typeof(time)=='number'?new(Date)(this._value.valueOf()-(time*1000)):(this._value.valueOf()-time._value.valueOf())/1000`
6383
+ `typeof(time)=='number'?new(Date)(this.__value__.valueOf()-(time*1000)):(this.__value__.valueOf()-time.__value__.valueOf())/1000`
6347
6384
  end
6348
6385
 
6349
6386
  # call-seq:
@@ -6360,7 +6397,7 @@ class Time
6360
6397
  # t1 <=> t1 #=> 0
6361
6398
  #
6362
6399
  def <=>(time)
6363
- `var v=this._value.valueOf(),ms=typeof(time)=='number'?time*1000:time._value.valueOf()`
6400
+ `var v=this.__value__.valueOf(),ms=typeof(time)=='number'?time*1000:time.__value__.valueOf()`
6364
6401
  `if(v<ms){return -1;}`
6365
6402
  `if(v==ms){return 0;}`
6366
6403
  `if(v>ms){return 1;}`
@@ -6377,7 +6414,7 @@ class Time
6377
6414
  # t.day #=> 23
6378
6415
  #
6379
6416
  def day
6380
- `this._value.getDate()`
6417
+ `this.__value__.getDate()`
6381
6418
  end
6382
6419
 
6383
6420
  # FIX: Incomplete
@@ -6392,7 +6429,7 @@ class Time
6392
6429
  #
6393
6430
  def eql?(time)
6394
6431
  `if(time.constructor!=c$Time){return false;}`
6395
- `this._value.valueOf()==time._value.valueOf()`
6432
+ `this.__value__.valueOf()==time.__value__.valueOf()`
6396
6433
  end
6397
6434
 
6398
6435
  # FIX: Incomplete
@@ -6422,7 +6459,7 @@ class Time
6422
6459
  # t.gmt_offset #=> -14400
6423
6460
  #
6424
6461
  def gmt_offset
6425
- `this._value.getTimezoneOffset() * -60`
6462
+ `this.__value__.getTimezoneOffset() * -60`
6426
6463
  end
6427
6464
 
6428
6465
  # FIX: Incomplete
@@ -6440,11 +6477,11 @@ class Time
6440
6477
  # t.gmtoff #=> -14400
6441
6478
  #
6442
6479
  def gmtoff
6443
- `this._value.getTimezoneOffset() * -60`
6480
+ `this.__value__.getTimezoneOffset() * -60`
6444
6481
  end
6445
6482
 
6446
6483
  def hash # :nodoc:
6447
- `'t_'+this._value.valueOf()/1000`
6484
+ `'t_'+this.__value__.valueOf()/1000`
6448
6485
  end
6449
6486
 
6450
6487
  # call-seq:
@@ -6456,7 +6493,7 @@ class Time
6456
6493
  # t.hour #=> 22
6457
6494
  #
6458
6495
  def hour
6459
- `this._value.getHours()`
6496
+ `this.__value__.getHours()`
6460
6497
  end
6461
6498
 
6462
6499
  # call-seq:
@@ -6489,7 +6526,7 @@ class Time
6489
6526
  # t.mday #=> 23
6490
6527
  #
6491
6528
  def mday
6492
- `this._value.getDate()`
6529
+ `this.__value__.getDate()`
6493
6530
  end
6494
6531
 
6495
6532
  # call-seq:
@@ -6501,7 +6538,7 @@ class Time
6501
6538
  # t.min #=> 10
6502
6539
  #
6503
6540
  def min
6504
- `this._value.getMinutes()`
6541
+ `this.__value__.getMinutes()`
6505
6542
  end
6506
6543
 
6507
6544
  # call-seq:
@@ -6514,7 +6551,7 @@ class Time
6514
6551
  # t.mon #=> 9
6515
6552
  #
6516
6553
  def mon
6517
- `this._value.getMonth()`
6554
+ `this.__value__.getMonth()`
6518
6555
  end
6519
6556
 
6520
6557
  # call-seq:
@@ -6527,7 +6564,7 @@ class Time
6527
6564
  # t.month #=> 9
6528
6565
  #
6529
6566
  def month
6530
- `this._value.getMonth()`
6567
+ `this.__value__.getMonth()`
6531
6568
  end
6532
6569
 
6533
6570
  # call-seq:
@@ -6539,7 +6576,7 @@ class Time
6539
6576
  # t.sec #=> 22
6540
6577
  #
6541
6578
  def sec
6542
- `this._value.getSeconds()`
6579
+ `this.__value__.getSeconds()`
6543
6580
  end
6544
6581
 
6545
6582
  # FIX: Incomplete
@@ -6553,7 +6590,7 @@ class Time
6553
6590
  #
6554
6591
  def succ
6555
6592
  `var t=c$Time.m$new()`
6556
- `t._value=new(Date)(1000+this._value.valueOf())`
6593
+ `t.__value__=new(Date)(1000+this.__value__.valueOf())`
6557
6594
  return `t`
6558
6595
  end
6559
6596
 
@@ -6583,7 +6620,7 @@ class Time
6583
6620
  # t.to_f #=> 1222222222.989
6584
6621
  #
6585
6622
  def to_f
6586
- `this._value.valueOf()/1000`
6623
+ `this.__value__.valueOf()/1000`
6587
6624
  end
6588
6625
 
6589
6626
  # call-seq:
@@ -6595,7 +6632,7 @@ class Time
6595
6632
  # t.to_i #=> 1222222222
6596
6633
  #
6597
6634
  def to_i
6598
- `parseInt(this._value.valueOf()/1000)`
6635
+ `parseInt(this.__value__.valueOf()/1000)`
6599
6636
  end
6600
6637
 
6601
6638
  # call-seq:
@@ -6607,7 +6644,7 @@ class Time
6607
6644
  # Time.now.to_s #=> "Tue Sep 23 2008 22:10:22 GMT-0400 (EDT)"
6608
6645
  #
6609
6646
  def to_s
6610
- `$q(''+this._value)`
6647
+ `$q(''+this.__value__)`
6611
6648
  end
6612
6649
 
6613
6650
  # call-seq:
@@ -6619,7 +6656,7 @@ class Time
6619
6656
  # t.tv_sec #=> 1222222222
6620
6657
  #
6621
6658
  def tv_sec
6622
- `parseInt(this._value.valueOf()/1000)`
6659
+ `parseInt(this.__value__.valueOf()/1000)`
6623
6660
  end
6624
6661
 
6625
6662
  # call-seq:
@@ -6633,7 +6670,7 @@ class Time
6633
6670
  # t.tv_usec #=> 989000
6634
6671
  #
6635
6672
  def tv_usec
6636
- `parseInt(this._value.valueOf()/1000)`
6673
+ `parseInt(this.__value__.valueOf()/1000)`
6637
6674
  end
6638
6675
 
6639
6676
  # call-seq:
@@ -6647,7 +6684,7 @@ class Time
6647
6684
  # t.usec #=> 989000
6648
6685
  #
6649
6686
  def usec
6650
- `var v = this._value.valueOf()`
6687
+ `var v = this.__value__.valueOf()`
6651
6688
  `(v*1000)-parseInt(v/1000)*1000000`
6652
6689
  end
6653
6690
 
@@ -6670,7 +6707,7 @@ class Time
6670
6707
  # t.utc_offset #=> -14400
6671
6708
  #
6672
6709
  def utc_offset
6673
- `this._value.getTimezoneOffset() * -60`
6710
+ `this.__value__.getTimezoneOffset() * -60`
6674
6711
  end
6675
6712
 
6676
6713
  # call-seq:
@@ -6682,7 +6719,7 @@ class Time
6682
6719
  # t.wday #=> 2
6683
6720
  #
6684
6721
  def wday
6685
- `this._value.getDay()`
6722
+ `this.__value__.getDay()`
6686
6723
  end
6687
6724
 
6688
6725
  # call-seq:
@@ -6707,7 +6744,7 @@ class Time
6707
6744
  # t.year #=> 2008
6708
6745
  #
6709
6746
  def year
6710
- `this._value.getFullYear()`
6747
+ `this.__value__.getFullYear()`
6711
6748
  end
6712
6749
 
6713
6750
  # FIX: Incomplete
@@ -6753,6 +6790,22 @@ class TrueClass
6753
6790
  `this.valueOf()?!$T(object):$T(object)`
6754
6791
  end
6755
6792
 
6793
+ def ==(obj) # :nodoc:
6794
+ `obj.valueOf&&obj.valueOf()===this.valueOf()`
6795
+ end
6796
+
6797
+ def ===(obj) # :nodoc:
6798
+ `obj.valueOf&&obj.valueOf()===this.valueOf()`
6799
+ end
6800
+
6801
+ def eql?(obj) # :nodoc:
6802
+ `obj.valueOf&&obj.valueOf()===this.valueOf()`
6803
+ end
6804
+
6805
+ def equal?(obj) # :nodoc:
6806
+ `obj.valueOf&&obj.valueOf()===this.valueOf()`
6807
+ end
6808
+
6756
6809
  def hash # :nodoc:
6757
6810
  `'b_'+this.valueOf()`
6758
6811
  end
@@ -6775,10 +6828,10 @@ end
6775
6828
  `
6776
6829
 
6777
6830
  c$NilClass.prototype.toString=function(){return 'nil';};
6778
- c$Range.prototype.toString=function(){return ''+this._start+(this._exclusive?'...':'..')+this._end;};
6779
- c$Regexp.prototype.toString=function(){return '/'+this._source+'/'+(/s/.test(this._options)?'m':'')+(/i/.test(this._options)?'i':'')+(/x/.test(this._options)?'x':'');};
6780
- c$String.prototype.toString=function(){return this._value;};
6781
- c$Symbol.prototype.toString=function(){var v=this._value,str=/\\s/.test(v)?'"'+v+'"':v;return ':'+str ;};
6782
- c$Time.prototype.toString=function(){return ''+this._value;};
6831
+ c$Range.prototype.toString=function(){return ''+this.__start__+(this.__exclusive__?'...':'..')+this.__end__;};
6832
+ c$Regexp.prototype.toString=function(){return '/'+this.__source__+'/'+(/s/.test(this.__options__)?'m':'')+(/i/.test(this.__options__)?'i':'')+(/x/.test(this.__options__)?'x':'');};
6833
+ c$String.prototype.toString=function(){return this.__value__;};
6834
+ c$Symbol.prototype.toString=function(){var v=this.__value__,str=/\\s/.test(v)?'"'+v+'"':v;return ':'+str ;};
6835
+ c$Time.prototype.toString=function(){return ''+this.__value__;};
6783
6836
 
6784
6837
  `