Created
June 18, 2015 16:55
-
-
Save mattheworiordan/c3cc15810834737719ea to your computer and use it in GitHub Desktop.
Opal.rb versus MRI Ruby
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ iojs opal.js | |
a-b took 0.002000093460083008s | |
reject..include? took 6.110000133514404s | |
$ ruby ruby.rb | |
a-b took 0.005129098892211914s | |
reject..include? took 0.23897528648376465s |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Core library for Opal */ | |
(function(undefined){if(typeof this.Opal!=="undefined"){console.warn("Opal already loaded. Loading twice can cause troubles, please fix your setup.");return this.Opal}var Opal=this.Opal={};var bridged_classes=Opal.bridged_classes=[];var TopScope=function(){};TopScope.prototype=Opal;Opal.constructor=TopScope;Opal.constants=[];Opal.global=this;var $hasOwn=Opal.hasOwnProperty;var $slice=Opal.slice=Array.prototype.slice;var unique_id=0;Opal.uid=function(){return unique_id++};Opal.cvars={};Opal.gvars={};Opal.exit=function(status){if(Opal.gvars.DEBUG)console.log("Exited with status "+status)};Opal.get=function(name){var constant=this[name];if(constant==null){return this.base.$const_missing(name)}return constant};function create_scope(base,klass,id){var const_alloc=function(){};var const_scope=const_alloc.prototype=new base.constructor;klass.$$scope=const_scope;klass.$$base_module=base.base;const_scope.base=klass;const_scope.constructor=const_alloc;const_scope.constants=[];if(id){klass.$$orig_scope=base;base[id]=base.constructor[id]=klass;base.constants.push(id)}}Opal.create_scope=create_scope;Opal.klass=function(base,superklass,id,constructor){if(!base.$$is_class){base=base.$$class}if(superklass===null){superklass=ObjectClass}var klass=base.$$scope[id];if($hasOwn.call(base.$$scope,id)&&klass.$$orig_scope===base.$$scope){if(!klass.$$is_class){throw Opal.TypeError.$new(id+" is not a class")}if(superklass!==klass.$$super&&superklass!==ObjectClass){throw Opal.TypeError.$new("superclass mismatch for class "+id)}}else if(typeof superklass==="function"){return bridge_class(id,superklass)}else{klass=boot_class(superklass,constructor);klass.$$name=id;create_scope(base.$$scope,klass,id);base[id]=base.$$scope[id]=klass;if(superklass!==ObjectClass&&superklass!==BasicObjectClass){donate_constants(superklass,klass)}if(superklass.$inherited){superklass.$inherited(klass)}}return klass};function boot_class(superklass,constructor){var alloc=boot_class_alloc(null,constructor,superklass);return boot_class_object(superklass,alloc)}Opal.boot=boot_class;function boot_class_object(superklass,alloc){var singleton_class=function(){};singleton_class.prototype=superklass.constructor.prototype;function OpalClass(){}OpalClass.prototype=new singleton_class;var klass=new OpalClass;setup_module_or_class_object(klass,OpalClass,superklass,alloc.prototype);klass.$$alloc=alloc;klass.$$proto.$$class=klass;return klass}function setup_module_or_class_object(module,constructor,superklass,prototype){module.$$id=unique_id++;module.$$proto=prototype;module.constructor=constructor;module.$$is_class=true;module.$$super=superklass;module.$$parent=superklass;module.$$methods=[];module.$$inc=[]}Opal.module=function(base,id){var module;if(!base.$$is_class){base=base.$$class}if($hasOwn.call(base.$$scope,id)){module=base.$$scope[id];if(!module.$$is_mod&&module!==ObjectClass){throw Opal.TypeError.$new(id+" is not a module")}}else{module=boot_module_object();module.$$name=id;create_scope(base.$$scope,module,id);base[id]=base.$$scope[id]=module}return module};function boot_module_object(){var mtor=function(){};mtor.prototype=ModuleClass.constructor.prototype;function module_constructor(){}module_constructor.prototype=new mtor;var module=new module_constructor;var module_prototype={};setup_module_or_class_object(module,module_constructor,ModuleClass,module_prototype);module.$$is_mod=true;module.$$dep=[];return module}Opal.get_singleton_class=function(object){if(object.$$meta){return object.$$meta}if(object.$$is_class){return build_class_singleton_class(object)}return build_object_singleton_class(object)};function build_class_singleton_class(klass){var meta=new Opal.Class.$$alloc;meta.$$class=Opal.Class;meta.$$proto=klass.constructor.prototype;meta.$$is_singleton=true;meta.$$inc=[];meta.$$methods=[];meta.$$scope=klass.$$scope;return klass.$$meta=meta}function build_object_singleton_class(object){var orig_class=object.$$class,class_id="#<Class:#<"+orig_class.$$name+":"+orig_class.$$id+">>";var Singleton=function(){};var meta=Opal.boot(orig_class,Singleton);meta.$$name=class_id;meta.$$proto=object;meta.$$class=orig_class.$$class;meta.$$scope=orig_class.$$scope;meta.$$parent=orig_class;return object.$$meta=meta}Opal.append_features=function(module,klass){var included=klass.$$inc;for(var j=0,jj=included.length;j<jj;j++){if(included[j]===module){return}}included.push(module);module.$$dep.push(klass);var iclass={$$name:module.$$name,$$proto:module.$$proto,$$parent:klass.$$parent,$$module:module,$$iclass:true};klass.$$parent=iclass;var donator=module.$$proto,prototype=klass.$$proto,methods=module.$$methods;for(var i=0,length=methods.length;i<length;i++){var method=methods[i],current;if(prototype.hasOwnProperty(method)&&!(current=prototype[method]).$$donated&&!current.$$stub){}else{prototype[method]=donator[method];prototype[method].$$donated=true}}if(klass.$$dep){donate_methods(klass,methods.slice(),true)}donate_constants(module,klass)};function boot_class_alloc(id,constructor,superklass){if(superklass){var ctor=function(){};ctor.prototype=superklass.$$proto||superklass.prototype;if(id){ctor.displayName=id}constructor.prototype=new ctor}constructor.prototype.constructor=constructor;return constructor}function boot_core_class_object(id,alloc,superclass){var superclass_constructor=function(){};superclass_constructor.prototype=superclass.prototype;var singleton_class=function(){};singleton_class.prototype=new superclass_constructor;singleton_class.displayName="#<Class:"+id+">";var klass=new singleton_class;setup_module_or_class_object(klass,singleton_class,superclass,alloc.prototype);klass.$$alloc=alloc;klass.$$name=id;alloc.prototype.$$class=klass;Opal[id]=klass;Opal.constants.push(id);return klass}function bridge_class(name,constructor){var klass=boot_class_object(ObjectClass,constructor);klass.$$name=name;create_scope(Opal,klass,name);bridged_classes.push(klass);var object_methods=BasicObjectClass.$$methods.concat(ObjectClass.$$methods);for(var i=0,len=object_methods.length;i<len;i++){var meth=object_methods[i];constructor.prototype[meth]=ObjectClass.$$proto[meth]}add_stubs_subscriber(constructor.prototype);return klass}Opal.casgn=function(base_module,name,value){var scope=base_module.$$scope;if(value.$$is_class&&value.$$name===nil){value.$$name=name}if(value.$$is_class){value.$$base_module=base_module}scope.constants.push(name);return scope[name]=value};Opal.cdecl=function(base_scope,name,value){base_scope.constants.push(name);return base_scope[name]=value};function donate_constants(source_mod,target_mod){var source_constants=source_mod.$$scope.constants,target_scope=target_mod.$$scope,target_constants=target_scope.constants;for(var i=0,length=source_constants.length;i<length;i++){target_constants.push(source_constants[i]);target_scope[source_constants[i]]=source_mod.$$scope[source_constants[i]]}}Opal.add_stubs=function(stubs){var subscribers=Opal.stub_subscribers;var subscriber;for(var i=0,length=stubs.length;i<length;i++){var method_name=stubs[i],stub=stub_for(method_name);for(var j=0;j<subscribers.length;j++){subscriber=subscribers[j];if(!(method_name in subscriber)){subscriber[method_name]=stub}}}};function add_stubs_subscriber(prototype){Opal.stub_subscribers.push(prototype)}Opal.stub_subscribers=[BasicObject.prototype];function add_stub_for(prototype,stub){var method_missing_stub=stub_for(stub);prototype[stub]=method_missing_stub}function stub_for(method_name){function method_missing_stub(){this.$method_missing.$$p=method_missing_stub.$$p;method_missing_stub.$$p=null;return this.$method_missing.apply(this,[method_name.slice(1)].concat($slice.call(arguments)))}method_missing_stub.$$stub=true;return method_missing_stub}Opal.add_stub_for=add_stub_for;Opal.ac=function(actual,expected,object,meth){var inspect=(object.$$is_class?object.$$name+".":object.$$class.$$name+"#")+meth;var msg="["+inspect+"] wrong number of arguments("+actual+" for "+expected+")";throw Opal.ArgumentError.$new(msg)};Opal.find_super_dispatcher=function(obj,jsid,current_func,iter,defs){var dispatcher;if(defs){dispatcher=obj.$$is_class?defs.$$super:obj.$$class.$$proto}else{if(obj.$$is_class){dispatcher=obj.$$super}else{dispatcher=find_obj_super_dispatcher(obj,jsid,current_func)}}dispatcher=dispatcher["$"+jsid];dispatcher.$$p=iter;return dispatcher};Opal.find_iter_super_dispatcher=function(obj,jsid,current_func,iter,defs){if(current_func.$$def){return Opal.find_super_dispatcher(obj,current_func.$$jsid,current_func,iter,defs)}else{return Opal.find_super_dispatcher(obj,jsid,current_func,iter,defs)}};function find_obj_super_dispatcher(obj,jsid,current_func){var klass=obj.$$meta||obj.$$class;jsid="$"+jsid;while(klass){if(klass.$$proto[jsid]===current_func){break}klass=klass.$$parent}if(!klass){throw new Error("could not find current class for super()")}klass=klass.$$parent;while(klass){var working=klass.$$proto[jsid];if(working&&working!==current_func){break}klass=klass.$$parent}return klass.$$proto}Opal.ret=function(val){Opal.returner.$v=val;throw Opal.returner};Opal.yield1=function(block,arg){if(typeof block!=="function"){throw Opal.LocalJumpError.$new("no block given")}if(block.length>1&&arg.$$is_array){return block.apply(null,arg)}else{return block(arg)}};Opal.yieldX=function(block,args){if(typeof block!=="function"){throw Opal.LocalJumpError.$new("no block given")}if(block.length>1&&args.length==1){if(args[0].$$is_array){return block.apply(null,args[0])}}if(!args.$$is_array){args=$slice.call(args)}return block.apply(null,args)};Opal.rescue=function(exception,candidates){for(var i=0;i<candidates.length;i++){var candidate=candidates[i];if(candidate.$$is_array){var result=Opal.rescue(exception,candidate);if(result){return result}}else if(candidate["$==="](exception)){return candidate}}return null};Opal.is_a=function(object,klass){if(object.$$meta===klass){return true}var search=object.$$class;while(search){if(search===klass){return true}for(var i=0,length=search.$$inc.length;i<length;i++){if(search.$$inc[i]==klass){return true}}search=search.$$super}return false};Opal.to_ary=function(value){if(value.$$is_array){return value}else if(value.$to_ary&&!value.$to_ary.$$stub){return value.$to_ary()}return[value]};Opal.kwrestargs=function(given_args,used_args){var keys=[],map={},key=null,given_map=given_args.smap;for(key in given_map){if(!used_args[key]){keys.push(key);map[key]=given_map[key]}}return Opal.hash2(keys,map)};Opal.send=function(recv,mid){var args=$slice.call(arguments,2),func=recv["$"+mid];if(func){return func.apply(recv,args)}return recv.$method_missing.apply(recv,[mid].concat(args))};Opal.block_send=function(recv,mid,block){var args=$slice.call(arguments,3),func=recv["$"+mid];if(func){func.$$p=block;return func.apply(recv,args)}return recv.$method_missing.apply(recv,[mid].concat(args))};function donate_methods(klass,defined,indirect){var methods=klass.$$methods,included_in=klass.$$dep;klass.$$methods=methods.concat(defined);if(included_in){for(var i=0,length=included_in.length;i<length;i++){var includee=included_in[i];var dest=includee.$$proto;for(var j=0,jj=defined.length;j<jj;j++){var method=defined[j];dest[method]=klass.$$proto[method];dest[method].$$donated=true}if(includee.$$dep){donate_methods(includee,defined,true)}}}}function define_module_method(module,jsid,body){module.$$proto[jsid]=body;body.$$owner=module;module.$$methods.push(jsid);if(module.$$module_function){module[jsid]=body}var included_in=module.$$dep;if(included_in){for(var i=0,length=included_in.length;i<length;i++){var includee=included_in[i];var dest=includee.$$proto;var current=dest[jsid];if(dest.hasOwnProperty(jsid)&&!current.$$donated&&!current.$$stub){}else if(dest.hasOwnProperty(jsid)&&!current.$$stub){var klass_includees=includee.$$inc;for(var j=0,jj=klass_includees.length;j<jj;j++){if(klass_includees[j]===current.$$owner){var current_owner_index=j}if(klass_includees[j]===module){var module_index=j}}if(current_owner_index<=module_index){dest[jsid]=body;dest[jsid].$$donated=true}}else{dest[jsid]=body;dest[jsid].$$donated=true}if(includee.$$dep){donate_methods(includee,[jsid],true)}}}}Opal.defn=function(obj,jsid,body){if(obj.$$is_mod){define_module_method(obj,jsid,body)}else if(obj.$$is_class){obj.$$proto[jsid]=body;if(obj===BasicObjectClass){define_basic_object_method(jsid,body)}else if(obj===ObjectClass){donate_methods(obj,[jsid])}}else{obj[jsid]=body}return nil};Opal.defs=function(obj,jsid,body){if(obj.$$is_class||obj.$$is_mod){obj.constructor.prototype[jsid]=body}else{obj[jsid]=body}};function define_basic_object_method(jsid,body){BasicObjectClass.$$methods.push(jsid);for(var i=0,len=bridged_classes.length;i<len;i++){bridged_classes[i].$$proto[jsid]=body}}Opal.hash=function(){if(arguments.length==1&&arguments[0].$$class==Opal.Hash){return arguments[0]}var hash=new Opal.Hash.$$alloc,keys=[],_map={},smap={},key,obj,length,khash;hash.map=_map;hash.smap=smap;hash.keys=keys;if(arguments.length==1){if(arguments[0].$$is_array){var args=arguments[0];for(var i=0,ii=args.length;i<ii;i++){var pair=args[i];if(pair.length!==2){throw Opal.ArgumentError.$new("value not of length 2: "+pair.$inspect())}key=pair[0];obj=pair[1];if(key.$$is_string){khash=key;map=smap}else{khash=key.$hash();map=_map}if(map[khash]==null){keys.push(key)}map[khash]=obj}}else{obj=arguments[0];for(key in obj){khash=key.$hash();map[khash]=obj[khash];keys.push(key)}}}else{length=arguments.length;if(length%2!==0){throw Opal.ArgumentError.$new("odd number of arguments for Hash")}for(var j=0;j<length;j++){key=arguments[j];obj=arguments[++j];if(key.$$is_string){khash=key;map=smap}else{khash=key.$hash();map=_map}if(map[khash]==null){keys.push(key)}map[khash]=obj}}return hash};Opal.hash2=function(keys,map){var hash=new Opal.Hash.$$alloc;hash.keys=keys;hash.map={};hash.smap=map;return hash};Opal.range=function(first,last,exc){var range=new Opal.Range.$$alloc;range.begin=first;range.end=last;range.exclude=exc;return range};(function(Opal){var loaded_features=["corelib/runtime.js"],require_table={"corelib/runtime.js":true},modules={};var current_dir=".";function mark_as_loaded(filename){if(require_table[filename]){return false}loaded_features.push(filename);require_table[filename]=true;return true}function normalize_loadable_path(path){var parts,part,new_parts=[],SEPARATOR="/";if(current_dir!=="."){path=current_dir.replace(/\/*$/,"/")+path}parts=path.split(SEPARATOR);for(var i=0,ii=parts.length;i<ii;i++){part=parts[i];if(part=="")continue;part===".."?new_parts.pop():new_parts.push(part)}return new_parts.join(SEPARATOR)}function load(path){mark_as_loaded(path);var module=modules[path];if(module){module(Opal)}else{var severity=Opal.dynamic_require_severity||"warning";var message="cannot load such file -- "+path;if(severity==="error"){Opal.LoadError?Opal.LoadError.$new(message):function(){throw message}()}else if(severity==="warning"){console.warn("WARNING: LoadError: "+message)}}return true}function require(path){if(require_table[path]){return false}return load(path)}Opal.modules=modules;Opal.loaded_features=loaded_features;Opal.normalize_loadable_path=normalize_loadable_path;Opal.mark_as_loaded=mark_as_loaded;Opal.load=load;Opal.require=require})(Opal);var BasicObjectClass;var ObjectClass;var ModuleClass;var ClassClass;function BasicObject(){}function Object(){}function Class(){}function Module(){}function NilClass(){}boot_class_alloc("BasicObject",BasicObject);boot_class_alloc("Object",Object,BasicObject);boot_class_alloc("Module",Module,Object);boot_class_alloc("Class",Class,Module);BasicObjectClass=boot_core_class_object("BasicObject",BasicObject,Class);ObjectClass=boot_core_class_object("Object",Object,BasicObjectClass.constructor);ModuleClass=boot_core_class_object("Module",Module,ObjectClass.constructor);ClassClass=boot_core_class_object("Class",Class,ModuleClass.constructor);BasicObjectClass.$$class=ClassClass;ObjectClass.$$class=ClassClass;ModuleClass.$$class=ClassClass;ClassClass.$$class=ClassClass;BasicObjectClass.$$super=null;ObjectClass.$$super=BasicObjectClass;ModuleClass.$$super=ObjectClass;ClassClass.$$super=ModuleClass;BasicObjectClass.$$parent=null;ObjectClass.$$parent=BasicObjectClass;ModuleClass.$$parent=ObjectClass;ClassClass.$$parent=ModuleClass;ObjectClass.$$dep=bridged_classes;Opal.base=ObjectClass;BasicObjectClass.$$scope=ObjectClass.$$scope=Opal;BasicObjectClass.$$orig_scope=ObjectClass.$$orig_scope=Opal;Opal.Kernel=ObjectClass;ModuleClass.$$scope=ObjectClass.$$scope;ModuleClass.$$orig_scope=ObjectClass.$$orig_scope;ClassClass.$$scope=ObjectClass.$$scope;ClassClass.$$orig_scope=ObjectClass.$$orig_scope;ObjectClass.$$proto.toString=function(){return this.$to_s()};ObjectClass.$$proto.$require=Opal.require;Opal.top=new ObjectClass.$$alloc;var nil_id=Opal.uid();Opal.klass(ObjectClass,ObjectClass,"NilClass",NilClass);var nil=Opal.nil=new NilClass;nil.$$id=nil_id;nil.call=nil.apply=function(){throw Opal.LocalJumpError.$new("no block given")};Opal.breaker=new Error("unexpected break");Opal.returner=new Error("unexpected return");bridge_class("Array",Array);bridge_class("Boolean",Boolean);bridge_class("Numeric",Number);bridge_class("String",String);bridge_class("Proc",Function);bridge_class("Exception",Error);bridge_class("Regexp",RegExp);bridge_class("Time",Date);TypeError.$$super=Error}).call(this);if(typeof global!=="undefined"){global.Opal=this.Opal;Opal.global=global}if(typeof window!=="undefined"){window.Opal=this.Opal;Opal.global=window}Opal.mark_as_loaded(Opal.normalize_loadable_path("corelib/runtime"));Opal.modules["corelib/helpers"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$new","$class","$===","$respond_to?","$raise","$type_error","$__send__","$coerce_to","$nil?","$<=>","$inspect"]);return function($base){var self=$module($base,"Opal");var def=self.$$proto,$scope=self.$$scope;Opal.defs(self,"$type_error",function(object,type,method,coerced){var $a,$b,self=this;if(method==null){method=nil}if(coerced==null){coerced=nil}if(($a=($b=method!==false&&method!==nil)?coerced:$b)!==nil&&(!$a.$$is_boolean||$a==true)){return $scope.get("TypeError").$new("can't convert "+object.$class()+" into "+type+" ("+object.$class()+"#"+method+" gives "+coerced.$class())}else{return $scope.get("TypeError").$new("no implicit conversion of "+object.$class()+" into "+type)}});Opal.defs(self,"$coerce_to",function(object,type,method){var $a,self=this;if(($a=type["$==="](object))!==nil&&(!$a.$$is_boolean||$a==true)){return object}if(($a=object["$respond_to?"](method))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise(self.$type_error(object,type))}return object.$__send__(method)});Opal.defs(self,"$coerce_to!",function(object,type,method){var $a,self=this,coerced=nil;coerced=self.$coerce_to(object,type,method);if(($a=type["$==="](coerced))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise(self.$type_error(object,type,method,coerced))}return coerced});Opal.defs(self,"$coerce_to?",function(object,type,method){var $a,self=this,coerced=nil;if(($a=object["$respond_to?"](method))!==nil&&(!$a.$$is_boolean||$a==true)){}else{return nil}coerced=self.$coerce_to(object,type,method);if(($a=coerced["$nil?"]())!==nil&&(!$a.$$is_boolean||$a==true)){return nil}if(($a=type["$==="](coerced))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise(self.$type_error(object,type,method,coerced))}return coerced});Opal.defs(self,"$try_convert",function(object,type,method){var $a,self=this;if(($a=type["$==="](object))!==nil&&(!$a.$$is_boolean||$a==true)){return object}if(($a=object["$respond_to?"](method))!==nil&&(!$a.$$is_boolean||$a==true)){return object.$__send__(method)}else{return nil}});Opal.defs(self,"$compare",function(a,b){var $a,self=this,compare=nil;compare=a["$<=>"](b);if(($a=compare===nil)!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"comparison of "+a.$class()+" with "+b.$class()+" failed")}return compare});Opal.defs(self,"$destructure",function(args){var self=this;if(args.length==1){return args[0]}else if(args.$$is_array){return args}else{return $slice.call(args)}});Opal.defs(self,"$respond_to?",function(obj,method){var self=this;if(obj==null||!obj.$$class){return false}return obj["$respond_to?"](method)});Opal.defs(self,"$inspect",function(obj){var self=this;if(obj===undefined){return"undefined"}else if(obj===null){return"null"}else if(!obj.$$class){return obj.toString()}else{return obj.$inspect()}})}(self)};Opal.modules["corelib/module"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$attr_reader","$attr_writer","$coerce_to!","$raise","$=~","$const_missing","$const_get","$to_str","$to_proc","$append_features","$included","$name","$new","$to_s","$__id__"]);return function($base,$super){function $Module(){}var self=$Module=$klass($base,$super,"Module",$Module);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4;Opal.defs(self,"$new",TMP_1=function(){var self=this,$iter=TMP_1.$$p,block=$iter||nil;TMP_1.$$p=null;function AnonModule(){}var klass=Opal.boot(Opal.Module,AnonModule);klass.$$name=nil;klass.$$class=Opal.Module;klass.$$dep=[];klass.$$is_mod=true;klass.$$proto={};Opal.create_scope(Opal.Module.$$scope,klass);if(block!==nil){var block_self=block.$$s;block.$$s=null;block.call(klass);block.$$s=block_self}return klass});def["$==="]=function(object){var $a,self=this;if(($a=object==null)!==nil&&(!$a.$$is_boolean||$a==true)){return false}return Opal.is_a(object,self)};def["$<"]=function(other){var self=this;var working=self;while(working){if(working===other){return true}working=working.$$parent}return false};def.$alias_method=function(newname,oldname){var self=this;var newjsid="$"+newname,body=self.$$proto["$"+oldname];if(self.$$is_singleton){self.$$proto[newjsid]=body}else{Opal.defn(self,newjsid,body)}return self;return self};def.$alias_native=function(mid,jsid){var self=this;if(jsid==null){jsid=mid}return self.$$proto["$"+mid]=self.$$proto[jsid]};def.$ancestors=function(){var self=this;var parent=self,result=[];while(parent){result.push(parent);result=result.concat(parent.$$inc);parent=parent.$$super}return result};def.$append_features=function(klass){var self=this;Opal.append_features(self,klass);return self};def.$attr_accessor=function(names){var $a,$b,self=this;names=$slice.call(arguments,0);($a=self).$attr_reader.apply($a,[].concat(names));return($b=self).$attr_writer.apply($b,[].concat(names))};def.$attr_reader=function(names){var self=this;names=$slice.call(arguments,0);for(var i=0,length=names.length;i<length;i++){(function(name){self.$$proto[name]=nil;var func=function(){return this[name]};if(self.$$is_singleton){self.$$proto.constructor.prototype["$"+name]=func}else{Opal.defn(self,"$"+name,func)}})(names[i])}return nil};def.$attr_writer=function(names){var self=this;names=$slice.call(arguments,0);for(var i=0,length=names.length;i<length;i++){(function(name){self.$$proto[name]=nil;var func=function(value){return this[name]=value};if(self.$$is_singleton){self.$$proto.constructor.prototype["$"+name+"="]=func}else{Opal.defn(self,"$"+name+"=",func)}})(names[i])}return nil};Opal.defn(self,"$attr",def.$attr_accessor);def.$autoload=function(const$,path){var self=this;var autoloaders;if(!(autoloaders=self.$$autoload)){autoloaders=self.$$autoload={}}autoloaders[const$]=path;return nil};def.$class_variable_get=function(name){var $a,self=this;name=$scope.get("Opal")["$coerce_to!"](name,$scope.get("String"),"to_str");if(($a=name.length<3||name.slice(0,2)!=="@@")!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("NameError"),"class vars should start with @@")}var value=Opal.cvars[name.slice(2)];(function(){if(($a=value==null)!==nil&&(!$a.$$is_boolean||$a==true)){return self.$raise($scope.get("NameError"),"uninitialized class variable @@a in")}else{return nil}return nil})();return value};def.$class_variable_set=function(name,value){var $a,self=this;name=$scope.get("Opal")["$coerce_to!"](name,$scope.get("String"),"to_str");if(($a=name.length<3||name.slice(0,2)!=="@@")!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("NameError"))}Opal.cvars[name.slice(2)]=value;return value};def.$constants=function(){var self=this;return self.$$scope.constants};def["$const_defined?"]=function(name,inherit){var $a,self=this;if(inherit==null){inherit=true}if(($a=name["$=~"](/^[A-Z]\w*$/))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("NameError"),"wrong constant name "+name)}scopes=[self.$$scope];if(inherit||self===Opal.Object){var parent=self.$$super;while(parent!==Opal.BasicObject){scopes.push(parent.$$scope);parent=parent.$$super}}for(var i=0,len=scopes.length;i<len;i++){if(scopes[i].hasOwnProperty(name)){return true}}return false};def.$const_get=function(name,inherit){var $a,self=this;if(inherit==null){inherit=true}if(($a=name["$=~"](/^[A-Z]\w*$/))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("NameError"),"wrong constant name "+name)}var scopes=[self.$$scope];if(inherit||self==Opal.Object){var parent=self.$$super;while(parent!==Opal.BasicObject){scopes.push(parent.$$scope);parent=parent.$$super}}for(var i=0,len=scopes.length;i<len;i++){if(scopes[i].hasOwnProperty(name)){return scopes[i][name]}}return self.$const_missing(name)};def.$const_missing=function(const$){var self=this;if(self.$$autoload){var file=self.$$autoload[const$];if(file){self.$require(file);return self.$const_get(const$)}}return self.$raise($scope.get("NameError"),"uninitialized constant "+self+"::"+const$)};def.$const_set=function(name,value){var $a,self=this;if(($a=name["$=~"](/^[A-Z]\w*$/))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("NameError"),"wrong constant name "+name)}try{name=name.$to_str()}catch($err){if(true){self.$raise($scope.get("TypeError"),"conversion with #to_str failed")}else{throw $err}}Opal.casgn(self,name,value);return value};def.$define_method=TMP_2=function(name,method){var self=this,$iter=TMP_2.$$p,block=$iter||nil;TMP_2.$$p=null;if(method){block=method.$to_proc()}if(block===nil){throw new Error("no block given")}var jsid="$"+name;block.$$jsid=name;block.$$s=null;block.$$def=block;if(self.$$is_singleton){self.$$proto[jsid]=block}else{Opal.defn(self,jsid,block)}return name};def.$remove_method=function(name){var self=this;var jsid="$"+name;var current=self.$$proto[jsid];delete self.$$proto[jsid];return self};def.$include=function(mods){var self=this;mods=$slice.call(arguments,0);for(var i=mods.length-1;i>=0;i--){var mod=mods[i];if(mod===self){continue}mod.$append_features(self);mod.$included(self)}return self};def["$include?"]=function(mod){var self=this;for(var cls=self;cls;cls=cls.parent){for(var i=0;i!=cls.$$inc.length;i++){var mod2=cls.$$inc[i];if(mod===mod2){return true}}}return false};def.$instance_method=function(name){var self=this;var meth=self.$$proto["$"+name];if(!meth||meth.$$stub){self.$raise($scope.get("NameError"),"undefined method `"+name+"' for class `"+self.$name()+"'")}return $scope.get("UnboundMethod").$new(self,meth,name)};def.$instance_methods=function(include_super){var self=this;if(include_super==null){include_super=false}var methods=[],proto=self.$$proto;for(var prop in proto){if(!prop.charAt(0)==="$"){continue}if(typeof proto[prop]!=="function"){continue}if(proto[prop].$$stub){continue}if(!self.$$is_mod){if(self!==Opal.BasicObject&&proto[prop]===Opal.BasicObject.$$proto[prop]){continue}if(!include_super&&!proto.hasOwnProperty(prop)){continue}if(!include_super&&proto[prop].$$donated){continue}}methods.push(prop.substr(1))}return methods};def.$included=function(mod){var self=this;return nil};def.$extended=function(mod){var self=this;return nil};def.$module_eval=TMP_3=function(){var self=this,$iter=TMP_3.$$p,block=$iter||nil;TMP_3.$$p=null;if(block!==false&&block!==nil){}else{self.$raise($scope.get("ArgumentError"),"no block given")}var old=block.$$s,result;block.$$s=null;result=block.call(self);block.$$s=old;return result};Opal.defn(self,"$class_eval",def.$module_eval);def.$module_exec=TMP_4=function(){var self=this,$iter=TMP_4.$$p,block=$iter||nil;TMP_4.$$p=null;if(block===nil){throw new Error("no block given")}var block_self=block.$$s,result;block.$$s=null;result=block.apply(self,$slice.call(arguments));block.$$s=block_self;return result};Opal.defn(self,"$class_exec",def.$module_exec);def["$method_defined?"]=function(method){var self=this;var body=self.$$proto["$"+method];return!!body&&!body.$$stub};def.$module_function=function(methods){var self=this;methods=$slice.call(arguments,0);if(methods.length===0){self.$$module_function=true}else{for(var i=0,length=methods.length;i<length;i++){var meth=methods[i],func=self.$$proto["$"+meth];self.constructor.prototype["$"+meth]=func}}return self};def.$name=function(){var self=this;if(self.$$full_name){return self.$$full_name}var result=[],base=self;while(base){if(base.$$name===nil){return result.length===0?nil:result.join("::")}result.unshift(base.$$name);base=base.$$base_module;if(base===Opal.Object){break}}if(result.length===0){return nil}return self.$$full_name=result.join("::")};def.$public=function(methods){var self=this;methods=$slice.call(arguments,0);if(methods.length===0){self.$$module_function=false}return nil};Opal.defn(self,"$private",def.$public);Opal.defn(self,"$protected",def.$public);Opal.defn(self,"$nesting",def.$public);def.$private_class_method=function(name){var self=this;return self["$"+name]||nil};Opal.defn(self,"$public_class_method",def.$private_class_method);def["$private_method_defined?"]=function(obj){var self=this;return false};def.$private_constant=function(){var self=this;return nil};Opal.defn(self,"$protected_method_defined?",def["$private_method_defined?"]);Opal.defn(self,"$public_instance_methods",def.$instance_methods);Opal.defn(self,"$public_method_defined?",def["$method_defined?"]);def.$remove_class_variable=function(){var self=this;return nil};def.$remove_const=function(name){var self=this;var old=self.$$scope[name];delete self.$$scope[name];return old};def.$to_s=function(){var $a,self=this;return($a=self.$name())!==false&&$a!==nil?$a:"#<"+(self.$$is_mod?"Module":"Class")+":0x"+self.$__id__().$to_s(16)+">"};return(def.$undef_method=function(symbol){var self=this;Opal.add_stub_for(self.$$proto,"$"+symbol);return self},nil)&&"undef_method"}(self,null)};Opal.modules["corelib/class"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$require","$raise","$allocate"]);self.$require("corelib/module");return function($base,$super){function $Class(){}var self=$Class=$klass($base,$super,"Class",$Class);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2;Opal.defs(self,"$new",TMP_1=function(sup){var self=this,$iter=TMP_1.$$p,block=$iter||nil;if(sup==null){sup=$scope.get("Object")}TMP_1.$$p=null;if(!sup.$$is_class||sup.$$is_mod){self.$raise($scope.get("TypeError"),"superclass must be a Class")}function AnonClass(){}var klass=Opal.boot(sup,AnonClass);klass.$$name=nil;klass.$$parent=sup;Opal.create_scope(sup.$$scope,klass);sup.$inherited(klass);if(block!==nil){var block_self=block.$$s;block.$$s=null;block.call(klass);block.$$s=block_self}return klass});def.$allocate=function(){var self=this;var obj=new self.$$alloc;obj.$$id=Opal.uid();return obj};def.$inherited=function(cls){var self=this;return nil};def.$new=TMP_2=function(args){var self=this,$iter=TMP_2.$$p,block=$iter||nil;args=$slice.call(arguments,0);TMP_2.$$p=null;var obj=self.$allocate();obj.$initialize.$$p=block;obj.$initialize.apply(obj,args);return obj};return(def.$superclass=function(){var self=this;return self.$$super||nil},nil)&&"superclass"}(self,null)};Opal.modules["corelib/basic_object"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass; | |
Opal.add_stubs(["$raise","$inspect"]);return function($base,$super){function $BasicObject(){}var self=$BasicObject=$klass($base,$super,"BasicObject",$BasicObject);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4;Opal.defn(self,"$initialize",function(){var self=this;return nil});Opal.defn(self,"$==",function(other){var self=this;return self===other});Opal.defn(self,"$__id__",function(){var self=this;return self.$$id||(self.$$id=Opal.uid())});Opal.defn(self,"$__send__",TMP_1=function(symbol,args){var self=this,$iter=TMP_1.$$p,block=$iter||nil;args=$slice.call(arguments,1);TMP_1.$$p=null;var func=self["$"+symbol];if(func){if(block!==nil){func.$$p=block}return func.apply(self,args)}if(block!==nil){self.$method_missing.$$p=block}return self.$method_missing.apply(self,[symbol].concat(args))});Opal.defn(self,"$!",function(){var self=this;return false});Opal.defn(self,"$eql?",def["$=="]);Opal.defn(self,"$equal?",def["$=="]);Opal.defn(self,"$instance_eval",TMP_2=function(){var self=this,$iter=TMP_2.$$p,block=$iter||nil;TMP_2.$$p=null;if(block!==false&&block!==nil){}else{$scope.get("Kernel").$raise($scope.get("ArgumentError"),"no block given")}var old=block.$$s,result;block.$$s=null;result=block.call(self,self);block.$$s=old;return result});Opal.defn(self,"$instance_exec",TMP_3=function(args){var self=this,$iter=TMP_3.$$p,block=$iter||nil;args=$slice.call(arguments,0);TMP_3.$$p=null;if(block!==false&&block!==nil){}else{$scope.get("Kernel").$raise($scope.get("ArgumentError"),"no block given")}var block_self=block.$$s,result;block.$$s=null;result=block.apply(self,args);block.$$s=block_self;return result});return(Opal.defn(self,"$method_missing",TMP_4=function(symbol,args){var $a,self=this,$iter=TMP_4.$$p,block=$iter||nil;args=$slice.call(arguments,1);TMP_4.$$p=null;return $scope.get("Kernel").$raise($scope.get("NoMethodError"),function(){if(($a=self.$inspect&&!self.$inspect.$$stub)!==nil&&(!$a.$$is_boolean||$a==true)){return"undefined method `"+symbol+"' for "+self.$inspect()+":"+self.$$class}else{return"undefined method `"+symbol+"' for "+self.$$class}return nil}())}),nil)&&"method_missing"}(self,null)};Opal.modules["corelib/kernel"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module,$gvars=Opal.gvars;Opal.add_stubs(["$raise","$inspect","$==","$class","$new","$respond_to?","$to_ary","$to_a","$<<","$allocate","$copy_instance_variables","$initialize_clone","$initialize_copy","$singleton_class","$initialize_dup","$for","$to_proc","$each","$reverse","$append_features","$extended","$to_i","$to_s","$to_f","$*","$__id__","$===","$empty?","$ArgumentError","$nan?","$infinite?","$to_int","$coerce_to!","$>","$length","$print","$format","$puts","$<=","$[]","$nil?","$is_a?","$rand","$coerce_to","$respond_to_missing?","$try_convert!","$expand_path","$join","$start_with?"]);return function($base){var self=$module($base,"Kernel");var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_10;Opal.defn(self,"$method_missing",TMP_1=function(symbol,args){var self=this,$iter=TMP_1.$$p,block=$iter||nil;args=$slice.call(arguments,1);TMP_1.$$p=null;return self.$raise($scope.get("NoMethodError"),"undefined method `"+symbol+"' for "+self.$inspect())});Opal.defn(self,"$=~",function(obj){var self=this;return false});Opal.defn(self,"$===",function(other){var self=this;return self["$=="](other)});Opal.defn(self,"$<=>",function(other){var self=this;if(self["$=="](other)){return 0}return nil});Opal.defn(self,"$method",function(name){var self=this;var meth=self["$"+name];if(!meth||meth.$$stub){self.$raise($scope.get("NameError"),"undefined method `"+name+"' for class `"+self.$class()+"'")}return $scope.get("Method").$new(self,meth,name)});Opal.defn(self,"$methods",function(all){var self=this;if(all==null){all=true}var methods=[];for(var key in self){if(key[0]=="$"&&typeof self[key]==="function"){if(all==false||all===nil){if(!Opal.hasOwnProperty.call(self,key)){continue}}if(self[key].$$stub===undefined){methods.push(key.substr(1))}}}return methods});Opal.defn(self,"$Array",TMP_2=function(object,args){var self=this,$iter=TMP_2.$$p,block=$iter||nil;args=$slice.call(arguments,1);TMP_2.$$p=null;if(object==null||object===nil){return[]}else if(object["$respond_to?"]("to_ary")){return object.$to_ary()}else if(object["$respond_to?"]("to_a")){return object.$to_a()}else{return[object]}});Opal.defn(self,"$at_exit",TMP_3=function(){var $a,self=this,$iter=TMP_3.$$p,block=$iter||nil;if($gvars.__at_exit__==null)$gvars.__at_exit__=nil;TMP_3.$$p=null;($a=$gvars.__at_exit__)!==false&&$a!==nil?$a:$gvars.__at_exit__=[];return $gvars.__at_exit__["$<<"](block)});Opal.defn(self,"$caller",function(){var self=this;return[]});Opal.defn(self,"$class",function(){var self=this;return self.$$class});Opal.defn(self,"$copy_instance_variables",function(other){var self=this;for(var name in other){if(name.charAt(0)!=="$"){self[name]=other[name]}}});Opal.defn(self,"$clone",function(){var self=this,copy=nil;copy=self.$class().$allocate();copy.$copy_instance_variables(self);copy.$initialize_clone(self);return copy});Opal.defn(self,"$initialize_clone",function(other){var self=this;return self.$initialize_copy(other)});Opal.defn(self,"$define_singleton_method",TMP_4=function(name){var self=this,$iter=TMP_4.$$p,body=$iter||nil;TMP_4.$$p=null;if(body!==false&&body!==nil){}else{self.$raise($scope.get("ArgumentError"),"tried to create Proc object without a block")}var jsid="$"+name;body.$$jsid=name;body.$$s=null;body.$$def=body;self.$singleton_class().$$proto[jsid]=body;return self});Opal.defn(self,"$dup",function(){var self=this,copy=nil;copy=self.$class().$allocate();copy.$copy_instance_variables(self);copy.$initialize_dup(self);return copy});Opal.defn(self,"$initialize_dup",function(other){var self=this;return self.$initialize_copy(other)});Opal.defn(self,"$enum_for",TMP_5=function(method,args){var $a,$b,self=this,$iter=TMP_5.$$p,block=$iter||nil;args=$slice.call(arguments,1);if(method==null){method="each"}TMP_5.$$p=null;return($a=($b=$scope.get("Enumerator")).$for,$a.$$p=block.$to_proc(),$a).apply($b,[self,method].concat(args))});Opal.defn(self,"$to_enum",def.$enum_for);Opal.defn(self,"$equal?",function(other){var self=this;return self===other});Opal.defn(self,"$exit",function(status){var $a,$b,self=this;if($gvars.__at_exit__==null)$gvars.__at_exit__=nil;if(status==null){status=true}if(($a=$gvars.__at_exit__)!==nil&&(!$a.$$is_boolean||$a==true)){($a=($b=$gvars.__at_exit__.$reverse()).$each,$a.$$p="call".$to_proc(),$a).call($b)}if(($a=status===true)!==nil&&(!$a.$$is_boolean||$a==true)){status=0}Opal.exit(status);return nil});Opal.defn(self,"$extend",function(mods){var self=this;mods=$slice.call(arguments,0);var singleton=self.$singleton_class();for(var i=mods.length-1;i>=0;i--){var mod=mods[i];mod.$append_features(singleton);mod.$extended(self)}return self});Opal.defn(self,"$format",function(format,args){var self=this;args=$slice.call(arguments,1);var idx=0;return format.replace(/%(\d+\$)?([-+ 0]*)(\d*|\*(\d+\$)?)(?:\.(\d*|\*(\d+\$)?))?([cspdiubBoxXfgeEG])|(%%)/g,function(str,idx_str,flags,width_str,w_idx_str,prec_str,p_idx_str,spec,escaped){if(escaped){return"%"}var width,prec,is_integer_spec="diubBoxX".indexOf(spec)!=-1,is_float_spec="eEfgG".indexOf(spec)!=-1,prefix="",obj;if(width_str===undefined){width=undefined}else if(width_str.charAt(0)=="*"){var w_idx=idx++;if(w_idx_str){w_idx=parseInt(w_idx_str,10)-1}width=args[w_idx].$to_i()}else{width=parseInt(width_str,10)}if(!prec_str){prec=is_float_spec?6:undefined}else if(prec_str.charAt(0)=="*"){var p_idx=idx++;if(p_idx_str){p_idx=parseInt(p_idx_str,10)-1}prec=args[p_idx].$to_i()}else{prec=parseInt(prec_str,10)}if(idx_str){idx=parseInt(idx_str,10)-1}switch(spec){case"c":obj=args[idx];if(obj.$$is_string){str=obj.charAt(0)}else{str=String.fromCharCode(obj.$to_i())}break;case"s":str=args[idx].$to_s();if(prec!==undefined){str=str.substr(0,prec)}break;case"p":str=args[idx].$inspect();if(prec!==undefined){str=str.substr(0,prec)}break;case"d":case"i":case"u":str=args[idx].$to_i().toString();break;case"b":case"B":str=args[idx].$to_i().toString(2);break;case"o":str=args[idx].$to_i().toString(8);break;case"x":case"X":str=args[idx].$to_i().toString(16);break;case"e":case"E":str=args[idx].$to_f().toExponential(prec);break;case"f":str=args[idx].$to_f().toFixed(prec);break;case"g":case"G":str=args[idx].$to_f().toPrecision(prec);break}idx++;if(is_integer_spec||is_float_spec){if(str.charAt(0)=="-"){prefix="-";str=str.substr(1)}else{if(flags.indexOf("+")!=-1){prefix="+"}else if(flags.indexOf(" ")!=-1){prefix=" "}}}if(is_integer_spec&&prec!==undefined){if(str.length<prec){str="0"["$*"](prec-str.length)+str}}var total_len=prefix.length+str.length;if(width!==undefined&&total_len<width){if(flags.indexOf("-")!=-1){str=str+" "["$*"](width-total_len)}else{var pad_char=" ";if(flags.indexOf("0")!=-1){str="0"["$*"](width-total_len)+str}else{prefix=" "["$*"](width-total_len)+prefix}}}var result=prefix+str;if("XEG".indexOf(spec)!=-1){result=result.toUpperCase()}return result})});Opal.defn(self,"$freeze",function(){var self=this;self.___frozen___=true;return self});Opal.defn(self,"$frozen?",function(){var $a,self=this;if(self.___frozen___==null)self.___frozen___=nil;return($a=self.___frozen___)!==false&&$a!==nil?$a:false});Opal.defn(self,"$hash",function(){var self=this;return[self.$$class.$$name,self.$$class.$__id__(),self.$__id__()].join(":")});Opal.defn(self,"$initialize_copy",function(other){var self=this;return nil});Opal.defn(self,"$inspect",function(){var self=this;return self.$to_s()});Opal.defn(self,"$instance_of?",function(klass){var self=this;return self.$$class===klass});Opal.defn(self,"$instance_variable_defined?",function(name){var self=this;return Opal.hasOwnProperty.call(self,name.substr(1))});Opal.defn(self,"$instance_variable_get",function(name){var self=this;var ivar=self[name.substr(1)];return ivar==null?nil:ivar});Opal.defn(self,"$instance_variable_set",function(name,value){var self=this;return self[name.substr(1)]=value});Opal.defn(self,"$instance_variables",function(){var self=this;var result=[];for(var name in self){if(name.charAt(0)!=="$"){if(name!=="$$class"&&name!=="$$id"){result.push("@"+name)}}}return result});Opal.defn(self,"$Integer",function(value,base){var $a,$b,self=this,$case=nil;if(base==null){base=nil}if(($a=$scope.get("String")["$==="](value))!==nil&&(!$a.$$is_boolean||$a==true)){if(($a=value["$empty?"]())!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"invalid value for Integer: (empty string)")}return parseInt(value,($a=base)!==false&&$a!==nil?$a:undefined)}if(base!==false&&base!==nil){self.$raise(self.$ArgumentError("base is only valid for String values"))}return function(){$case=value;if($scope.get("Integer")["$==="]($case)){return value}else if($scope.get("Float")["$==="]($case)){if(($a=($b=value["$nan?"]())!==false&&$b!==nil?$b:value["$infinite?"]())!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("FloatDomainError"),"unable to coerce "+value+" to Integer")}return value.$to_int()}else if($scope.get("NilClass")["$==="]($case)){return self.$raise($scope.get("TypeError"),"can't convert nil into Integer")}else{if(($a=value["$respond_to?"]("to_int"))!==nil&&(!$a.$$is_boolean||$a==true)){return value.$to_int()}else if(($a=value["$respond_to?"]("to_i"))!==nil&&(!$a.$$is_boolean||$a==true)){return value.$to_i()}else{return self.$raise($scope.get("TypeError"),"can't convert "+value.$class()+" into Integer")}}}()});Opal.defn(self,"$Float",function(value){var $a,self=this;if(($a=$scope.get("String")["$==="](value))!==nil&&(!$a.$$is_boolean||$a==true)){return parseFloat(value)}else if(($a=value["$respond_to?"]("to_f"))!==nil&&(!$a.$$is_boolean||$a==true)){return value.$to_f()}else{return self.$raise($scope.get("TypeError"),"can't convert "+value.$class()+" into Float")}});Opal.defn(self,"$is_a?",function(klass){var self=this;return Opal.is_a(self,klass)});Opal.defn(self,"$kind_of?",def["$is_a?"]);Opal.defn(self,"$lambda",TMP_6=function(){var self=this,$iter=TMP_6.$$p,block=$iter||nil;TMP_6.$$p=null;block.$$is_lambda=true;return block});Opal.defn(self,"$load",function(file){var self=this;file=$scope.get("Opal")["$coerce_to!"](file,$scope.get("String"),"to_str");return Opal.load(Opal.normalize_loadable_path(file))});Opal.defn(self,"$loop",TMP_7=function(){var self=this,$iter=TMP_7.$$p,block=$iter||nil;TMP_7.$$p=null;while(true){if(block()===$breaker){return $breaker.$v}}return self});Opal.defn(self,"$nil?",function(){var self=this;return false});Opal.defn(self,"$object_id",def.$__id__);Opal.defn(self,"$printf",function(args){var $a,self=this;args=$slice.call(arguments,0);if(args.$length()["$>"](0)){self.$print(($a=self).$format.apply($a,[].concat(args)))}return nil});Opal.defn(self,"$private_methods",function(){var self=this;return[]});Opal.defn(self,"$private_instance_methods",def.$private_methods);Opal.defn(self,"$proc",TMP_8=function(){var self=this,$iter=TMP_8.$$p,block=$iter||nil;TMP_8.$$p=null;if(block!==false&&block!==nil){}else{self.$raise($scope.get("ArgumentError"),"tried to create Proc object without a block")}block.$$is_lambda=false;return block});Opal.defn(self,"$puts",function(strs){var $a,self=this;if($gvars.stdout==null)$gvars.stdout=nil;strs=$slice.call(arguments,0);return($a=$gvars.stdout).$puts.apply($a,[].concat(strs))});Opal.defn(self,"$p",function(args){var $a,$b,TMP_9,self=this;args=$slice.call(arguments,0);($a=($b=args).$each,$a.$$p=(TMP_9=function(obj){var self=TMP_9.$$s||this;if($gvars.stdout==null)$gvars.stdout=nil;if(obj==null)obj=nil;return $gvars.stdout.$puts(obj.$inspect())},TMP_9.$$s=self,TMP_9),$a).call($b);if(args.$length()["$<="](1)){return args["$[]"](0)}else{return args}});Opal.defn(self,"$print",function(strs){var $a,self=this;if($gvars.stdout==null)$gvars.stdout=nil;strs=$slice.call(arguments,0);return($a=$gvars.stdout).$print.apply($a,[].concat(strs))});Opal.defn(self,"$warn",function(strs){var $a,$b,self=this;if($gvars.VERBOSE==null)$gvars.VERBOSE=nil;if($gvars.stderr==null)$gvars.stderr=nil;strs=$slice.call(arguments,0);if(($a=($b=$gvars.VERBOSE["$nil?"]())!==false&&$b!==nil?$b:strs["$empty?"]())!==nil&&(!$a.$$is_boolean||$a==true)){return nil}else{return($a=$gvars.stderr).$puts.apply($a,[].concat(strs))}});Opal.defn(self,"$raise",function(exception,string){var self=this;if($gvars["!"]==null)$gvars["!"]=nil;if(exception==null&&$gvars["!"]){exception=$gvars["!"]}else if(exception.$$is_string){exception=$scope.get("RuntimeError").$new(exception)}else if(!exception["$is_a?"]($scope.get("Exception"))){exception=exception.$new(string)}$gvars["!"]=exception;throw exception});Opal.defn(self,"$fail",def.$raise);Opal.defn(self,"$rand",function(max){var self=this;if(max===undefined){return Math.random()}else if(max.$$is_range){var arr=max.$to_a();return arr[self.$rand(arr.length)]}else{return Math.floor(Math.random()*Math.abs($scope.get("Opal").$coerce_to(max,$scope.get("Integer"),"to_int")))}});Opal.defn(self,"$respond_to?",function(name,include_all){var $a,self=this;if(include_all==null){include_all=false}if(($a=self["$respond_to_missing?"](name))!==nil&&(!$a.$$is_boolean||$a==true)){return true}var body=self["$"+name];if(typeof body==="function"&&!body.$$stub){return true}return false});Opal.defn(self,"$respond_to_missing?",function(method_name){var self=this;return false});Opal.defn(self,"$require",function(file){var self=this;file=$scope.get("Opal")["$coerce_to!"](file,$scope.get("String"),"to_str");return Opal.require(Opal.normalize_loadable_path(file))});Opal.defn(self,"$require_relative",function(file){var self=this;$scope.get("Opal")["$try_convert!"](file,$scope.get("String"),"to_str");file=$scope.get("File").$expand_path($scope.get("File").$join(Opal.current_file,"..",file));return Opal.require(Opal.normalize_loadable_path(file))});Opal.defn(self,"$require_tree",function(path){var self=this;path=$scope.get("File").$expand_path(path);for(var name in Opal.modules){if(name["$start_with?"](path)){Opal.require(name)}}return nil});Opal.defn(self,"$send",def.$__send__);Opal.defn(self,"$public_send",def.$__send__);Opal.defn(self,"$singleton_class",function(){var self=this;return Opal.get_singleton_class(self)});Opal.defn(self,"$sprintf",def.$format);Opal.defn(self,"$srand",def.$rand);Opal.defn(self,"$String",function(str){var self=this;return String(str)});Opal.defn(self,"$taint",function(){var self=this;return self});Opal.defn(self,"$tainted?",function(){var self=this;return false});Opal.defn(self,"$tap",TMP_10=function(){var self=this,$iter=TMP_10.$$p,block=$iter||nil;TMP_10.$$p=null;if(Opal.yield1(block,self)===$breaker)return $breaker.$v;return self});Opal.defn(self,"$to_proc",function(){var self=this;return self});Opal.defn(self,"$to_s",function(){var self=this;return"#<"+self.$class()+":0x"+self.$__id__().$to_s(16)+">"});Opal.defn(self,"$untaint",def.$taint)}(self)};Opal.modules["corelib/nil_class"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$raise"]);(function($base,$super){function $NilClass(){}var self=$NilClass=$klass($base,$super,"NilClass",$NilClass);var def=self.$$proto,$scope=self.$$scope;def["$!"]=function(){var self=this;return true};def["$&"]=function(other){var self=this;return false};def["$|"]=function(other){var self=this;return other!==false&&other!==nil};def["$^"]=function(other){var self=this;return other!==false&&other!==nil};def["$=="]=function(other){var self=this;return other===nil};def.$dup=function(){var self=this;return self.$raise($scope.get("TypeError"))};def.$inspect=function(){var self=this;return"nil"};def["$nil?"]=function(){var self=this;return true};def.$singleton_class=function(){var self=this;return $scope.get("NilClass")};def.$to_a=function(){var self=this;return[]};def.$to_h=function(){var self=this;return Opal.hash()};def.$to_i=function(){var self=this;return 0};Opal.defn(self,"$to_f",def.$to_i);return(def.$to_s=function(){var self=this;return""},nil)&&"to_s"})(self,null);return Opal.cdecl($scope,"NIL",nil)};Opal.modules["corelib/boolean"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$undef_method"]);(function($base,$super){function $Boolean(){}var self=$Boolean=$klass($base,$super,"Boolean",$Boolean);var def=self.$$proto,$scope=self.$$scope;def.$$is_boolean=true;(function(self){var $scope=self.$$scope,def=self.$$proto;return self.$undef_method("new")})(self.$singleton_class());def["$!"]=function(){var self=this;return self!=true};def["$&"]=function(other){var self=this;return self==true?other!==false&&other!==nil:false};def["$|"]=function(other){var self=this;return self==true?true:other!==false&&other!==nil};def["$^"]=function(other){var self=this;return self==true?other===false||other===nil:other!==false&&other!==nil};def["$=="]=function(other){var self=this;return self==true===other.valueOf()};Opal.defn(self,"$equal?",def["$=="]);Opal.defn(self,"$singleton_class",def.$class);return(def.$to_s=function(){var self=this;return self==true?"true":"false"},nil)&&"to_s"})(self,null);Opal.cdecl($scope,"TrueClass",$scope.get("Boolean"));Opal.cdecl($scope,"FalseClass",$scope.get("Boolean"));Opal.cdecl($scope,"TRUE",true);return Opal.cdecl($scope,"FALSE",false)};Opal.modules["corelib/error"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$module=Opal.module;Opal.add_stubs(["$attr_reader","$class"]);(function($base,$super){function $Exception(){}var self=$Exception=$klass($base,$super,"Exception",$Exception);var def=self.$$proto,$scope=self.$$scope;def.message=nil;self.$attr_reader("message");Opal.defs(self,"$new",function(message){var self=this;if(message==null){message="Exception"}var err=new self.$$alloc(message);if(Error.captureStackTrace){Error.captureStackTrace(err)}err.name=self.$$name;err.$initialize(message);return err});def.$initialize=function(message){var self=this;return self.message=message};def.$backtrace=function(){var self=this;var backtrace=self.stack;if(typeof backtrace==="string"){return backtrace.split("\n").slice(0,15)}else if(backtrace){return backtrace.slice(0,15)}return[]};def.$inspect=function(){var self=this;return"#<"+self.$class()+": '"+self.message+"'>"};return Opal.defn(self,"$to_s",def.$message)})(self,null);(function($base,$super){function $ScriptError(){}var self=$ScriptError=$klass($base,$super,"ScriptError",$ScriptError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("Exception"));(function($base,$super){function $SyntaxError(){}var self=$SyntaxError=$klass($base,$super,"SyntaxError",$SyntaxError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("ScriptError"));(function($base,$super){function $LoadError(){}var self=$LoadError=$klass($base,$super,"LoadError",$LoadError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("ScriptError"));(function($base,$super){function $NotImplementedError(){}var self=$NotImplementedError=$klass($base,$super,"NotImplementedError",$NotImplementedError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("ScriptError"));(function($base,$super){function $SystemExit(){}var self=$SystemExit=$klass($base,$super,"SystemExit",$SystemExit);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("Exception"));(function($base,$super){function $NoMemoryError(){}var self=$NoMemoryError=$klass($base,$super,"NoMemoryError",$NoMemoryError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("Exception"));(function($base,$super){function $SignalException(){}var self=$SignalException=$klass($base,$super,"SignalException",$SignalException);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("Exception"));(function($base,$super){function $Interrupt(){}var self=$Interrupt=$klass($base,$super,"Interrupt",$Interrupt);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("Exception"));(function($base,$super){function $StandardError(){}var self=$StandardError=$klass($base,$super,"StandardError",$StandardError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("Exception"));(function($base,$super){function $NameError(){}var self=$NameError=$klass($base,$super,"NameError",$NameError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("StandardError"));(function($base,$super){function $NoMethodError(){}var self=$NoMethodError=$klass($base,$super,"NoMethodError",$NoMethodError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("NameError"));(function($base,$super){function $RuntimeError(){}var self=$RuntimeError=$klass($base,$super,"RuntimeError",$RuntimeError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("StandardError"));(function($base,$super){function $LocalJumpError(){}var self=$LocalJumpError=$klass($base,$super,"LocalJumpError",$LocalJumpError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("StandardError"));(function($base,$super){function $TypeError(){}var self=$TypeError=$klass($base,$super,"TypeError",$TypeError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("StandardError"));(function($base,$super){function $ArgumentError(){}var self=$ArgumentError=$klass($base,$super,"ArgumentError",$ArgumentError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("StandardError"));(function($base,$super){function $IndexError(){}var self=$IndexError=$klass($base,$super,"IndexError",$IndexError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("StandardError"));(function($base,$super){function $StopIteration(){}var self=$StopIteration=$klass($base,$super,"StopIteration",$StopIteration);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("IndexError"));(function($base,$super){function $KeyError(){}var self=$KeyError=$klass($base,$super,"KeyError",$KeyError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("IndexError"));(function($base,$super){function $RangeError(){}var self=$RangeError=$klass($base,$super,"RangeError",$RangeError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("StandardError"));(function($base,$super){function $FloatDomainError(){}var self=$FloatDomainError=$klass($base,$super,"FloatDomainError",$FloatDomainError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("RangeError"));(function($base,$super){function $IOError(){}var self=$IOError=$klass($base,$super,"IOError",$IOError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("StandardError"));(function($base,$super){function $SystemCallError(){}var self=$SystemCallError=$klass($base,$super,"SystemCallError",$SystemCallError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("StandardError"));return function($base){var self=$module($base,"Errno");var def=self.$$proto,$scope=self.$$scope;(function($base,$super){function $EINVAL(){}var self=$EINVAL=$klass($base,$super,"EINVAL",$EINVAL);var def=self.$$proto,$scope=self.$$scope,TMP_1;return(Opal.defs(self,"$new",TMP_1=function(){var self=this,$iter=TMP_1.$$p,$yield=$iter||nil;TMP_1.$$p=null;return Opal.find_super_dispatcher(self,"new",TMP_1,null,$EINVAL).apply(self,["Invalid argument"])}),nil)&&"new"})(self,$scope.get("SystemCallError"))}(self)};Opal.modules["corelib/regexp"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$gvars=Opal.gvars;Opal.add_stubs(["$nil?","$[]","$respond_to?","$to_str","$to_s","$coerce_to","$new","$raise","$class","$call"]);return function($base,$super){function $Regexp(){}var self=$Regexp=$klass($base,$super,"Regexp",$Regexp);var def=self.$$proto,$scope=self.$$scope,TMP_1;def.$$is_regexp=true;(function(self){var $scope=self.$$scope,def=self.$$proto;self.$$proto.$escape=function(string){var self=this;return string.replace(/([-[\]\/{}()*+?.^$\\| ])/g,"\\$1").replace(/[\n]/g,"\\n").replace(/[\r]/g,"\\r").replace(/[\f]/g,"\\f").replace(/[\t]/g,"\\t")};self.$$proto.$last_match=function(n){var $a,self=this;if($gvars["~"]==null)$gvars["~"]=nil;if(n==null){n=nil}if(($a=n["$nil?"]())!==nil&&(!$a.$$is_boolean||$a==true)){return $gvars["~"]}else{return $gvars["~"]["$[]"](n)}};self.$$proto.$quote=self.$$proto.$escape;self.$$proto.$union=function(parts){var self=this;parts=$slice.call(arguments,0);return new RegExp(parts.join(""))};return(self.$$proto.$new=function(regexp,options){var self=this;return new RegExp(regexp,options)},nil)&&"new"})(self.$singleton_class());def["$=="]=function(other){var self=this;return other.constructor==RegExp&&self.toString()===other.toString()};def["$==="]=function(str){var self=this;if(!str.$$is_string&&str["$respond_to?"]("to_str")){str=str.$to_str()}if(!str.$$is_string){return false}return self.test(str)};def["$=~"]=function(string){var $a,self=this;if(($a=string===nil)!==nil&&(!$a.$$is_boolean||$a==true)){$gvars["~"]=nil;return nil}string=$scope.get("Opal").$coerce_to(string,$scope.get("String"),"to_str").$to_s();var re=self;if(re.global){re.lastIndex=0}else{re=new RegExp(re.source,"g"+(re.multiline?"m":"")+(re.ignoreCase?"i":""))}var result=re.exec(string);if(result){$gvars["~"]=$scope.get("MatchData").$new(re,result);return result.index}else{$gvars["~"]=nil;return nil}};Opal.defn(self,"$eql?",def["$=="]);def.$inspect=function(){var self=this;return self.toString()};def.$match=TMP_1=function(string,pos){var $a,self=this,$iter=TMP_1.$$p,block=$iter||nil;TMP_1.$$p=null;if(($a=string===nil)!==nil&&(!$a.$$is_boolean||$a==true)){$gvars["~"]=nil;return nil}if(($a=string.$$is_string==null)!==nil&&(!$a.$$is_boolean||$a==true)){if(($a=string["$respond_to?"]("to_str"))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),"no implicit conversion of "+string.$class()+" into String")}string=string.$to_str()}var re=self;if(re.global){re.lastIndex=0}else{re=new RegExp(re.source,"g"+(re.multiline?"m":"")+(re.ignoreCase?"i":""))}var result=re.exec(string);if(result){result=$gvars["~"]=$scope.get("MatchData").$new(re,result);if(block===nil){return result}else{return block.$call(result)}}else{return $gvars["~"]=nil}};def.$source=function(){var self=this;return self.source};return Opal.defn(self,"$to_s",def.$source)}(self,null)};Opal.modules["corelib/comparable"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$===","$>","$<","$equal?","$<=>","$normalize","$raise","$class"]);return function($base){var self=$module($base,"Comparable");var def=self.$$proto,$scope=self.$$scope;Opal.defs(self,"$normalize",function(what){var $a,self=this;if(($a=$scope.get("Integer")["$==="](what))!==nil&&(!$a.$$is_boolean||$a==true)){return what}if(what["$>"](0)){return 1}if(what["$<"](0)){return-1}return 0});Opal.defn(self,"$==",function(other){var $a,self=this,cmp=nil;try{if(($a=self["$equal?"](other))!==nil&&(!$a.$$is_boolean||$a==true)){return true}if(($a=cmp=self["$<=>"](other))!==nil&&(!$a.$$is_boolean||$a==true)){}else{return false}return $scope.get("Comparable").$normalize(cmp)==0}catch($err){if(Opal.rescue($err,[$scope.get("StandardError")])){return false}else{throw $err}}});Opal.defn(self,"$>",function(other){var $a,self=this,cmp=nil;if(($a=cmp=self["$<=>"](other))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"comparison of "+self.$class()+" with "+other.$class()+" failed")}return $scope.get("Comparable").$normalize(cmp)>0});Opal.defn(self,"$>=",function(other){var $a,self=this,cmp=nil;if(($a=cmp=self["$<=>"](other))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"comparison of "+self.$class()+" with "+other.$class()+" failed")}return $scope.get("Comparable").$normalize(cmp)>=0});Opal.defn(self,"$<",function(other){var $a,self=this,cmp=nil;if(($a=cmp=self["$<=>"](other))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"comparison of "+self.$class()+" with "+other.$class()+" failed")}return $scope.get("Comparable").$normalize(cmp)<0});Opal.defn(self,"$<=",function(other){var $a,self=this,cmp=nil;if(($a=cmp=self["$<=>"](other))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"comparison of "+self.$class()+" with "+other.$class()+" failed")}return $scope.get("Comparable").$normalize(cmp)<=0});Opal.defn(self,"$between?",function(min,max){var self=this;if(self["$<"](min)){return false}if(self["$>"](max)){return false}return true})}(self)};Opal.modules["corelib/enumerable"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$module=Opal.module;Opal.add_stubs(["$raise","$enum_for","$flatten","$map","$==","$destructure","$nil?","$coerce_to!","$coerce_to","$===","$new","$<<","$[]","$[]=","$inspect","$__send__","$yield","$enumerator_size","$respond_to?","$size","$private","$compare","$<=>","$dup","$to_a","$lambda","$sort","$call","$first","$zip"]);return function($base){var self=$module($base,"Enumerable");var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_16,TMP_17,TMP_18,TMP_19,TMP_20,TMP_22,TMP_23,TMP_24,TMP_25,TMP_26,TMP_27,TMP_28,TMP_29,TMP_30,TMP_31,TMP_32,TMP_33,TMP_35,TMP_37,TMP_41,TMP_42;Opal.defn(self,"$all?",TMP_1=function(){var $a,self=this,$iter=TMP_1.$$p,block=$iter||nil;TMP_1.$$p=null;var result=true;if(block!==nil){self.$each.$$p=function(){ | |
var value=Opal.yieldX(block,arguments);if(value===$breaker){result=$breaker.$v;return $breaker}if(($a=value)===nil||$a.$$is_boolean&&$a==false){result=false;return $breaker}}}else{self.$each.$$p=function(obj){if(arguments.length==1&&(($a=obj)===nil||$a.$$is_boolean&&$a==false)){result=false;return $breaker}}}self.$each();return result});Opal.defn(self,"$any?",TMP_2=function(){var $a,self=this,$iter=TMP_2.$$p,block=$iter||nil;TMP_2.$$p=null;var result=false;if(block!==nil){self.$each.$$p=function(){var value=Opal.yieldX(block,arguments);if(value===$breaker){result=$breaker.$v;return $breaker}if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)){result=true;return $breaker}}}else{self.$each.$$p=function(obj){if(arguments.length!=1||($a=obj)!==nil&&(!$a.$$is_boolean||$a==true)){result=true;return $breaker}}}self.$each();return result});Opal.defn(self,"$chunk",TMP_3=function(state){var self=this,$iter=TMP_3.$$p,block=$iter||nil;TMP_3.$$p=null;return self.$raise($scope.get("NotImplementedError"))});Opal.defn(self,"$collect",TMP_4=function(){var self=this,$iter=TMP_4.$$p,block=$iter||nil;TMP_4.$$p=null;if(block!==nil){}else{return self.$enum_for("collect")}var result=[];self.$each.$$p=function(){var value=Opal.yieldX(block,arguments);if(value===$breaker){result=$breaker.$v;return $breaker}result.push(value)};self.$each();return result});Opal.defn(self,"$collect_concat",TMP_5=function(){var $a,$b,TMP_6,self=this,$iter=TMP_5.$$p,block=$iter||nil;TMP_5.$$p=null;if(block!==nil){}else{return self.$enum_for("collect_concat")}return($a=($b=self).$map,$a.$$p=(TMP_6=function(item){var self=TMP_6.$$s||this,$a;if(item==null)item=nil;return $a=Opal.yield1(block,item),$a===$breaker?$a:$a},TMP_6.$$s=self,TMP_6),$a).call($b).$flatten(1)});Opal.defn(self,"$count",TMP_7=function(object){var $a,self=this,$iter=TMP_7.$$p,block=$iter||nil;TMP_7.$$p=null;var result=0;if(object!=null){block=function(){return $scope.get("Opal").$destructure(arguments)["$=="](object)}}else if(block===nil){block=function(){return true}}self.$each.$$p=function(){var value=Opal.yieldX(block,arguments);if(value===$breaker){result=$breaker.$v;return $breaker}if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)){result++}};self.$each();return result});Opal.defn(self,"$cycle",TMP_8=function(n){var $a,self=this,$iter=TMP_8.$$p,block=$iter||nil;if(n==null){n=nil}TMP_8.$$p=null;if(block!==false&&block!==nil){}else{return self.$enum_for("cycle",n)}if(($a=n["$nil?"]())!==nil&&(!$a.$$is_boolean||$a==true)){}else{n=$scope.get("Opal")["$coerce_to!"](n,$scope.get("Integer"),"to_int");if(($a=n<=0)!==nil&&(!$a.$$is_boolean||$a==true)){return nil}}var result,all=[];self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);if(value===$breaker){result=$breaker.$v;return $breaker}all.push(param)};self.$each();if(result!==undefined){return result}if(all.length===0){return nil}if(($a=n["$nil?"]())!==nil&&(!$a.$$is_boolean||$a==true)){while(true){for(var i=0,length=all.length;i<length;i++){var value=Opal.yield1(block,all[i]);if(value===$breaker){return $breaker.$v}}}}else{while(n>1){for(var i=0,length=all.length;i<length;i++){var value=Opal.yield1(block,all[i]);if(value===$breaker){return $breaker.$v}}n--}}});Opal.defn(self,"$detect",TMP_9=function(ifnone){var $a,self=this,$iter=TMP_9.$$p,block=$iter||nil;TMP_9.$$p=null;if(block!==nil){}else{return self.$enum_for("detect",ifnone)}var result=undefined;self.$each.$$p=function(){var params=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,params);if(value===$breaker){result=$breaker.$v;return $breaker}if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)){result=params;return $breaker}};self.$each();if(result===undefined&&ifnone!==undefined){if(typeof ifnone==="function"){result=ifnone()}else{result=ifnone}}return result===undefined?nil:result});Opal.defn(self,"$drop",function(number){var $a,self=this;number=$scope.get("Opal").$coerce_to(number,$scope.get("Integer"),"to_int");if(($a=number<0)!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"attempt to drop negative size")}var result=[],current=0;self.$each.$$p=function(){if(number<=current){result.push($scope.get("Opal").$destructure(arguments))}current++};self.$each();return result});Opal.defn(self,"$drop_while",TMP_10=function(){var $a,self=this,$iter=TMP_10.$$p,block=$iter||nil;TMP_10.$$p=null;if(block!==nil){}else{return self.$enum_for("drop_while")}var result=[],dropping=true;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments);if(dropping){var value=Opal.yield1(block,param);if(value===$breaker){result=$breaker.$v;return $breaker}if(($a=value)===nil||$a.$$is_boolean&&$a==false){dropping=false;result.push(param)}}else{result.push(param)}};self.$each();return result});Opal.defn(self,"$each_cons",TMP_11=function(n){var self=this,$iter=TMP_11.$$p,block=$iter||nil;TMP_11.$$p=null;return self.$raise($scope.get("NotImplementedError"))});Opal.defn(self,"$each_entry",TMP_12=function(){var self=this,$iter=TMP_12.$$p,block=$iter||nil;TMP_12.$$p=null;return self.$raise($scope.get("NotImplementedError"))});Opal.defn(self,"$each_slice",TMP_13=function(n){var $a,self=this,$iter=TMP_13.$$p,block=$iter||nil;TMP_13.$$p=null;n=$scope.get("Opal").$coerce_to(n,$scope.get("Integer"),"to_int");if(($a=n<=0)!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"invalid slice size")}if(block!==nil){}else{return self.$enum_for("each_slice",n)}var result,slice=[];self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments);slice.push(param);if(slice.length===n){if(Opal.yield1(block,slice)===$breaker){result=$breaker.$v;return $breaker}slice=[]}};self.$each();if(result!==undefined){return result}if(slice.length>0){if(Opal.yield1(block,slice)===$breaker){return $breaker.$v}}return nil});Opal.defn(self,"$each_with_index",TMP_14=function(args){var $a,self=this,$iter=TMP_14.$$p,block=$iter||nil;args=$slice.call(arguments,0);TMP_14.$$p=null;if(block!==nil){}else{return($a=self).$enum_for.apply($a,["each_with_index"].concat(args))}var result,index=0;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=block(param,index);if(value===$breaker){result=$breaker.$v;return $breaker}index++};self.$each.apply(self,args);if(result!==undefined){return result}return self});Opal.defn(self,"$each_with_object",TMP_15=function(object){var self=this,$iter=TMP_15.$$p,block=$iter||nil;TMP_15.$$p=null;if(block!==nil){}else{return self.$enum_for("each_with_object",object)}var result;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=block(param,object);if(value===$breaker){result=$breaker.$v;return $breaker}};self.$each();if(result!==undefined){return result}return object});Opal.defn(self,"$entries",function(args){var self=this;args=$slice.call(arguments,0);var result=[];self.$each.$$p=function(){result.push($scope.get("Opal").$destructure(arguments))};self.$each.apply(self,args);return result});Opal.defn(self,"$find",def.$detect);Opal.defn(self,"$find_all",TMP_16=function(){var $a,self=this,$iter=TMP_16.$$p,block=$iter||nil;TMP_16.$$p=null;if(block!==nil){}else{return self.$enum_for("find_all")}var result=[];self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);if(value===$breaker){result=$breaker.$v;return $breaker}if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)){result.push(param)}};self.$each();return result});Opal.defn(self,"$find_index",TMP_17=function(object){var $a,self=this,$iter=TMP_17.$$p,block=$iter||nil;TMP_17.$$p=null;if(($a=object===undefined&&block===nil)!==nil&&(!$a.$$is_boolean||$a==true)){return self.$enum_for("find_index")}var result=nil,index=0;if(object!=null){self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments);if(param["$=="](object)){result=index;return $breaker}index+=1}}else if(block!==nil){self.$each.$$p=function(){var value=Opal.yieldX(block,arguments);if(value===$breaker){result=$breaker.$v;return $breaker}if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)){result=index;return $breaker}index+=1}}self.$each();return result});Opal.defn(self,"$first",function(number){var $a,self=this,result=nil;if(($a=number===undefined)!==nil&&(!$a.$$is_boolean||$a==true)){result=nil;self.$each.$$p=function(){result=$scope.get("Opal").$destructure(arguments);return $breaker};self.$each()}else{result=[];number=$scope.get("Opal").$coerce_to(number,$scope.get("Integer"),"to_int");if(($a=number<0)!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"attempt to take negative size")}if(($a=number==0)!==nil&&(!$a.$$is_boolean||$a==true)){return[]}var current=0,number=$scope.get("Opal").$coerce_to(number,$scope.get("Integer"),"to_int");self.$each.$$p=function(){result.push($scope.get("Opal").$destructure(arguments));if(number<=++current){return $breaker}};self.$each()}return result});Opal.defn(self,"$flat_map",def.$collect_concat);Opal.defn(self,"$grep",TMP_18=function(pattern){var $a,self=this,$iter=TMP_18.$$p,block=$iter||nil;TMP_18.$$p=null;var result=[];if(block!==nil){self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=pattern["$==="](param);if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)){value=Opal.yield1(block,param);if(value===$breaker){result=$breaker.$v;return $breaker}result.push(value)}}}else{self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=pattern["$==="](param);if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)){result.push(param)}}}self.$each();return result});Opal.defn(self,"$group_by",TMP_19=function(){var $a,$b,$c,self=this,$iter=TMP_19.$$p,block=$iter||nil,hash=nil;TMP_19.$$p=null;if(block!==nil){}else{return self.$enum_for("group_by")}hash=$scope.get("Hash").$new();var result;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);if(value===$breaker){result=$breaker.$v;return $breaker}($a=value,$b=hash,($c=$b["$[]"]($a))!==false&&$c!==nil?$c:$b["$[]="]($a,[]))["$<<"](param)};self.$each();if(result!==undefined){return result}return hash});Opal.defn(self,"$include?",function(obj){var self=this;var result=false;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments);if(param["$=="](obj)){result=true;return $breaker}};self.$each();return result});Opal.defn(self,"$inject",TMP_20=function(object,sym){var self=this,$iter=TMP_20.$$p,block=$iter||nil;TMP_20.$$p=null;var result=object;if(block!==nil&&sym===undefined){self.$each.$$p=function(){var value=$scope.get("Opal").$destructure(arguments);if(result===undefined){result=value;return}value=Opal.yieldX(block,[result,value]);if(value===$breaker){result=$breaker.$v;return $breaker}result=value}}else{if(sym===undefined){if(!$scope.get("Symbol")["$==="](object)){self.$raise($scope.get("TypeError"),""+object.$inspect()+" is not a Symbol")}sym=object;result=undefined}self.$each.$$p=function(){var value=$scope.get("Opal").$destructure(arguments);if(result===undefined){result=value;return}result=result.$__send__(sym,value)}}self.$each();return result==undefined?nil:result});Opal.defn(self,"$lazy",function(){var $a,$b,TMP_21,self=this;return($a=($b=$scope.get("Enumerator").$$scope.get("Lazy")).$new,$a.$$p=(TMP_21=function(enum$,args){var self=TMP_21.$$s||this,$a;if(enum$==null)enum$=nil;args=$slice.call(arguments,1);return($a=enum$).$yield.apply($a,[].concat(args))},TMP_21.$$s=self,TMP_21),$a).call($b,self,self.$enumerator_size())});Opal.defn(self,"$enumerator_size",function(){var $a,self=this;if(($a=self["$respond_to?"]("size"))!==nil&&(!$a.$$is_boolean||$a==true)){return self.$size()}else{return nil}});self.$private("enumerator_size");Opal.defn(self,"$map",def.$collect);Opal.defn(self,"$max",TMP_22=function(){var self=this,$iter=TMP_22.$$p,block=$iter||nil;TMP_22.$$p=null;var result;if(block!==nil){self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments);if(result===undefined){result=param;return}var value=block(param,result);if(value===$breaker){result=$breaker.$v;return $breaker}if(value===nil){self.$raise($scope.get("ArgumentError"),"comparison failed")}if(value>0){result=param}}}else{self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments);if(result===undefined){result=param;return}if($scope.get("Opal").$compare(param,result)>0){result=param}}}self.$each();return result===undefined?nil:result});Opal.defn(self,"$max_by",TMP_23=function(){var self=this,$iter=TMP_23.$$p,block=$iter||nil;TMP_23.$$p=null;if(block!==false&&block!==nil){}else{return self.$enum_for("max_by")}var result,by;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);if(result===undefined){result=param;by=value;return}if(value===$breaker){result=$breaker.$v;return $breaker}if(value["$<=>"](by)>0){result=param;by=value}};self.$each();return result===undefined?nil:result});Opal.defn(self,"$member?",def["$include?"]);Opal.defn(self,"$min",TMP_24=function(){var self=this,$iter=TMP_24.$$p,block=$iter||nil;TMP_24.$$p=null;var result;if(block!==nil){self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments);if(result===undefined){result=param;return}var value=block(param,result);if(value===$breaker){result=$breaker.$v;return $breaker}if(value===nil){self.$raise($scope.get("ArgumentError"),"comparison failed")}if(value<0){result=param}}}else{self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments);if(result===undefined){result=param;return}if($scope.get("Opal").$compare(param,result)<0){result=param}}}self.$each();return result===undefined?nil:result});Opal.defn(self,"$min_by",TMP_25=function(){var self=this,$iter=TMP_25.$$p,block=$iter||nil;TMP_25.$$p=null;if(block!==false&&block!==nil){}else{return self.$enum_for("min_by")}var result,by;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);if(result===undefined){result=param;by=value;return}if(value===$breaker){result=$breaker.$v;return $breaker}if(value["$<=>"](by)<0){result=param;by=value}};self.$each();return result===undefined?nil:result});Opal.defn(self,"$minmax",TMP_26=function(){var self=this,$iter=TMP_26.$$p,block=$iter||nil;TMP_26.$$p=null;return self.$raise($scope.get("NotImplementedError"))});Opal.defn(self,"$minmax_by",TMP_27=function(){var self=this,$iter=TMP_27.$$p,block=$iter||nil;TMP_27.$$p=null;return self.$raise($scope.get("NotImplementedError"))});Opal.defn(self,"$none?",TMP_28=function(){var $a,self=this,$iter=TMP_28.$$p,block=$iter||nil;TMP_28.$$p=null;var result=true;if(block!==nil){self.$each.$$p=function(){var value=Opal.yieldX(block,arguments);if(value===$breaker){result=$breaker.$v;return $breaker}if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)){result=false;return $breaker}}}else{self.$each.$$p=function(){var value=$scope.get("Opal").$destructure(arguments);if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)){result=false;return $breaker}}}self.$each();return result});Opal.defn(self,"$one?",TMP_29=function(){var $a,self=this,$iter=TMP_29.$$p,block=$iter||nil;TMP_29.$$p=null;var result=false;if(block!==nil){self.$each.$$p=function(){var value=Opal.yieldX(block,arguments);if(value===$breaker){result=$breaker.$v;return $breaker}if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)){if(result===true){result=false;return $breaker}result=true}}}else{self.$each.$$p=function(){var value=$scope.get("Opal").$destructure(arguments);if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)){if(result===true){result=false;return $breaker}result=true}}}self.$each();return result});Opal.defn(self,"$partition",TMP_30=function(){var $a,self=this,$iter=TMP_30.$$p,block=$iter||nil;TMP_30.$$p=null;if(block!==nil){}else{return self.$enum_for("partition")}var truthy=[],falsy=[];self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);if(value===$breaker){result=$breaker.$v;return $breaker}if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)){truthy.push(param)}else{falsy.push(param)}};self.$each();return[truthy,falsy]});Opal.defn(self,"$reduce",def.$inject);Opal.defn(self,"$reject",TMP_31=function(){var $a,self=this,$iter=TMP_31.$$p,block=$iter||nil;TMP_31.$$p=null;if(block!==nil){}else{return self.$enum_for("reject")}var result=[];self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);if(value===$breaker){result=$breaker.$v;return $breaker}if(($a=value)===nil||$a.$$is_boolean&&$a==false){result.push(param)}};self.$each();return result});Opal.defn(self,"$reverse_each",TMP_32=function(){var self=this,$iter=TMP_32.$$p,block=$iter||nil;TMP_32.$$p=null;if(block!==nil){}else{return self.$enum_for("reverse_each")}var result=[];self.$each.$$p=function(){result.push(arguments)};self.$each();for(var i=result.length-1;i>=0;i--){Opal.yieldX(block,result[i])}return result});Opal.defn(self,"$select",def.$find_all);Opal.defn(self,"$slice_before",TMP_33=function(pattern){var $a,$b,TMP_34,self=this,$iter=TMP_33.$$p,block=$iter||nil;TMP_33.$$p=null;if(($a=pattern===undefined&&block===nil||arguments.length>1)!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 1)")}return($a=($b=$scope.get("Enumerator")).$new,$a.$$p=(TMP_34=function(e){var self=TMP_34.$$s||this,$a;if(e==null)e=nil;var slice=[];if(block!==nil){if(pattern===undefined){self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)&&slice.length>0){e["$<<"](slice);slice=[]}slice.push(param)}}else{self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=block(param,pattern.$dup());if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)&&slice.length>0){e["$<<"](slice);slice=[]}slice.push(param)}}}else{self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=pattern["$==="](param);if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)&&slice.length>0){e["$<<"](slice);slice=[]}slice.push(param)}}self.$each();if(slice.length>0){e["$<<"](slice)}},TMP_34.$$s=self,TMP_34),$a).call($b)});Opal.defn(self,"$sort",TMP_35=function(){var $a,$b,TMP_36,self=this,$iter=TMP_35.$$p,block=$iter||nil,ary=nil;TMP_35.$$p=null;ary=self.$to_a();if(block!==nil){}else{block=($a=($b=self).$lambda,$a.$$p=(TMP_36=function(a,b){var self=TMP_36.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a["$<=>"](b)},TMP_36.$$s=self,TMP_36),$a).call($b)}return ary.sort(block)});Opal.defn(self,"$sort_by",TMP_37=function(){var $a,$b,TMP_38,$c,$d,TMP_39,$e,$f,TMP_40,self=this,$iter=TMP_37.$$p,block=$iter||nil;TMP_37.$$p=null;if(block!==nil){}else{return self.$enum_for("sort_by")}return($a=($b=($c=($d=($e=($f=self).$map,$e.$$p=(TMP_40=function(){var self=TMP_40.$$s||this;arg=$scope.get("Opal").$destructure(arguments);return[block.$call(arg),arg]},TMP_40.$$s=self,TMP_40),$e).call($f)).$sort,$c.$$p=(TMP_39=function(a,b){var self=TMP_39.$$s||this;if(a==null)a=nil;if(b==null)b=nil;return a["$[]"](0)["$<=>"](b["$[]"](0))},TMP_39.$$s=self,TMP_39),$c).call($d)).$map,$a.$$p=(TMP_38=function(arg){var self=TMP_38.$$s||this;if(arg==null)arg=nil;return arg[1]},TMP_38.$$s=self,TMP_38),$a).call($b)});Opal.defn(self,"$take",function(num){var self=this;return self.$first(num)});Opal.defn(self,"$take_while",TMP_41=function(){var $a,self=this,$iter=TMP_41.$$p,block=$iter||nil;TMP_41.$$p=null;if(block!==false&&block!==nil){}else{return self.$enum_for("take_while")}var result=[];self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=Opal.yield1(block,param);if(value===$breaker){result=$breaker.$v;return $breaker}if(($a=value)===nil||$a.$$is_boolean&&$a==false){return $breaker}result.push(param)};self.$each();return result});Opal.defn(self,"$to_a",def.$entries);Opal.defn(self,"$zip",TMP_42=function(others){var $a,self=this,$iter=TMP_42.$$p,block=$iter||nil;others=$slice.call(arguments,0);TMP_42.$$p=null;return($a=self.$to_a()).$zip.apply($a,[].concat(others))})}(self)};Opal.modules["corelib/enumerator"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$require","$include","$allocate","$new","$to_proc","$coerce_to","$nil?","$empty?","$+","$class","$__send__","$===","$call","$enum_for","$destructure","$inspect","$[]","$raise","$yield","$each","$enumerator_size","$respond_to?","$try_convert","$<","$for"]);self.$require("corelib/enumerable");return function($base,$super){function $Enumerator(){}var self=$Enumerator=$klass($base,$super,"Enumerator",$Enumerator);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4;def.size=def.args=def.object=def.method=nil;self.$include($scope.get("Enumerable"));Opal.defs(self,"$for",TMP_1=function(object,method,args){var self=this,$iter=TMP_1.$$p,block=$iter||nil;args=$slice.call(arguments,2);if(method==null){method="each"}TMP_1.$$p=null;var obj=self.$allocate();obj.object=object;obj.size=block;obj.method=method;obj.args=args;return obj});def.$initialize=TMP_2=function(){var $a,$b,self=this,$iter=TMP_2.$$p,block=$iter||nil;TMP_2.$$p=null;if(block!==false&&block!==nil){self.object=($a=($b=$scope.get("Generator")).$new,$a.$$p=block.$to_proc(),$a).call($b);self.method="each";self.args=[];self.size=arguments[0]||nil;if(($a=self.size)!==nil&&(!$a.$$is_boolean||$a==true)){return self.size=$scope.get("Opal").$coerce_to(self.size,$scope.get("Integer"),"to_int")}else{return nil}}else{self.object=arguments[0];self.method=arguments[1]||"each";self.args=$slice.call(arguments,2);return self.size=nil}};def.$each=TMP_3=function(args){var $a,$b,$c,self=this,$iter=TMP_3.$$p,block=$iter||nil;args=$slice.call(arguments,0);TMP_3.$$p=null;if(($a=($b=block["$nil?"](),$b!==false&&$b!==nil?args["$empty?"]():$b))!==nil&&(!$a.$$is_boolean||$a==true)){return self}args=self.args["$+"](args);if(($a=block["$nil?"]())!==nil&&(!$a.$$is_boolean||$a==true)){return($a=self.$class()).$new.apply($a,[self.object,self.method].concat(args))}return($b=($c=self.object).$__send__,$b.$$p=block.$to_proc(),$b).apply($c,[self.method].concat(args))};def.$size=function(){var $a,self=this;if(($a=$scope.get("Proc")["$==="](self.size))!==nil&&(!$a.$$is_boolean||$a==true)){return($a=self.size).$call.apply($a,[].concat(self.args))}else{return self.size}};def.$with_index=TMP_4=function(offset){var self=this,$iter=TMP_4.$$p,block=$iter||nil;if(offset==null){offset=0}TMP_4.$$p=null;if(offset!==false&&offset!==nil){offset=$scope.get("Opal").$coerce_to(offset,$scope.get("Integer"),"to_int")}else{offset=0}if(block!==false&&block!==nil){}else{return self.$enum_for("with_index",offset)}var result,index=0;self.$each.$$p=function(){var param=$scope.get("Opal").$destructure(arguments),value=block(param,index);if(value===$breaker){result=$breaker.$v;return $breaker}index++};self.$each();if(result!==undefined){return result}return nil};Opal.defn(self,"$with_object",def.$each_with_object);def.$inspect=function(){var $a,self=this,result=nil;result="#<"+self.$class()+": "+self.object.$inspect()+":"+self.method;if(($a=self.args["$empty?"]())!==nil&&(!$a.$$is_boolean||$a==true)){}else{result=result["$+"]("("+self.args.$inspect()["$[]"]($scope.get("Range").$new(1,-2))+")")}return result["$+"](">")};(function($base,$super){function $Generator(){}var self=$Generator=$klass($base,$super,"Generator",$Generator);var def=self.$$proto,$scope=self.$$scope,TMP_5,TMP_6;def.block=nil;self.$include($scope.get("Enumerable"));def.$initialize=TMP_5=function(){var self=this,$iter=TMP_5.$$p,block=$iter||nil;TMP_5.$$p=null;if(block!==false&&block!==nil){}else{self.$raise($scope.get("LocalJumpError"),"no block given")}return self.block=block};return(def.$each=TMP_6=function(args){var $a,$b,self=this,$iter=TMP_6.$$p,block=$iter||nil,yielder=nil;args=$slice.call(arguments,0);TMP_6.$$p=null;yielder=($a=($b=$scope.get("Yielder")).$new,$a.$$p=block.$to_proc(),$a).call($b);try{args.unshift(yielder);if(Opal.yieldX(self.block,args)===$breaker){return $breaker.$v}}catch(e){if(e===$breaker){return $breaker.$v}else{throw e}}return self},nil)&&"each"})(self,null);(function($base,$super){function $Yielder(){}var self=$Yielder=$klass($base,$super,"Yielder",$Yielder);var def=self.$$proto,$scope=self.$$scope,TMP_7;def.block=nil;def.$initialize=TMP_7=function(){var self=this,$iter=TMP_7.$$p,block=$iter||nil;TMP_7.$$p=null;return self.block=block};def.$yield=function(values){var self=this;values=$slice.call(arguments,0);var value=Opal.yieldX(self.block,values);if(value===$breaker){throw $breaker}return value};return(def["$<<"]=function(values){var $a,self=this;values=$slice.call(arguments,0);($a=self).$yield.apply($a,[].concat(values));return self},nil)&&"<<"})(self,null);return function($base,$super){function $Lazy(){}var self=$Lazy=$klass($base,$super,"Lazy",$Lazy);var def=self.$$proto,$scope=self.$$scope,TMP_8,TMP_11,TMP_13,TMP_18,TMP_20,TMP_21,TMP_23,TMP_26,TMP_29;def.enumerator=nil;(function($base,$super){function $StopLazyError(){}var self=$StopLazyError=$klass($base,$super,"StopLazyError",$StopLazyError);var def=self.$$proto,$scope=self.$$scope;return nil})(self,$scope.get("Exception"));def.$initialize=TMP_8=function(object,size){var TMP_9,self=this,$iter=TMP_8.$$p,block=$iter||nil;if(size==null){size=nil}TMP_8.$$p=null;if(block!==nil){}else{self.$raise($scope.get("ArgumentError"),"tried to call lazy new without a block")}self.enumerator=object;return Opal.find_super_dispatcher(self,"initialize",TMP_8,(TMP_9=function(yielder,each_args){var self=TMP_9.$$s||this,$a,$b,TMP_10;if(yielder==null)yielder=nil;each_args=$slice.call(arguments,1);try{return($a=($b=object).$each,$a.$$p=(TMP_10=function(args){var self=TMP_10.$$s||this;args=$slice.call(arguments,0);args.unshift(yielder);if(Opal.yieldX(block,args)===$breaker){return $breaker}},TMP_10.$$s=self,TMP_10),$a).apply($b,[].concat(each_args))}catch($err){if(Opal.rescue($err,[$scope.get("Exception")])){return nil}else{throw $err}}},TMP_9.$$s=self,TMP_9)).apply(self,[size])};Opal.defn(self,"$force",def.$to_a);def.$lazy=function(){var self=this;return self};def.$collect=TMP_11=function(){var $a,$b,TMP_12,self=this,$iter=TMP_11.$$p,block=$iter||nil;TMP_11.$$p=null;if(block!==false&&block!==nil){}else{self.$raise($scope.get("ArgumentError"),"tried to call lazy map without a block")}return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_12=function(enum$,args){var self=TMP_12.$$s||this;if(enum$==null)enum$=nil;args=$slice.call(arguments,1);var value=Opal.yieldX(block,args);if(value===$breaker){return $breaker}enum$.$yield(value)},TMP_12.$$s=self,TMP_12),$a).call($b,self,self.$enumerator_size())};def.$collect_concat=TMP_13=function(){var $a,$b,TMP_14,self=this,$iter=TMP_13.$$p,block=$iter||nil;TMP_13.$$p=null;if(block!==false&&block!==nil){}else{self.$raise($scope.get("ArgumentError"),"tried to call lazy map without a block")}return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_14=function(enum$,args){var self=TMP_14.$$s||this,$a,$b,TMP_15,$c,TMP_16;if(enum$==null)enum$=nil;args=$slice.call(arguments,1);var value=Opal.yieldX(block,args);if(value===$breaker){return $breaker}if(value["$respond_to?"]("force")&&value["$respond_to?"]("each")){($a=($b=value).$each,$a.$$p=(TMP_15=function(v){var self=TMP_15.$$s||this;if(v==null)v=nil;return enum$.$yield(v)},TMP_15.$$s=self,TMP_15),$a).call($b)}else{var array=$scope.get("Opal").$try_convert(value,$scope.get("Array"),"to_ary");if(array===nil){enum$.$yield(value)}else{($a=($c=value).$each,$a.$$p=(TMP_16=function(v){var self=TMP_16.$$s||this;if(v==null)v=nil;return enum$.$yield(v)},TMP_16.$$s=self,TMP_16),$a).call($c)}}},TMP_14.$$s=self,TMP_14),$a).call($b,self,nil)};def.$drop=function(n){var $a,$b,TMP_17,self=this,current_size=nil,set_size=nil,dropped=nil;n=$scope.get("Opal").$coerce_to(n,$scope.get("Integer"),"to_int");if(n["$<"](0)){self.$raise($scope.get("ArgumentError"),"attempt to drop negative size")}current_size=self.$enumerator_size();set_size=function(){if(($a=$scope.get("Integer")["$==="](current_size))!==nil&&(!$a.$$is_boolean||$a==true)){if(n["$<"](current_size)){return n}else{return current_size}}else{return current_size}return nil}();dropped=0;return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_17=function(enum$,args){var self=TMP_17.$$s||this,$a;if(enum$==null)enum$=nil;args=$slice.call(arguments,1);if(dropped["$<"](n)){return dropped=dropped["$+"](1)}else{return($a=enum$).$yield.apply($a,[].concat(args))}},TMP_17.$$s=self,TMP_17),$a).call($b,self,set_size)};def.$drop_while=TMP_18=function(){var $a,$b,TMP_19,self=this,$iter=TMP_18.$$p,block=$iter||nil,succeeding=nil;TMP_18.$$p=null;if(block!==false&&block!==nil){}else{self.$raise($scope.get("ArgumentError"),"tried to call lazy drop_while without a block")}succeeding=true;return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_19=function(enum$,args){var self=TMP_19.$$s||this,$a,$b;if(enum$==null)enum$=nil;args=$slice.call(arguments,1);if(succeeding!==false&&succeeding!==nil){var value=Opal.yieldX(block,args);if(value===$breaker){return $breaker}if(($a=value)===nil||$a.$$is_boolean&&$a==false){succeeding=false;($a=enum$).$yield.apply($a,[].concat(args))}}else{return($b=enum$).$yield.apply($b,[].concat(args))}},TMP_19.$$s=self,TMP_19),$a).call($b,self,nil)};def.$enum_for=TMP_20=function(method,args){var $a,$b,self=this,$iter=TMP_20.$$p,block=$iter||nil;args=$slice.call(arguments,1);if(method==null){method="each"}TMP_20.$$p=null;return($a=($b=self.$class()).$for,$a.$$p=block.$to_proc(),$a).apply($b,[self,method].concat(args))};def.$find_all=TMP_21=function(){var $a,$b,TMP_22,self=this,$iter=TMP_21.$$p,block=$iter||nil;TMP_21.$$p=null;if(block!==false&&block!==nil){}else{self.$raise($scope.get("ArgumentError"),"tried to call lazy select without a block")}return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_22=function(enum$,args){var self=TMP_22.$$s||this,$a;if(enum$==null)enum$=nil;args=$slice.call(arguments,1);var value=Opal.yieldX(block,args);if(value===$breaker){return $breaker}if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)){($a=enum$).$yield.apply($a,[].concat(args))}},TMP_22.$$s=self,TMP_22),$a).call($b,self,nil)};Opal.defn(self,"$flat_map",def.$collect_concat);def.$grep=TMP_23=function(pattern){var $a,$b,TMP_24,$c,TMP_25,self=this,$iter=TMP_23.$$p,block=$iter||nil;TMP_23.$$p=null;if(block!==false&&block!==nil){return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_24=function(enum$,args){var self=TMP_24.$$s||this,$a;if(enum$==null)enum$=nil;args=$slice.call(arguments,1);var param=$scope.get("Opal").$destructure(args),value=pattern["$==="](param);if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)){value=Opal.yield1(block,param);if(value===$breaker){return $breaker}enum$.$yield(Opal.yield1(block,param))}},TMP_24.$$s=self,TMP_24),$a).call($b,self,nil)}else{return($a=($c=$scope.get("Lazy")).$new,$a.$$p=(TMP_25=function(enum$,args){var self=TMP_25.$$s||this,$a;if(enum$==null)enum$=nil;args=$slice.call(arguments,1);var param=$scope.get("Opal").$destructure(args),value=pattern["$==="](param);if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)){enum$.$yield(param)}},TMP_25.$$s=self,TMP_25),$a).call($c,self,nil)}};Opal.defn(self,"$map",def.$collect);Opal.defn(self,"$select",def.$find_all);def.$reject=TMP_26=function(){var $a,$b,TMP_27,self=this,$iter=TMP_26.$$p,block=$iter||nil;TMP_26.$$p=null;if(block!==false&&block!==nil){}else{self.$raise($scope.get("ArgumentError"),"tried to call lazy reject without a block")}return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_27=function(enum$,args){var self=TMP_27.$$s||this,$a;if(enum$==null)enum$=nil;args=$slice.call(arguments,1);var value=Opal.yieldX(block,args);if(value===$breaker){return $breaker}if(($a=value)===nil||$a.$$is_boolean&&$a==false){($a=enum$).$yield.apply($a,[].concat(args))}},TMP_27.$$s=self,TMP_27),$a).call($b,self,nil); | |
};def.$take=function(n){var $a,$b,TMP_28,self=this,current_size=nil,set_size=nil,taken=nil;n=$scope.get("Opal").$coerce_to(n,$scope.get("Integer"),"to_int");if(n["$<"](0)){self.$raise($scope.get("ArgumentError"),"attempt to take negative size")}current_size=self.$enumerator_size();set_size=function(){if(($a=$scope.get("Integer")["$==="](current_size))!==nil&&(!$a.$$is_boolean||$a==true)){if(n["$<"](current_size)){return n}else{return current_size}}else{return current_size}return nil}();taken=0;return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_28=function(enum$,args){var self=TMP_28.$$s||this,$a;if(enum$==null)enum$=nil;args=$slice.call(arguments,1);if(taken["$<"](n)){($a=enum$).$yield.apply($a,[].concat(args));return taken=taken["$+"](1)}else{return self.$raise($scope.get("StopLazyError"))}},TMP_28.$$s=self,TMP_28),$a).call($b,self,set_size)};def.$take_while=TMP_29=function(){var $a,$b,TMP_30,self=this,$iter=TMP_29.$$p,block=$iter||nil;TMP_29.$$p=null;if(block!==false&&block!==nil){}else{self.$raise($scope.get("ArgumentError"),"tried to call lazy take_while without a block")}return($a=($b=$scope.get("Lazy")).$new,$a.$$p=(TMP_30=function(enum$,args){var self=TMP_30.$$s||this,$a;if(enum$==null)enum$=nil;args=$slice.call(arguments,1);var value=Opal.yieldX(block,args);if(value===$breaker){return $breaker}if(($a=value)!==nil&&(!$a.$$is_boolean||$a==true)){($a=enum$).$yield.apply($a,[].concat(args))}else{self.$raise($scope.get("StopLazyError"))}},TMP_30.$$s=self,TMP_30),$a).call($b,self,nil)};Opal.defn(self,"$to_enum",def.$enum_for);return(def.$inspect=function(){var self=this;return"#<"+self.$class()+": "+self.enumerator.$inspect()+">"},nil)&&"inspect"}(self,self)}(self,null)};Opal.modules["corelib/array"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$gvars=Opal.gvars,$range=Opal.range;Opal.add_stubs(["$require","$include","$new","$class","$raise","$===","$to_a","$respond_to?","$to_ary","$coerce_to","$coerce_to?","$==","$to_str","$clone","$hash","$<=>","$inspect","$empty?","$enum_for","$nil?","$coerce_to!","$initialize_clone","$initialize_dup","$replace","$eql?","$length","$begin","$end","$exclude_end?","$flatten","$__id__","$[]","$to_s","$join","$delete_if","$to_proc","$each","$reverse","$!","$map","$rand","$keep_if","$shuffle!","$>","$<","$sort","$times","$[]=","$<<","$at"]);self.$require("corelib/enumerable");return function($base,$super){function $Array(){}var self=$Array=$klass($base,$super,"Array",$Array);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13,TMP_14,TMP_15,TMP_17,TMP_18,TMP_19,TMP_20,TMP_21,TMP_24;def.length=nil;self.$include($scope.get("Enumerable"));def.$$is_array=true;Opal.defs(self,"$[]",function(objects){var self=this;objects=$slice.call(arguments,0);return objects});def.$initialize=function(args){var $a,self=this;args=$slice.call(arguments,0);return($a=self.$class()).$new.apply($a,[].concat(args))};Opal.defs(self,"$new",TMP_1=function(size,obj){var $a,self=this,$iter=TMP_1.$$p,block=$iter||nil;if(size==null){size=nil}if(obj==null){obj=nil}TMP_1.$$p=null;if(($a=arguments.length>2)!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"wrong number of arguments ("+arguments.length+" for 0..2)")}if(($a=arguments.length===0)!==nil&&(!$a.$$is_boolean||$a==true)){return[]}if(($a=arguments.length===1)!==nil&&(!$a.$$is_boolean||$a==true)){if(($a=$scope.get("Array")["$==="](size))!==nil&&(!$a.$$is_boolean||$a==true)){return size.$to_a()}else if(($a=size["$respond_to?"]("to_ary"))!==nil&&(!$a.$$is_boolean||$a==true)){return size.$to_ary()}}size=$scope.get("Opal").$coerce_to(size,$scope.get("Integer"),"to_int");if(($a=size<0)!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"negative array size")}var result=[];if(block===nil){for(var i=0;i<size;i++){result.push(obj)}}else{for(var i=0,value;i<size;i++){value=block(i);if(value===$breaker){return $breaker.$v}result[i]=value}}return result});Opal.defs(self,"$try_convert",function(obj){var self=this;return $scope.get("Opal")["$coerce_to?"](obj,$scope.get("Array"),"to_ary")});def["$&"]=function(other){var $a,self=this;if(($a=$scope.get("Array")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){other=other.$to_a()}else{other=$scope.get("Opal").$coerce_to(other,$scope.get("Array"),"to_ary").$to_a()}var result=[],seen={};for(var i=0,length=self.length;i<length;i++){var item=self[i];if(!seen[item]){for(var j=0,length2=other.length;j<length2;j++){var item2=other[j];if(!seen[item2]&&item["$=="](item2)){seen[item]=true;result.push(item)}}}}return result};def["$|"]=function(other){var $a,self=this;if(($a=$scope.get("Array")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){other=other.$to_a()}else{other=$scope.get("Opal").$coerce_to(other,$scope.get("Array"),"to_ary").$to_a()}var result=[],seen={};for(var i=0,length=self.length;i<length;i++){var item=self[i];if(!seen[item]){seen[item]=true;result.push(item)}}for(var i=0,length=other.length;i<length;i++){var item=other[i];if(!seen[item]){seen[item]=true;result.push(item)}}return result};def["$*"]=function(other){var $a,self=this;if(($a=other["$respond_to?"]("to_str"))!==nil&&(!$a.$$is_boolean||$a==true)){return self.join(other.$to_str())}if(($a=other["$respond_to?"]("to_int"))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),"no implicit conversion of "+other.$class()+" into Integer")}other=$scope.get("Opal").$coerce_to(other,$scope.get("Integer"),"to_int");if(($a=other<0)!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"negative argument")}var result=[];for(var i=0;i<other;i++){result=result.concat(self)}return result};def["$+"]=function(other){var $a,self=this;if(($a=$scope.get("Array")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){other=other.$to_a()}else{other=$scope.get("Opal").$coerce_to(other,$scope.get("Array"),"to_ary").$to_a()}return self.concat(other)};def["$-"]=function(other){var $a,self=this;if(($a=$scope.get("Array")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){other=other.$to_a()}else{other=$scope.get("Opal").$coerce_to(other,$scope.get("Array"),"to_ary").$to_a()}if(($a=self.length===0)!==nil&&(!$a.$$is_boolean||$a==true)){return[]}if(($a=other.length===0)!==nil&&(!$a.$$is_boolean||$a==true)){return self.$clone()}var seen={},result=[];for(var i=0,length=other.length;i<length;i++){seen[other[i]]=true}for(var i=0,length=self.length;i<length;i++){var item=self[i];if(!seen[item]){result.push(item)}}return result};def["$<<"]=function(object){var self=this;self.push(object);return self};def["$<=>"]=function(other){var $a,self=this;if(($a=$scope.get("Array")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){other=other.$to_a()}else if(($a=other["$respond_to?"]("to_ary"))!==nil&&(!$a.$$is_boolean||$a==true)){other=other.$to_ary().$to_a()}else{return nil}if(self.$hash()===other.$hash()){return 0}if(self.length!=other.length){return self.length>other.length?1:-1}for(var i=0,length=self.length;i<length;i++){var tmp=self[i]["$<=>"](other[i]);if(tmp!==0){return tmp}}return 0};def["$=="]=function(other){var $a,self=this;if(($a=self===other)!==nil&&(!$a.$$is_boolean||$a==true)){return true}if(($a=$scope.get("Array")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){}else{if(($a=other["$respond_to?"]("to_ary"))!==nil&&(!$a.$$is_boolean||$a==true)){}else{return false}return other["$=="](self)}other=other.$to_a();if(($a=self.length===other.length)!==nil&&(!$a.$$is_boolean||$a==true)){}else{return false}for(var i=0,length=self.length;i<length;i++){var a=self[i],b=other[i];if(a.$$is_array&&b.$$is_array&&a===self){continue}if(!a["$=="](b)){return false}}return true};def["$[]"]=function(index,length){var $a,self=this;if(($a=$scope.get("Range")["$==="](index))!==nil&&(!$a.$$is_boolean||$a==true)){var size=self.length,exclude=index.exclude,from=$scope.get("Opal").$coerce_to(index.begin,$scope.get("Integer"),"to_int"),to=$scope.get("Opal").$coerce_to(index.end,$scope.get("Integer"),"to_int");if(from<0){from+=size;if(from<0){return nil}}if(from>size){return nil}if(to<0){to+=size;if(to<0){return[]}}if(!exclude){to+=1}return self.slice(from,to)}else{index=$scope.get("Opal").$coerce_to(index,$scope.get("Integer"),"to_int");var size=self.length;if(index<0){index+=size;if(index<0){return nil}}if(length===undefined){if(index>=size||index<0){return nil}return self[index]}else{length=$scope.get("Opal").$coerce_to(length,$scope.get("Integer"),"to_int");if(length<0||index>size||index<0){return nil}return self.slice(index,index+length)}}};def["$[]="]=function(index,value,extra){var $a,self=this,data=nil,length=nil;if(($a=$scope.get("Range")["$==="](index))!==nil&&(!$a.$$is_boolean||$a==true)){if(($a=$scope.get("Array")["$==="](value))!==nil&&(!$a.$$is_boolean||$a==true)){data=value.$to_a()}else if(($a=value["$respond_to?"]("to_ary"))!==nil&&(!$a.$$is_boolean||$a==true)){data=value.$to_ary().$to_a()}else{data=[value]}var size=self.length,exclude=index.exclude,from=$scope.get("Opal").$coerce_to(index.begin,$scope.get("Integer"),"to_int"),to=$scope.get("Opal").$coerce_to(index.end,$scope.get("Integer"),"to_int");if(from<0){from+=size;if(from<0){self.$raise($scope.get("RangeError"),""+index.$inspect()+" out of range")}}if(to<0){to+=size}if(!exclude){to+=1}if(from>size){for(var i=size;i<from;i++){self[i]=nil}}if(to<0){self.splice.apply(self,[from,0].concat(data))}else{self.splice.apply(self,[from,to-from].concat(data))}return value}else{if(($a=extra===undefined)!==nil&&(!$a.$$is_boolean||$a==true)){length=1}else{length=value;value=extra;if(($a=$scope.get("Array")["$==="](value))!==nil&&(!$a.$$is_boolean||$a==true)){data=value.$to_a()}else if(($a=value["$respond_to?"]("to_ary"))!==nil&&(!$a.$$is_boolean||$a==true)){data=value.$to_ary().$to_a()}else{data=[value]}}var size=self.length,index=$scope.get("Opal").$coerce_to(index,$scope.get("Integer"),"to_int"),length=$scope.get("Opal").$coerce_to(length,$scope.get("Integer"),"to_int"),old;if(index<0){old=index;index+=size;if(index<0){self.$raise($scope.get("IndexError"),"index "+old+" too small for array; minimum "+-self.length)}}if(length<0){self.$raise($scope.get("IndexError"),"negative length ("+length+")")}if(index>size){for(var i=size;i<index;i++){self[i]=nil}}if(extra===undefined){self[index]=value}else{self.splice.apply(self,[index,length].concat(data))}return value}};def.$assoc=function(object){var self=this;for(var i=0,length=self.length,item;i<length;i++){if(item=self[i],item.length&&item[0]["$=="](object)){return item}}return nil};def.$at=function(index){var self=this;index=$scope.get("Opal").$coerce_to(index,$scope.get("Integer"),"to_int");if(index<0){index+=self.length}if(index<0||index>=self.length){return nil}return self[index]};def.$cycle=TMP_2=function(n){var $a,$b,self=this,$iter=TMP_2.$$p,block=$iter||nil;if(n==null){n=nil}TMP_2.$$p=null;if(($a=($b=self["$empty?"]())!==false&&$b!==nil?$b:n["$=="](0))!==nil&&(!$a.$$is_boolean||$a==true)){return nil}if(block!==false&&block!==nil){}else{return self.$enum_for("cycle",n)}if(($a=n["$nil?"]())!==nil&&(!$a.$$is_boolean||$a==true)){while(true){for(var i=0,length=self.length;i<length;i++){var value=Opal.yield1(block,self[i]);if(value===$breaker){return $breaker.$v}}}}else{n=$scope.get("Opal")["$coerce_to!"](n,$scope.get("Integer"),"to_int");if(n<=0){return self}while(n>0){for(var i=0,length=self.length;i<length;i++){var value=Opal.yield1(block,self[i]);if(value===$breaker){return $breaker.$v}}n--}}return self};def.$clear=function(){var self=this;self.splice(0,self.length);return self};def.$clone=function(){var self=this,copy=nil;copy=[];copy.$initialize_clone(self);return copy};def.$dup=function(){var self=this,copy=nil;copy=[];copy.$initialize_dup(self);return copy};def.$initialize_copy=function(other){var self=this;return self.$replace(other)};def.$collect=TMP_3=function(){var self=this,$iter=TMP_3.$$p,block=$iter||nil;TMP_3.$$p=null;if(block!==nil){}else{return self.$enum_for("collect")}var result=[];for(var i=0,length=self.length;i<length;i++){var value=Opal.yield1(block,self[i]);if(value===$breaker){return $breaker.$v}result.push(value)}return result};def["$collect!"]=TMP_4=function(){var self=this,$iter=TMP_4.$$p,block=$iter||nil;TMP_4.$$p=null;if(block!==nil){}else{return self.$enum_for("collect!")}for(var i=0,length=self.length;i<length;i++){var value=Opal.yield1(block,self[i]);if(value===$breaker){return $breaker.$v}self[i]=value}return self};def.$compact=function(){var self=this;var result=[];for(var i=0,length=self.length,item;i<length;i++){if((item=self[i])!==nil){result.push(item)}}return result};def["$compact!"]=function(){var self=this;var original=self.length;for(var i=0,length=self.length;i<length;i++){if(self[i]===nil){self.splice(i,1);length--;i--}}return self.length===original?nil:self};def.$concat=function(other){var $a,self=this;if(($a=$scope.get("Array")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){other=other.$to_a()}else{other=$scope.get("Opal").$coerce_to(other,$scope.get("Array"),"to_ary").$to_a()}for(var i=0,length=other.length;i<length;i++){self.push(other[i])}return self};def.$delete=function(object){var self=this;var original=self.length;for(var i=0,length=original;i<length;i++){if(self[i]["$=="](object)){self.splice(i,1);length--;i--}}return self.length===original?nil:object};def.$delete_at=function(index){var self=this;index=$scope.get("Opal").$coerce_to(index,$scope.get("Integer"),"to_int");if(index<0){index+=self.length}if(index<0||index>=self.length){return nil}var result=self[index];self.splice(index,1);return result};def.$delete_if=TMP_5=function(){var self=this,$iter=TMP_5.$$p,block=$iter||nil;TMP_5.$$p=null;if(block!==nil){}else{return self.$enum_for("delete_if")}for(var i=0,length=self.length,value;i<length;i++){if((value=block(self[i]))===$breaker){return $breaker.$v}if(value!==false&&value!==nil){self.splice(i,1);length--;i--}}return self};def.$drop=function(number){var self=this;if(number<0){self.$raise($scope.get("ArgumentError"))}return self.slice(number)};Opal.defn(self,"$dup",def.$clone);def.$each=TMP_6=function(){var self=this,$iter=TMP_6.$$p,block=$iter||nil;TMP_6.$$p=null;if(block!==nil){}else{return self.$enum_for("each")}for(var i=0,length=self.length;i<length;i++){var value=Opal.yield1(block,self[i]);if(value==$breaker){return $breaker.$v}}return self};def.$each_index=TMP_7=function(){var self=this,$iter=TMP_7.$$p,block=$iter||nil;TMP_7.$$p=null;if(block!==nil){}else{return self.$enum_for("each_index")}for(var i=0,length=self.length;i<length;i++){var value=Opal.yield1(block,i);if(value===$breaker){return $breaker.$v}}return self};def["$empty?"]=function(){var self=this;return self.length===0};def["$eql?"]=function(other){var $a,self=this;if(($a=self===other)!==nil&&(!$a.$$is_boolean||$a==true)){return true}if(($a=$scope.get("Array")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){}else{return false}other=other.$to_a();if(($a=self.length===other.length)!==nil&&(!$a.$$is_boolean||$a==true)){}else{return false}for(var i=0,length=self.length;i<length;i++){var a=self[i],b=other[i];if(a.$$is_array&&b.$$is_array&&a===self){continue}if(!a["$eql?"](b)){return false}}return true};def.$fetch=TMP_8=function(index,defaults){var self=this,$iter=TMP_8.$$p,block=$iter||nil;TMP_8.$$p=null;var original=index;index=$scope.get("Opal").$coerce_to(index,$scope.get("Integer"),"to_int");if(index<0){index+=self.length}if(index>=0&&index<self.length){return self[index]}if(block!==nil){return block(original)}if(defaults!=null){return defaults}if(self.length===0){self.$raise($scope.get("IndexError"),"index "+original+" outside of array bounds: 0...0")}else{self.$raise($scope.get("IndexError"),"index "+original+" outside of array bounds: -"+self.length+"..."+self.length)}};def.$fill=TMP_9=function(args){var $a,self=this,$iter=TMP_9.$$p,block=$iter||nil,one=nil,two=nil,obj=nil,left=nil,right=nil;args=$slice.call(arguments,0);TMP_9.$$p=null;if(block!==false&&block!==nil){if(($a=args.length>2)!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"wrong number of arguments ("+args.$length()+" for 0..2)")}$a=Opal.to_ary(args),one=$a[0]==null?nil:$a[0],two=$a[1]==null?nil:$a[1]}else{if(($a=args.length==0)!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"wrong number of arguments (0 for 1..3)")}else if(($a=args.length>3)!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"wrong number of arguments ("+args.$length()+" for 1..3)")}$a=Opal.to_ary(args),obj=$a[0]==null?nil:$a[0],one=$a[1]==null?nil:$a[1],two=$a[2]==null?nil:$a[2]}if(($a=$scope.get("Range")["$==="](one))!==nil&&(!$a.$$is_boolean||$a==true)){if(two!==false&&two!==nil){self.$raise($scope.get("TypeError"),"length invalid with range")}left=$scope.get("Opal").$coerce_to(one.$begin(),$scope.get("Integer"),"to_int");if(($a=left<0)!==nil&&(!$a.$$is_boolean||$a==true)){left+=self.length}if(($a=left<0)!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("RangeError"),""+one.$inspect()+" out of range")}right=$scope.get("Opal").$coerce_to(one.$end(),$scope.get("Integer"),"to_int");if(($a=right<0)!==nil&&(!$a.$$is_boolean||$a==true)){right+=self.length}if(($a=one["$exclude_end?"]())!==nil&&(!$a.$$is_boolean||$a==true)){}else{right+=1}if(($a=right<=left)!==nil&&(!$a.$$is_boolean||$a==true)){return self}}else if(one!==false&&one!==nil){left=$scope.get("Opal").$coerce_to(one,$scope.get("Integer"),"to_int");if(($a=left<0)!==nil&&(!$a.$$is_boolean||$a==true)){left+=self.length}if(($a=left<0)!==nil&&(!$a.$$is_boolean||$a==true)){left=0}if(two!==false&&two!==nil){right=$scope.get("Opal").$coerce_to(two,$scope.get("Integer"),"to_int");if(($a=right==0)!==nil&&(!$a.$$is_boolean||$a==true)){return self}right+=left}else{right=self.length}}else{left=0;right=self.length}if(($a=left>self.length)!==nil&&(!$a.$$is_boolean||$a==true)){for(var i=self.length;i<right;i++){self[i]=nil}}if(($a=right>self.length)!==nil&&(!$a.$$is_boolean||$a==true)){self.length=right}if(block!==false&&block!==nil){for(var length=self.length;left<right;left++){var value=block(left);if(value===$breaker){return $breaker.$v}self[left]=value}}else{for(var length=self.length;left<right;left++){self[left]=obj}}return self};def.$first=function(count){var self=this;if(count==null){return self.length===0?nil:self[0]}count=$scope.get("Opal").$coerce_to(count,$scope.get("Integer"),"to_int");if(count<0){self.$raise($scope.get("ArgumentError"),"negative array size")}return self.slice(0,count)};def.$flatten=function(level){var self=this;var result=[];for(var i=0,length=self.length;i<length;i++){var item=self[i];if($scope.get("Opal")["$respond_to?"](item,"to_ary")){item=item.$to_ary();if(level==null){result.push.apply(result,item.$flatten().$to_a())}else if(level==0){result.push(item)}else{result.push.apply(result,item.$flatten(level-1).$to_a())}}else{result.push(item)}}return result};def["$flatten!"]=function(level){var self=this;var flattened=self.$flatten(level);if(self.length==flattened.length){for(var i=0,length=self.length;i<length;i++){if(self[i]!==flattened[i]){break}}if(i==length){return nil}}self.$replace(flattened);return self};def.$hash=function(){var self=this;var hash=["A"],item,item_hash;for(var i=0,length=self.length;i<length;i++){item=self[i];item_hash=self===item?"self":item.$hash();hash.push(item_hash)}return hash.join(",")};def["$include?"]=function(member){var self=this;for(var i=0,length=self.length;i<length;i++){if(self[i]["$=="](member)){return true}}return false};def.$index=TMP_10=function(object){var self=this,$iter=TMP_10.$$p,block=$iter||nil;TMP_10.$$p=null;if(object!=null){for(var i=0,length=self.length;i<length;i++){if(self[i]["$=="](object)){return i}}}else if(block!==nil){for(var i=0,length=self.length,value;i<length;i++){if((value=block(self[i]))===$breaker){return $breaker.$v}if(value!==false&&value!==nil){return i}}}else{return self.$enum_for("index")}return nil};def.$insert=function(index,objects){var self=this;objects=$slice.call(arguments,1);index=$scope.get("Opal").$coerce_to(index,$scope.get("Integer"),"to_int");if(objects.length>0){if(index<0){index+=self.length+1;if(index<0){self.$raise($scope.get("IndexError"),""+index+" is out of bounds")}}if(index>self.length){for(var i=self.length;i<index;i++){self.push(nil)}}self.splice.apply(self,[index,0].concat(objects))}return self};def.$inspect=function(){var self=this;var result=[],id=self.$__id__();for(var i=0,length=self.length;i<length;i++){var item=self["$[]"](i);if(item.$__id__()===id){result.push("[...]")}else{result.push(item.$inspect())}}return"["+result.join(", ")+"]"};def.$join=function(sep){var $a,self=this;if($gvars[","]==null)$gvars[","]=nil;if(sep==null){sep=nil}if(($a=self.length===0)!==nil&&(!$a.$$is_boolean||$a==true)){return""}if(($a=sep===nil)!==nil&&(!$a.$$is_boolean||$a==true)){sep=$gvars[","]}var result=[];for(var i=0,length=self.length;i<length;i++){var item=self[i];if($scope.get("Opal")["$respond_to?"](item,"to_str")){var tmp=item.$to_str();if(tmp!==nil){result.push(tmp.$to_s());continue}}if($scope.get("Opal")["$respond_to?"](item,"to_ary")){var tmp=item.$to_ary();if(tmp!==nil){result.push(tmp.$join(sep));continue}}if($scope.get("Opal")["$respond_to?"](item,"to_s")){var tmp=item.$to_s();if(tmp!==nil){result.push(tmp);continue}}self.$raise($scope.get("NoMethodError"),""+$scope.get("Opal").$inspect(item)+" doesn't respond to #to_str, #to_ary or #to_s")}if(sep===nil){return result.join("")}else{return result.join($scope.get("Opal")["$coerce_to!"](sep,$scope.get("String"),"to_str").$to_s())}};def.$keep_if=TMP_11=function(){var self=this,$iter=TMP_11.$$p,block=$iter||nil;TMP_11.$$p=null;if(block!==nil){}else{return self.$enum_for("keep_if")}for(var i=0,length=self.length,value;i<length;i++){if((value=block(self[i]))===$breaker){return $breaker.$v}if(value===false||value===nil){self.splice(i,1);length--;i--}}return self};def.$last=function(count){var self=this;if(count==null){return self.length===0?nil:self[self.length-1]}count=$scope.get("Opal").$coerce_to(count,$scope.get("Integer"),"to_int");if(count<0){self.$raise($scope.get("ArgumentError"),"negative array size")}if(count>self.length){count=self.length}return self.slice(self.length-count,self.length)};def.$length=function(){var self=this;return self.length};Opal.defn(self,"$map",def.$collect);Opal.defn(self,"$map!",def["$collect!"]);def.$pop=function(count){var $a,self=this;if(($a=count===undefined)!==nil&&(!$a.$$is_boolean||$a==true)){if(($a=self.length===0)!==nil&&(!$a.$$is_boolean||$a==true)){return nil}return self.pop()}count=$scope.get("Opal").$coerce_to(count,$scope.get("Integer"),"to_int");if(($a=count<0)!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"negative array size")}if(($a=self.length===0)!==nil&&(!$a.$$is_boolean||$a==true)){return[]}if(($a=count>self.length)!==nil&&(!$a.$$is_boolean||$a==true)){return self.splice(0,self.length)}else{return self.splice(self.length-count,self.length)}};def.$push=function(objects){var self=this;objects=$slice.call(arguments,0);for(var i=0,length=objects.length;i<length;i++){self.push(objects[i])}return self};def.$rassoc=function(object){var self=this;for(var i=0,length=self.length,item;i<length;i++){item=self[i];if(item.length&&item[1]!==undefined){if(item[1]["$=="](object)){return item}}}return nil};def.$reject=TMP_12=function(){var self=this,$iter=TMP_12.$$p,block=$iter||nil;TMP_12.$$p=null;if(block!==nil){}else{return self.$enum_for("reject")}var result=[];for(var i=0,length=self.length,value;i<length;i++){if((value=block(self[i]))===$breaker){return $breaker.$v}if(value===false||value===nil){result.push(self[i])}}return result};def["$reject!"]=TMP_13=function(){var $a,$b,self=this,$iter=TMP_13.$$p,block=$iter||nil,original=nil;TMP_13.$$p=null;if(block!==nil){}else{return self.$enum_for("reject!")}original=self.$length();($a=($b=self).$delete_if,$a.$$p=block.$to_proc(),$a).call($b);if(self.$length()["$=="](original)){return nil}else{return self}};def.$replace=function(other){var $a,self=this;if(($a=$scope.get("Array")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){other=other.$to_a()}else{other=$scope.get("Opal").$coerce_to(other,$scope.get("Array"),"to_ary").$to_a()}self.splice(0,self.length);self.push.apply(self,other);return self};def.$reverse=function(){var self=this;return self.slice(0).reverse()};def["$reverse!"]=function(){var self=this;return self.reverse()};def.$reverse_each=TMP_14=function(){var $a,$b,self=this,$iter=TMP_14.$$p,block=$iter||nil;TMP_14.$$p=null;if(block!==nil){}else{return self.$enum_for("reverse_each")}($a=($b=self.$reverse()).$each,$a.$$p=block.$to_proc(),$a).call($b);return self};def.$rindex=TMP_15=function(object){var self=this,$iter=TMP_15.$$p,block=$iter||nil;TMP_15.$$p=null;if(object!=null){for(var i=self.length-1;i>=0;i--){if(self[i]["$=="](object)){return i}}}else if(block!==nil){for(var i=self.length-1,value;i>=0;i--){if((value=block(self[i]))===$breaker){return $breaker.$v}if(value!==false&&value!==nil){return i}}}else if(object==null){return self.$enum_for("rindex")}return nil};def.$sample=function(n){var $a,$b,TMP_16,self=this;if(n==null){n=nil}if(($a=($b=n["$!"](),$b!==false&&$b!==nil?self["$empty?"]():$b))!==nil&&(!$a.$$is_boolean||$a==true)){return nil}if(($a=($b=n!==false&&n!==nil)?self["$empty?"]():$b)!==nil&&(!$a.$$is_boolean||$a==true)){return[]}if(n!==false&&n!==nil){return($a=($b=$range(1,n,false)).$map,$a.$$p=(TMP_16=function(){var self=TMP_16.$$s||this;return self["$[]"](self.$rand(self.$length()))},TMP_16.$$s=self,TMP_16),$a).call($b)}else{return self["$[]"](self.$rand(self.$length()))}};def.$select=TMP_17=function(){var self=this,$iter=TMP_17.$$p,block=$iter||nil;TMP_17.$$p=null;if(block!==nil){}else{return self.$enum_for("select")}var result=[];for(var i=0,length=self.length,item,value;i<length;i++){item=self[i];if((value=Opal.yield1(block,item))===$breaker){return $breaker.$v}if(value!==false&&value!==nil){result.push(item)}}return result};def["$select!"]=TMP_18=function(){var $a,$b,self=this,$iter=TMP_18.$$p,block=$iter||nil;TMP_18.$$p=null;if(block!==nil){}else{return self.$enum_for("select!")}var original=self.length;($a=($b=self).$keep_if,$a.$$p=block.$to_proc(),$a).call($b);return self.length===original?nil:self};def.$shift=function(count){var $a,self=this;if(($a=count===undefined)!==nil&&(!$a.$$is_boolean||$a==true)){if(($a=self.length===0)!==nil&&(!$a.$$is_boolean||$a==true)){return nil}return self.shift()}count=$scope.get("Opal").$coerce_to(count,$scope.get("Integer"),"to_int");if(($a=count<0)!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"negative array size")}if(($a=self.length===0)!==nil&&(!$a.$$is_boolean||$a==true)){return[]}return self.splice(0,count)};Opal.defn(self,"$size",def.$length);def.$shuffle=function(){var self=this;return self.$clone()["$shuffle!"]()};def["$shuffle!"]=function(){var self=this;for(var i=self.length-1;i>0;i--){var tmp=self[i],j=Math.floor(Math.random()*(i+1));self[i]=self[j];self[j]=tmp}return self};Opal.defn(self,"$slice",def["$[]"]);def["$slice!"]=function(index,length){var self=this;if(index<0){index+=self.length}if(length!=null){return self.splice(index,length)}if(index<0||index>=self.length){return nil}return self.splice(index,1)[0]};def.$sort=TMP_19=function(){var $a,self=this,$iter=TMP_19.$$p,block=$iter||nil;TMP_19.$$p=null;if(($a=self.length>1)!==nil&&(!$a.$$is_boolean||$a==true)){}else{return self}if(!(block!==nil)){block=function(a,b){return a["$<=>"](b)}}try{return self.slice().sort(function(x,y){var ret=block(x,y);if(ret===$breaker){throw $breaker}else if(ret===nil){self.$raise($scope.get("ArgumentError"),"comparison of "+x.$inspect()+" with "+y.$inspect()+" failed")}return ret["$>"](0)?1:ret["$<"](0)?-1:0})}catch(e){if(e===$breaker){return $breaker.$v}else{throw e}}};def["$sort!"]=TMP_20=function(){var $a,$b,self=this,$iter=TMP_20.$$p,block=$iter||nil;TMP_20.$$p=null;var result;if(block!==nil){result=($a=($b=self.slice()).$sort,$a.$$p=block.$to_proc(),$a).call($b)}else{result=self.slice().$sort()}self.length=0;for(var i=0,length=result.length;i<length;i++){self.push(result[i])}return self};def.$take=function(count){var self=this;if(count<0){self.$raise($scope.get("ArgumentError"))}return self.slice(0,count)};def.$take_while=TMP_21=function(){var self=this,$iter=TMP_21.$$p,block=$iter||nil;TMP_21.$$p=null;var result=[];for(var i=0,length=self.length,item,value;i<length;i++){item=self[i];if((value=block(item))===$breaker){return $breaker.$v}if(value===false||value===nil){return result}result.push(item)}return result};def.$to_a=function(){var self=this;return self};Opal.defn(self,"$to_ary",def.$to_a);Opal.defn(self,"$to_s",def.$inspect);def.$transpose=function(){var $a,$b,TMP_22,self=this,result=nil,max=nil;if(($a=self["$empty?"]())!==nil&&(!$a.$$is_boolean||$a==true)){return[]}result=[];max=nil;($a=($b=self).$each,$a.$$p=(TMP_22=function(row){var self=TMP_22.$$s||this,$a,$b,TMP_23;if(row==null)row=nil;if(($a=$scope.get("Array")["$==="](row))!==nil&&(!$a.$$is_boolean||$a==true)){row=row.$to_a()}else{row=$scope.get("Opal").$coerce_to(row,$scope.get("Array"),"to_ary").$to_a()}($a=max)!==false&&$a!==nil?$a:max=row.length;if(($a=row.length["$=="](max)["$!"]())!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("IndexError"),"element size differs ("+row.length+" should be "+max)}return($a=($b=row.length).$times,$a.$$p=(TMP_23=function(i){var self=TMP_23.$$s||this,$a,$b,$c,entry=nil;if(i==null)i=nil;entry=($a=i,$b=result,($c=$b["$[]"]($a))!==false&&$c!==nil?$c:$b["$[]="]($a,[]));return entry["$<<"](row.$at(i))},TMP_23.$$s=self,TMP_23),$a).call($b)},TMP_22.$$s=self,TMP_22),$a).call($b);return result};def.$uniq=function(){var self=this;var result=[],seen={};for(var i=0,length=self.length,item,hash;i<length;i++){item=self[i];hash=item;if(!seen[hash]){seen[hash]=true;result.push(item)}}return result};def["$uniq!"]=function(){var self=this;var original=self.length,seen={};for(var i=0,length=original,item,hash;i<length;i++){item=self[i];hash=item;if(!seen[hash]){seen[hash]=true}else{self.splice(i,1);length--;i--}}return self.length===original?nil:self};def.$unshift=function(objects){var self=this;objects=$slice.call(arguments,0);for(var i=objects.length-1;i>=0;i--){self.unshift(objects[i])}return self};return(def.$zip=TMP_24=function(others){var self=this,$iter=TMP_24.$$p,block=$iter||nil;others=$slice.call(arguments,0);TMP_24.$$p=null;var result=[],size=self.length,part,o;for(var i=0;i<size;i++){part=[self[i]];for(var j=0,jj=others.length;j<jj;j++){o=others[j][i];if(o==null){o=nil}part[j+1]=o}result[i]=part}if(block!==nil){for(var i=0;i<size;i++){block(result[i])}return nil}return result},nil)&&"zip"}(self,null)};Opal.modules["corelib/array/inheritance"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$new","$allocate","$initialize","$to_proc","$__send__","$clone","$respond_to?","$==","$eql?","$inspect","$*","$class","$slice","$uniq","$flatten"]);(function($base,$super){function $Array(){}var self=$Array=$klass($base,$super,"Array",$Array);var def=self.$$proto,$scope=self.$$scope;return(Opal.defs(self,"$inherited",function(klass){var self=this,replace=nil;replace=$scope.get("Class").$new($scope.get("Array").$$scope.get("Wrapper"));klass.$$proto=replace.$$proto;klass.$$proto.$$class=klass;klass.$$alloc=replace.$$alloc;klass.$$parent=$scope.get("Array").$$scope.get("Wrapper");klass.$allocate=replace.$allocate;klass.$new=replace.$new;klass["$[]"]=replace["$[]"]}),nil)&&"inherited"})(self,null);return function($base,$super){function $Wrapper(){}var self=$Wrapper=$klass($base,$super,"Wrapper",$Wrapper);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5;def.literal=nil;Opal.defs(self,"$allocate",TMP_1=function(array){ | |
var self=this,$iter=TMP_1.$$p,$yield=$iter||nil,obj=nil;if(array==null){array=[]}TMP_1.$$p=null;obj=Opal.find_super_dispatcher(self,"allocate",TMP_1,null,$Wrapper).apply(self,[]);obj.literal=array;return obj});Opal.defs(self,"$new",TMP_2=function(args){var $a,$b,self=this,$iter=TMP_2.$$p,block=$iter||nil,obj=nil;args=$slice.call(arguments,0);TMP_2.$$p=null;obj=self.$allocate();($a=($b=obj).$initialize,$a.$$p=block.$to_proc(),$a).apply($b,[].concat(args));return obj});Opal.defs(self,"$[]",function(objects){var self=this;objects=$slice.call(arguments,0);return self.$allocate(objects)});def.$initialize=TMP_3=function(args){var $a,$b,self=this,$iter=TMP_3.$$p,block=$iter||nil;args=$slice.call(arguments,0);TMP_3.$$p=null;return self.literal=($a=($b=$scope.get("Array")).$new,$a.$$p=block.$to_proc(),$a).apply($b,[].concat(args))};def.$method_missing=TMP_4=function(args){var $a,$b,self=this,$iter=TMP_4.$$p,block=$iter||nil,result=nil;args=$slice.call(arguments,0);TMP_4.$$p=null;result=($a=($b=self.literal).$__send__,$a.$$p=block.$to_proc(),$a).apply($b,[].concat(args));if(($a=result===self.literal)!==nil&&(!$a.$$is_boolean||$a==true)){return self}else{return result}};def.$initialize_copy=function(other){var self=this;return self.literal=other.literal.$clone()};def["$respond_to?"]=TMP_5=function(name){var $zuper=$slice.call(arguments,0);var $a,self=this,$iter=TMP_5.$$p,$yield=$iter||nil;TMP_5.$$p=null;return($a=Opal.find_super_dispatcher(self,"respond_to?",TMP_5,$iter).apply(self,$zuper))!==false&&$a!==nil?$a:self.literal["$respond_to?"](name)};def["$=="]=function(other){var self=this;return self.literal["$=="](other)};def["$eql?"]=function(other){var self=this;return self.literal["$eql?"](other)};def.$to_a=function(){var self=this;return self.literal};def.$to_ary=function(){var self=this;return self};def.$inspect=function(){var self=this;return self.literal.$inspect()};def["$*"]=function(other){var self=this;var result=self.literal["$*"](other);if(result.$$is_array){return self.$class().$allocate(result)}else{return result}};def["$[]"]=function(index,length){var self=this;var result=self.literal.$slice(index,length);if(result.$$is_array&&(index.$$is_range||length!==undefined)){return self.$class().$allocate(result)}else{return result}};Opal.defn(self,"$slice",def["$[]"]);def.$uniq=function(){var self=this;return self.$class().$allocate(self.literal.$uniq())};return(def.$flatten=function(level){var self=this;return self.$class().$allocate(self.literal.$flatten(level))},nil)&&"flatten"}($scope.get("Array"),null)};Opal.modules["corelib/hash"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$require","$include","$!","$==","$call","$coerce_to!","$lambda?","$abs","$arity","$raise","$enum_for","$flatten","$eql?","$===","$clone","$merge!","$to_proc","$alias_method"]);self.$require("corelib/enumerable");return function($base,$super){function $Hash(){}var self=$Hash=$klass($base,$super,"Hash",$Hash);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7,TMP_8,TMP_9,TMP_10,TMP_11,TMP_12,TMP_13;def.proc=def.none=nil;self.$include($scope.get("Enumerable"));def.$$is_hash=true;Opal.defs(self,"$[]",function(objs){var self=this;objs=$slice.call(arguments,0);return Opal.hash.apply(null,objs)});Opal.defs(self,"$allocate",function(){var self=this;var hash=new self.$$alloc;hash.map={};hash.smap={};hash.keys=[];hash.none=nil;hash.proc=nil;return hash});def.$initialize=TMP_1=function(defaults){var self=this,$iter=TMP_1.$$p,block=$iter||nil;TMP_1.$$p=null;self.none=defaults===undefined?nil:defaults;self.proc=block;return self};def["$=="]=function(other){var self=this;if(self===other){return true}if(!other.keys||!other.smap||!other.map){return false}if(self.keys.length!==other.keys.length){return false}var _map=self.map,smap=self.smap,_map2=other.map,smap2=other.smap,map,map2,key,khash,value,value2;for(var i=0,length=self.keys.length;i<length;i++){key=self.keys[i];if(key.$$is_string){khash=key;map=smap;map2=smap2}else{khash=key.$hash();map=_map;map2=_map2}value=map[khash];if(value===undefined)console.log("==",key,self);value2=map2[khash];if(value2===undefined||value["$=="](value2)["$!"]()){return false}}return true};def["$[]"]=function(key){var self=this;var map,khash;if(key.$$is_string){map=self.smap;khash=key}else{map=self.map;khash=key.$hash()}if(map===undefined){console.log(self,"[] --> key:",key,khash,map)}if(Opal.hasOwnProperty.call(map,khash)){return map[khash]}var proc=self.proc;if(proc!==nil){return proc.$call(self,key)}return self.none};def["$[]="]=function(key,value){var self=this;var map,khash,value;if(key.$$is_string){map=self.smap;khash=key}else{map=self.map;khash=key.$hash()}if(!Opal.hasOwnProperty.call(map,khash)){self.keys.push(key)}map[khash]=value;return value};def.$assoc=function(object){var self=this;var keys=self.keys,map,key,khash;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(key["$=="](object)){if(key.$$is_string){map=self.smap;khash=key}else{map=self.map;khash=key.$hash()}return[key,map[khash]]}}return nil};def.$clear=function(){var self=this;self.map={};self.smap={};self.keys=[];return self};def.$clone=function(){var self=this;var _map={},smap={},_map2=self.map,smap2=self.smap,keys=[],map,map2,key,khash,value;for(var i=0,length=self.keys.length;i<length;i++){key=self.keys[i];if(key.$$is_string){khash=key;map=smap;map2=smap2}else{khash=key.$hash();map=_map;map2=_map2}value=map2[khash];keys.push(key);map[khash]=value}var clone=new self.$$class.$$alloc;clone.map=_map;clone.smap=smap;clone.keys=keys;clone.none=self.none;clone.proc=self.proc;return clone};def.$default=function(val){var self=this;if(val!==undefined&&self.proc!==nil){return self.proc.$call(self,val)}return self.none};def["$default="]=function(object){var self=this;self.proc=nil;return self.none=object};def.$default_proc=function(){var self=this;return self.proc};def["$default_proc="]=function(proc){var self=this;if(proc!==nil){proc=$scope.get("Opal")["$coerce_to!"](proc,$scope.get("Proc"),"to_proc");if(proc["$lambda?"]()&&proc.$arity().$abs()!=2){self.$raise($scope.get("TypeError"),"default_proc takes two arguments")}}self.none=nil;return self.proc=proc};def.$delete=TMP_2=function(key){var self=this,$iter=TMP_2.$$p,block=$iter||nil;TMP_2.$$p=null;var result,map,khash;if(key.$$is_string){map=self.smap;khash=key}else{map=self.map;khash=key.$hash()}result=map[khash];if(result!=null){delete map[khash];self.keys.$delete(key);return result}if(block!==nil){return block.$call(key)}return nil};def.$delete_if=TMP_3=function(){var self=this,$iter=TMP_3.$$p,block=$iter||nil;TMP_3.$$p=null;if(block!==false&&block!==nil){}else{return self.$enum_for("delete_if")}var _map=self.map,smap=self.smap,keys=self.keys,map,key,value,obj,khash;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(key.$$is_string){map=smap;khash=key}else{map=_map;khash=key.$hash()}obj=map[khash];value=block(key,obj);if(value===$breaker){return $breaker.$v}if(value!==false&&value!==nil){keys.splice(i,1);delete map[khash];length--;i--}}return self};Opal.defn(self,"$dup",def.$clone);def.$each=TMP_4=function(){var self=this,$iter=TMP_4.$$p,block=$iter||nil;TMP_4.$$p=null;if(block!==false&&block!==nil){}else{return self.$enum_for("each")}var _map=self.map,smap=self.smap,keys=self.keys,map,key,khash,value;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(key.$$is_string){map=smap;khash=key}else{map=_map;khash=key.$hash()}value=Opal.yield1(block,[key,map[khash]]);if(value===$breaker){return $breaker.$v}}return self};def.$each_key=TMP_5=function(){var self=this,$iter=TMP_5.$$p,block=$iter||nil;TMP_5.$$p=null;if(block!==false&&block!==nil){}else{return self.$enum_for("each_key")}var keys=self.keys,key;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(block(key)===$breaker){return $breaker.$v}}return self};Opal.defn(self,"$each_pair",def.$each);def.$each_value=TMP_6=function(){var self=this,$iter=TMP_6.$$p,block=$iter||nil;TMP_6.$$p=null;if(block!==false&&block!==nil){}else{return self.$enum_for("each_value")}var _map=self.map,smap=self.smap,keys=self.keys;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(key.$$is_string){map=smap;khash=key}else{map=_map;khash=key.$hash()}if(block(map[khash])===$breaker){return $breaker.$v}}return self};def["$empty?"]=function(){var self=this;return self.keys.length===0};Opal.defn(self,"$eql?",def["$=="]);def.$fetch=TMP_7=function(key,defaults){var self=this,$iter=TMP_7.$$p,block=$iter||nil;TMP_7.$$p=null;var map,khash,value;if(key.$$is_string){khash=key;map=self.smap}else{khash=key.$hash();map=self.map}value=map[khash];if(value!=null){return value}if(block!==nil){var value;if((value=block(key))===$breaker){return $breaker.$v}return value}if(defaults!=null){return defaults}self.$raise($scope.get("KeyError"),"key not found")};def.$flatten=function(level){var self=this;var _map=self.map,smap=self.smap,keys=self.keys,result=[],map,key,khash,value;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(key.$$is_string){khash=key;map=smap}else{khash=key.$hash();map=_map}value=map[khash];result.push(key);if(value.$$is_array){if(level==null||level===1){result.push(value)}else{result=result.concat(value.$flatten(level-1))}}else{result.push(value)}}return result};def["$has_key?"]=function(key){var self=this;var keys=self.keys,map,khash;if(key.$$is_string){khash=key;map=self.smap}else{khash=key.$hash();map=self.map}if(Opal.hasOwnProperty.call(map,khash)){for(var i=0,length=keys.length;i<length;i++){if(!key["$eql?"](keys[i])["$!"]()){return true}}}return false};def["$has_value?"]=function(value){var self=this;for(var khash in self.map){if(self.map[khash]["$=="](value)){return true}}return false};var hash_ids=null;def.$hash=function(){var self=this;var top=hash_ids===null;try{var key,value,hash=["Hash"],keys=self.keys,id=self.$object_id(),counter=0;if(top){hash_ids={}}if(hash_ids.hasOwnProperty(id)){return"self"}hash_ids[id]=true;for(var i=0,length=keys.length;i<length;i++){key=keys[i];value=key.$$is_string?self.smap[key]:self.map[key.$hash()];key=key.$hash();value=typeof value==="undefined"?"":value.$hash();hash.push([key,value])}return hash.sort().join()}finally{if(top){hash_ids=null}}};Opal.defn(self,"$include?",def["$has_key?"]);def.$index=function(object){var self=this;var _map=self.map,smap=self.smap,keys=self.keys,map,khash,key;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(key.$$is_string){map=smap;khash=key}else{map=_map;khash=key.$hash()}if(map[khash]["$=="](object)){return key}}return nil};def.$indexes=function(keys){var self=this;keys=$slice.call(arguments,0);var result=[],_map=self.map,smap=self.smap,map,key,khash,value;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(key.$$is_string){khash=key;map=smap}else{khash=key.$hash();map=_map}value=map[khash];if(value!=null){result.push(value)}else{result.push(self.none)}}return result};Opal.defn(self,"$indices",def.$indexes);var inspect_ids=null;def.$inspect=function(){var self=this;var top=inspect_ids===null;try{var key,value,inspect=[],keys=self.keys;id=self.$object_id(),counter=0;if(top){inspect_ids={}}if(inspect_ids.hasOwnProperty(id)){return"{...}"}inspect_ids[id]=true;for(var i=0,length=keys.length;i<length;i++){key=keys[i];value=key.$$is_string?self.smap[key]:self.map[key.$hash()];key=key.$inspect();value=value.$inspect();inspect.push(key+"=>"+value)}return"{"+inspect.join(", ")+"}"}finally{if(top){inspect_ids=null}}};def.$invert=function(){var self=this;var result=Opal.hash(),keys=self.keys,_map=self.map,smap=self.smap,keys2=result.keys,_map2=result.map,smap2=result.smap,map,map2,key,khash,value;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(key.$$is_string){map=smap;khash=key}else{map=_map;khash=key.$hash()}value=map[khash];keys2.push(value);if(value.$$is_string){map2=smap2;khash=value}else{map2=_map2;khash=value.$hash()}map2[khash]=key}return result};def.$keep_if=TMP_8=function(){var self=this,$iter=TMP_8.$$p,block=$iter||nil;TMP_8.$$p=null;if(block!==false&&block!==nil){}else{return self.$enum_for("keep_if")}var _map=self.map,smap=self.smap,keys=self.keys,map,key,khash,value,keep;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(key.$$is_string){khash=key;map=smap}else{khash=key.$hash();map=_map}value=map[khash];keep=block(key,value);if(keep===$breaker){return $breaker.$v}if(keep===false||keep===nil){keys.splice(i,1);delete map[khash];length--;i--}}return self};Opal.defn(self,"$key",def.$index);Opal.defn(self,"$key?",def["$has_key?"]);def.$keys=function(){var self=this;return self.keys.slice(0)};def.$length=function(){var self=this;return self.keys.length};Opal.defn(self,"$member?",def["$has_key?"]);def.$merge=TMP_9=function(other){var $a,$b,self=this,$iter=TMP_9.$$p,block=$iter||nil,cloned=nil;TMP_9.$$p=null;if(($a=$scope.get("Hash")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){}else{other=$scope.get("Opal")["$coerce_to!"](other,$scope.get("Hash"),"to_hash")}cloned=self.$clone();($a=($b=cloned)["$merge!"],$a.$$p=block.$to_proc(),$a).call($b,other);return cloned};def["$merge!"]=TMP_10=function(other){var self=this,$iter=TMP_10.$$p,block=$iter||nil;TMP_10.$$p=null;if(!$scope.get("Hash")["$==="](other)){other=$scope.get("Opal")["$coerce_to!"](other,$scope.get("Hash"),"to_hash")}var keys=self.keys,_map=self.map,smap=self.smap,keys2=other.keys,_map2=other.map,smap2=other.smap,map,map2,key,khash,value,value2;if(block===nil){for(var i=0,length=keys2.length;i<length;i++){key=keys2[i];if(key.$$is_string){khash=key;map=smap;map2=smap2}else{khash=key.$hash();map=_map;map2=_map2}if(map[khash]==null){keys.push(key)}map[khash]=map2[khash]}}else{for(var i=0,length=keys2.length;i<length;i++){key=keys2[i];if(key.$$is_string){khash=key;map=smap;map2=smap2}else{khash=key.$hash();map=_map;map2=_map2}value=map[khash];value2=map2[khash];if(value==null){keys.push(key);map[khash]=value2}else{map[khash]=block(key,value,value2)}}}return self};def.$rassoc=function(object){var self=this;var keys=self.keys,_map=self.map,smap=self.smap,key,khash,value;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(key.$$is_string){khash=key;map=smap}else{khash=key.$hash();map=_map}value=map[khash];if(value["$=="](object)){return[key,value]}}return nil};def.$reject=TMP_11=function(){var self=this,$iter=TMP_11.$$p,block=$iter||nil;TMP_11.$$p=null;if(block!==false&&block!==nil){}else{return self.$enum_for("reject")}var keys=self.keys,_map=self.map,smap=self.smap,result=Opal.hash(),_map2=result.map,smap2=result.smap,keys2=result.keys,map,map2,key,khash,object,value;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(key.$$is_string){khash=key;map=smap;map2=smap2}else{khash=key.$hash();map=_map;map2=_map2}object=map[khash];if((value=block(key,object))===$breaker){return $breaker.$v}if(value===false||value===nil){keys2.push(key);map2[khash]=object}}return result};def.$replace=function(other){var self=this;var keys=self.keys=[],_map=self.map={},smap=self.smap={},_map2=other.map,smap2=other.smap,key,khash,map,map2;for(var i=0,length=other.keys.length;i<length;i++){key=other.keys[i];if(key.$$is_string){khash=key;map=smap;map2=smap2}else{khash=key.$hash();map=_map;map2=_map2}keys.push(key);map[khash]=map2[khash]}return self};def.$select=TMP_12=function(){var self=this,$iter=TMP_12.$$p,block=$iter||nil;TMP_12.$$p=null;if(block!==false&&block!==nil){}else{return self.$enum_for("select")}var keys=self.keys,_map=self.map,smap=self.smap,result=Opal.hash(),_map2=result.map,smap2=result.smap,keys2=result.keys,map,map2,key,khash,value,object;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(key.$$is_string){khash=key;map=smap;map2=smap2}else{khash=key.$hash();map=_map;map2=_map2}value=map[khash];object=block(key,value);if(object===$breaker){return $breaker.$v}if(object!==false&&object!==nil){keys2.push(key);map2[khash]=value}}return result};def["$select!"]=TMP_13=function(){var self=this,$iter=TMP_13.$$p,block=$iter||nil;TMP_13.$$p=null;if(block!==false&&block!==nil){}else{return self.$enum_for("select!")}var _map=self.map,smap=self.smap,keys=self.keys,result=nil,key,khash,value,object;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(key.$$is_string){khash=key;map=smap}else{khash=key.$hash();map=_map}value=map[khash];object=block(key,value);if(object===$breaker){return $breaker.$v}if(object===false||object===nil){keys.splice(i,1);delete map[khash];length--;i--;result=self}}return result};def.$shift=function(){var self=this;var keys=self.keys,_map=self.map,smap=self.smap,map,key,khash,value;if(keys.length){key=keys[0];if(key.$$is_string){khash=key;map=smap}else{khash=key.$hash();map=_map}value=map[khash];delete map[khash];keys.splice(0,1);return[key,value]}return nil};Opal.defn(self,"$size",def.$length);self.$alias_method("store","[]=");def.$to_a=function(){var self=this;var keys=self.keys,_map=self.map,smap=self.smap,result=[],map,key;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(key.$$is_string){khash=key;map=smap}else{khash=key.$hash();map=_map}result.push([key,map[khash]])}return result};def.$to_h=function(){var self=this;if(self.$$class===Opal.Hash){return self}var hash=new Opal.Hash.$$alloc,cloned=self.$clone();hash.map=cloned.map;hash.smap=cloned.smap;hash.keys=cloned.keys;hash.none=cloned.none;hash.proc=cloned.proc;return hash};def.$to_hash=function(){var self=this;return self};Opal.defn(self,"$to_s",def.$inspect);Opal.defn(self,"$update",def["$merge!"]);Opal.defn(self,"$value?",def["$has_value?"]);Opal.defn(self,"$values_at",def.$indexes);return(def.$values=function(){var self=this;var _map=self.map,smap=self.smap,keys=self.keys,result=[],map,khash;for(var i=0,length=keys.length;i<length;i++){key=keys[i];if(key.$$is_string){khash=key;map=smap}else{khash=key.$hash();map=_map}result.push(map[khash])}return result},nil)&&"values"}(self,null)};Opal.modules["corelib/string"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$gvars=Opal.gvars;Opal.add_stubs(["$require","$include","$to_str","$===","$format","$coerce_to","$to_s","$respond_to?","$<=>","$raise","$=~","$empty?","$ljust","$ceil","$/","$+","$rjust","$floor","$to_a","$each_char","$to_proc","$coerce_to!","$initialize_clone","$initialize_dup","$enum_for","$split","$chomp","$escape","$class","$to_i","$!","$each_line","$match","$new","$try_convert","$chars","$&","$join","$is_a?","$[]","$str","$value","$proc","$shift","$__send__"]);self.$require("corelib/comparable");(function($base,$super){function $String(){}var self=$String=$klass($base,$super,"String",$String);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6,TMP_7;def.length=nil;self.$include($scope.get("Comparable"));def.$$is_string=true;Opal.defs(self,"$try_convert",function(what){var self=this;try{return what.$to_str()}catch($err){if(true){return nil}else{throw $err}}});Opal.defs(self,"$new",function(str){var self=this;if(str==null){str=""}return new String(str)});def["$%"]=function(data){var $a,self=this;if(($a=$scope.get("Array")["$==="](data))!==nil&&(!$a.$$is_boolean||$a==true)){return($a=self).$format.apply($a,[self].concat(data))}else{return self.$format(self,data)}};def["$*"]=function(count){var self=this;if(count<1){return""}var result="",pattern=self;while(count>0){if(count&1){result+=pattern}count>>=1;pattern+=pattern}return result};def["$+"]=function(other){var self=this;other=$scope.get("Opal").$coerce_to(other,$scope.get("String"),"to_str");return self+other.$to_s()};def["$<=>"]=function(other){var $a,self=this;if(($a=other["$respond_to?"]("to_str"))!==nil&&(!$a.$$is_boolean||$a==true)){other=other.$to_str().$to_s();return self>other?1:self<other?-1:0}else{var cmp=other["$<=>"](self);if(cmp===nil){return nil}else{return cmp>0?-1:cmp<0?1:0}}};def["$<<"]=function(other){var self=this;return self.$raise($scope.get("NotImplementedError"),"#<< not supported. Mutable String methods are not supported in Opal.")};def["$=="]=function(other){var $a,self=this;if(($a=$scope.get("String")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){}else{return false}return self.$to_s()==other.$to_s()};Opal.defn(self,"$eql?",def["$=="]);Opal.defn(self,"$===",def["$=="]);def["$=~"]=function(other){var self=this;if(other.$$is_string){self.$raise($scope.get("TypeError"),"type mismatch: String given")}return other["$=~"](self)};def["$[]"]=function(index,length){var self=this;var size=self.length;if(index.$$is_range){var exclude=index.exclude,length=index.end,index=index.begin;if(index<0){index+=size}if(length<0){length+=size}if(!exclude){length+=1}if(index>size){return nil}length=length-index;if(length<0){length=0}return self.substr(index,length)}if(index<0){index+=self.length}if(length==null){if(index>=self.length||index<0){return nil}return self.substr(index,1)}if(index>self.length||index<0){return nil}return self.substr(index,length)};def.$capitalize=function(){var self=this;return self.charAt(0).toUpperCase()+self.substr(1).toLowerCase()};Opal.defn(self,"$capitalize!",def["$<<"]);def.$casecmp=function(other){var self=this;other=$scope.get("Opal").$coerce_to(other,$scope.get("String"),"to_str").$to_s();return self.toLowerCase()["$<=>"](other.toLowerCase())};def.$center=function(width,padstr){var $a,self=this;if(padstr==null){padstr=" "}width=$scope.get("Opal").$coerce_to(width,$scope.get("Integer"),"to_int");padstr=$scope.get("Opal").$coerce_to(padstr,$scope.get("String"),"to_str").$to_s();if(($a=padstr["$empty?"]())!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"zero width padding")}if(($a=width<=self.length)!==nil&&(!$a.$$is_boolean||$a==true)){return self}var ljustified=self.$ljust(width["$+"](self.length)["$/"](2).$ceil(),padstr),rjustified=self.$rjust(width["$+"](self.length)["$/"](2).$floor(),padstr);return rjustified+ljustified.slice(self.length)};def.$chars=TMP_1=function(){var $a,$b,self=this,$iter=TMP_1.$$p,block=$iter||nil;TMP_1.$$p=null;if(block!==false&&block!==nil){}else{return self.$each_char().$to_a()}return($a=($b=self).$each_char,$a.$$p=block.$to_proc(),$a).call($b)};def.$chomp=function(separator){var $a,self=this;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}if(($a=separator===nil||self.length===0)!==nil&&(!$a.$$is_boolean||$a==true)){return self}separator=$scope.get("Opal")["$coerce_to!"](separator,$scope.get("String"),"to_str").$to_s();if(separator==="\n"){return self.replace(/\r?\n?$/,"")}else if(separator===""){return self.replace(/(\r?\n)+$/,"")}else if(self.length>separator.length){var tail=self.substr(self.length-separator.length,separator.length);if(tail===separator){return self.substr(0,self.length-separator.length)}}return self};Opal.defn(self,"$chomp!",def["$<<"]);def.$chop=function(){var self=this;var length=self.length;if(length<=1){return""}if(self.charAt(length-1)==="\n"&&self.charAt(length-2)==="\r"){return self.substr(0,length-2)}else{return self.substr(0,length-1)}};Opal.defn(self,"$chop!",def["$<<"]);def.$chr=function(){var self=this;return self.charAt(0)};def.$clone=function(){var self=this,copy=nil;copy=self.slice();copy.$initialize_clone(self);return copy};def.$dup=function(){var self=this,copy=nil;copy=self.slice();copy.$initialize_dup(self);return copy};def.$count=function(str){var self=this;return(self.length-self.replace(new RegExp(str,"g"),"").length)/str.length};Opal.defn(self,"$dup",def.$clone);def.$downcase=function(){var self=this;return self.toLowerCase()};Opal.defn(self,"$downcase!",def["$<<"]);def.$each_char=TMP_2=function(){var $a,self=this,$iter=TMP_2.$$p,block=$iter||nil;TMP_2.$$p=null;if(block!==nil){}else{return self.$enum_for("each_char")}for(var i=0,length=self.length;i<length;i++){($a=Opal.yield1(block,self.charAt(i)))===$breaker?$breaker.$v:$a}return self};def.$each_line=TMP_3=function(separator){var $a,self=this,$iter=TMP_3.$$p,$yield=$iter||nil;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}TMP_3.$$p=null;if($yield!==nil){}else{return self.$split(separator)}var chomped=self.$chomp(),trailing=self.length!=chomped.length,splitted=chomped.split(separator);for(var i=0,length=splitted.length;i<length;i++){if(i<length-1||trailing){($a=Opal.yield1($yield,splitted[i]+separator))===$breaker?$breaker.$v:$a}else{($a=Opal.yield1($yield,splitted[i]))===$breaker?$breaker.$v:$a}}return self};def["$empty?"]=function(){var self=this;return self.length===0};def["$end_with?"]=function(suffixes){var self=this;suffixes=$slice.call(arguments,0);for(var i=0,length=suffixes.length;i<length;i++){var suffix=$scope.get("Opal").$coerce_to(suffixes[i],$scope.get("String"),"to_str").$to_s();if(self.length>=suffix.length&&self.substr(self.length-suffix.length,suffix.length)==suffix){return true}}return false};Opal.defn(self,"$eql?",def["$=="]);Opal.defn(self,"$equal?",def["$==="]);def.$gsub=TMP_4=function(pattern,replace){var $a,$b,self=this,$iter=TMP_4.$$p,block=$iter||nil;TMP_4.$$p=null;if(($a=($b=$scope.get("String")["$==="](pattern))!==false&&$b!==nil?$b:pattern["$respond_to?"]("to_str"))!==nil&&(!$a.$$is_boolean||$a==true)){pattern=new RegExp(""+$scope.get("Regexp").$escape(pattern.$to_str()))}if(($a=$scope.get("Regexp")["$==="](pattern))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),"wrong argument type "+pattern.$class()+" (expected Regexp)")}var pattern=pattern.toString(),options=pattern.substr(pattern.lastIndexOf("/")+1)+"g",regexp=pattern.substr(1,pattern.lastIndexOf("/")-1);self.$sub.$$p=block;return self.$sub(new RegExp(regexp,options),replace)};Opal.defn(self,"$gsub!",def["$<<"]);def.$hash=function(){var self=this;return self.toString()};def.$hex=function(){var self=this;return self.$to_i(16)};def["$include?"]=function(other){var $a,self=this;if(other.$$is_string){return self.indexOf(other)!==-1}if(($a=other["$respond_to?"]("to_str"))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),"no implicit conversion of "+other.$class()+" into String")}return self.indexOf(other.$to_str())!==-1};def.$index=function(what,offset){var $a,self=this,result=nil;if(offset==null){offset=nil}if(($a=$scope.get("String")["$==="](what))!==nil&&(!$a.$$is_boolean||$a==true)){what=what.$to_s()}else if(($a=what["$respond_to?"]("to_str"))!==nil&&(!$a.$$is_boolean||$a==true)){what=what.$to_str().$to_s()}else if(($a=$scope.get("Regexp")["$==="](what)["$!"]())!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("TypeError"),"type mismatch: "+what.$class()+" given")}result=-1;if(offset!==false&&offset!==nil){offset=$scope.get("Opal").$coerce_to(offset,$scope.get("Integer"),"to_int");var size=self.length;if(offset<0){offset=offset+size}if(offset>size){return nil}if(($a=$scope.get("Regexp")["$==="](what))!==nil&&(!$a.$$is_boolean||$a==true)){result=($a=what["$=~"](self.substr(offset)))!==false&&$a!==nil?$a:-1}else{result=self.substr(offset).indexOf(what)}if(result!==-1){result+=offset}}else if(($a=$scope.get("Regexp")["$==="](what))!==nil&&(!$a.$$is_boolean||$a==true)){result=($a=what["$=~"](self))!==false&&$a!==nil?$a:-1}else{result=self.indexOf(what)}if(($a=result===-1)!==nil&&(!$a.$$is_boolean||$a==true)){return nil}else{return result}};def.$inspect=function(){var self=this;var escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,meta={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};escapable.lastIndex=0;return escapable.test(self)?'"'+self.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+self+'"'};def.$intern=function(){var self=this;return self};def.$lines=function(separator){var self=this;if($gvars["/"]==null)$gvars["/"]=nil;if(separator==null){separator=$gvars["/"]}return self.$each_line(separator).$to_a()};def.$length=function(){var self=this;return self.length};def.$ljust=function(width,padstr){var $a,self=this;if(padstr==null){padstr=" "}width=$scope.get("Opal").$coerce_to(width,$scope.get("Integer"),"to_int");padstr=$scope.get("Opal").$coerce_to(padstr,$scope.get("String"),"to_str").$to_s();if(($a=padstr["$empty?"]())!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"zero width padding")}if(($a=width<=self.length)!==nil&&(!$a.$$is_boolean||$a==true)){return self}var index=-1,result="";width-=self.length;while(++index<width){result+=padstr}return self+result.slice(0,width)};def.$lstrip=function(){var self=this;return self.replace(/^\s*/,"")};Opal.defn(self,"$lstrip!",def["$<<"]);def.$match=TMP_5=function(pattern,pos){var $a,$b,self=this,$iter=TMP_5.$$p,block=$iter||nil;TMP_5.$$p=null;if(($a=($b=$scope.get("String")["$==="](pattern))!==false&&$b!==nil?$b:pattern["$respond_to?"]("to_str"))!==nil&&(!$a.$$is_boolean||$a==true)){pattern=new RegExp(""+$scope.get("Regexp").$escape(pattern.$to_str()))}if(($a=$scope.get("Regexp")["$==="](pattern))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),"wrong argument type "+pattern.$class()+" (expected Regexp)")}return($a=($b=pattern).$match,$a.$$p=block.$to_proc(),$a).call($b,self,pos)};def.$next=function(){var self=this;if(self.length===0){return""}var initial=self.substr(0,self.length-1);var last=String.fromCharCode(self.charCodeAt(self.length-1)+1);return initial+last};Opal.defn(self,"$next!",def["$<<"]);def.$ord=function(){var self=this;return self.charCodeAt(0)};def.$partition=function(str){var self=this;var result=self.split(str);var splitter=result[0].length===self.length?"":str;return[result[0],splitter,result.slice(1).join(str.toString())]};def.$reverse=function(){var self=this;return self.split("").reverse().join("")};Opal.defn(self,"$reverse!",def["$<<"]);def.$rindex=function(search,offset){var self=this;var search_type=search==null?Opal.NilClass:search.constructor;if(search_type!=String&&search_type!=RegExp){var msg="type mismatch: "+search_type+" given";self.$raise($scope.get("TypeError").$new(msg))}if(self.length==0){return search.length==0?0:nil}var result=-1;if(offset!=null){if(offset<0){offset=self.length+offset}if(search_type==String){result=self.lastIndexOf(search,offset)}else{result=self.substr(0,offset+1).$reverse().search(search);if(result!==-1){result=offset-result}}}else{if(search_type==String){result=self.lastIndexOf(search)}else{result=self.$reverse().search(search);if(result!==-1){result=self.length-1-result}}}return result===-1?nil:result};def.$rjust=function(width,padstr){var $a,self=this;if(padstr==null){padstr=" "}width=$scope.get("Opal").$coerce_to(width,$scope.get("Integer"),"to_int");padstr=$scope.get("Opal").$coerce_to(padstr,$scope.get("String"),"to_str").$to_s();if(($a=padstr["$empty?"]())!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"zero width padding")}if(($a=width<=self.length)!==nil&&(!$a.$$is_boolean||$a==true)){return self}var chars=Math.floor(width-self.length),patterns=Math.floor(chars/padstr.length),result=Array(patterns+1).join(padstr),remaining=chars-result.length;return result+padstr.slice(0,remaining)+self};def.$rstrip=function(){var self=this;return self.replace(/\s*$/,"")};def.$scan=TMP_6=function(pattern){var self=this,$iter=TMP_6.$$p,block=$iter||nil;TMP_6.$$p=null;if(pattern.global){pattern.lastIndex=0}else{pattern=new RegExp(pattern.source,"g"+(pattern.multiline?"m":"")+(pattern.ignoreCase?"i":""))}var result=[];var match;while((match=pattern.exec(self))!=null){var match_data=$scope.get("MatchData").$new(pattern,match);if(block===nil){match.length==1?result.push(match[0]):result.push(match.slice(1))}else{match.length==1?block(match[0]):block.apply(self,match.slice(1))}}return block!==nil?self:result};Opal.defn(self,"$size",def.$length);Opal.defn(self,"$slice",def["$[]"]);Opal.defn(self,"$slice!",def["$<<"]);def.$split=function(pattern,limit){var self=this,$a; | |
if($gvars[";"]==null)$gvars[";"]=nil;if(pattern==null){pattern=($a=$gvars[";"])!==false&&$a!==nil?$a:" "}if(pattern===nil||pattern===undefined){pattern=$gvars[";"]}var result=[];if(limit!==undefined){limit=$scope.get("Opal")["$coerce_to!"](limit,$scope.get("Integer"),"to_int")}if(self.length===0){return[]}if(limit===1){return[self]}if(pattern&&pattern.$$is_regexp){var pattern_str=pattern.toString();var blank_pattern=pattern_str.substr(0,3)=="/^/"||pattern_str.substr(0,6)=="/(?:)/";if(limit===undefined||limit===0){result=self.split(blank_pattern?/(?:)/:pattern)}else{if(!pattern.global){pattern=eval(pattern_str+"g")}var match_data;var prev_index=0;pattern.lastIndex=0;while((match_data=pattern.exec(self))!==null){var segment=self.slice(prev_index,match_data.index);result.push(segment);prev_index=pattern.lastIndex;if(match_data[0].length===0){if(blank_pattern){pattern=/(?:)/}result=self.split(pattern);if(limit!==undefined&&limit<0&&blank_pattern){result.push("")}prev_index=undefined;break}if(limit!==undefined&&limit>1&&result.length+1==limit){break}}if(prev_index!==undefined){result.push(self.slice(prev_index,self.length))}}}else{var splitted=0,start=0,lim=0;if(pattern===nil||pattern===undefined){pattern=" "}else{pattern=$scope.get("Opal").$try_convert(pattern,$scope.get("String"),"to_str").$to_s()}var string=pattern==" "?self.replace(/[\r\n\t\v]\s+/g," "):self;var cursor=-1;while((cursor=string.indexOf(pattern,start))>-1&&cursor<string.length){if(splitted+1===limit){break}if(pattern==" "&&cursor==start){start=cursor+1;continue}result.push(string.substr(start,pattern.length?cursor-start:1));splitted++;start=cursor+(pattern.length?pattern.length:1)}if(string.length>0&&(limit<0||string.length>start)){if(string.length==start){result.push("")}else{result.push(string.substr(start,string.length))}}}if(limit===undefined||limit===0){while(result[result.length-1]===""){result.length=result.length-1}}if(limit>0){var tail=result.slice(limit-1).join("");result.splice(limit-1,result.length-1,tail)}return result};def.$squeeze=function(sets){var self=this;sets=$slice.call(arguments,0);if(sets.length===0){return self.replace(/(.)\1+/g,"$1")}var set=$scope.get("Opal").$coerce_to(sets[0],$scope.get("String"),"to_str").$chars();for(var i=1,length=sets.length;i<length;i++){set=set["$&"]($scope.get("Opal").$coerce_to(sets[i],$scope.get("String"),"to_str").$chars())}if(set.length===0){return self}return self.replace(new RegExp("(["+$scope.get("Regexp").$escape(set.$join())+"])\\1+","g"),"$1")};Opal.defn(self,"$squeeze!",def["$<<"]);def["$start_with?"]=function(prefixes){var self=this;prefixes=$slice.call(arguments,0);for(var i=0,length=prefixes.length;i<length;i++){var prefix=$scope.get("Opal").$coerce_to(prefixes[i],$scope.get("String"),"to_str").$to_s();if(self.indexOf(prefix)===0){return true}}return false};def.$strip=function(){var self=this;return self.replace(/^\s*/,"").replace(/\s*$/,"")};Opal.defn(self,"$strip!",def["$<<"]);function convertReplace(replace){return replace.replace(/(^|[^\\])\\(\d)/g,function(a,b,c){return b+"$"+c}).replace(/(^|[^\\])(\\\\)+\\\\(\d)/g,"$1$2\\$3").replace(/(^|[^\\])(?:(\\)\\)+([^\\]|$)/g,"$1$2$3")}def.$sub=TMP_7=function(pattern,replace){var self=this,$iter=TMP_7.$$p,block=$iter||nil;TMP_7.$$p=null;if(typeof pattern!=="string"&&!pattern.$$is_regexp){pattern=$scope.get("Opal")["$coerce_to!"](pattern,$scope.get("String"),"to_str")}if(replace!==undefined){if(replace["$is_a?"]($scope.get("Hash"))){return self.replace(pattern,function(str){var value=replace["$[]"](self.$str());return value==null?nil:self.$value().$to_s()})}else{if(typeof replace!=="string"){replace=$scope.get("Opal")["$coerce_to!"](replace,$scope.get("String"),"to_str")}replace=convertReplace(replace);return self.replace(pattern,replace)}}else if(block!=null&&block!==nil){return self.replace(pattern,function(){var match_data=[];for(var i=0,len=arguments.length;i<len;i++){var arg=arguments[i];if(arg==undefined){match_data.push(nil)}else{match_data.push(arg)}}var str=match_data.pop();var offset=match_data.pop();var match_len=match_data.length;for(var i=1;i<match_len;i++){Opal.gvars[String(i)]=match_data[i]}$gvars["&"]=match_data[0];$gvars["~"]=match_data;return block(match_data[0])})}else{self.$raise($scope.get("ArgumentError"),"wrong number of arguments (1 for 2)")}};Opal.defn(self,"$sub!",def["$<<"]);Opal.defn(self,"$succ",def.$next);Opal.defn(self,"$succ!",def["$<<"]);def.$sum=function(n){var self=this;if(n==null){n=16}var result=0;for(var i=0,length=self.length;i<length;i++){result+=self.charCodeAt(i)%((1<<n)-1)}return result};def.$swapcase=function(){var self=this;var str=self.replace(/([a-z]+)|([A-Z]+)/g,function($0,$1,$2){return $1?$0.toUpperCase():$0.toLowerCase()});if(self.constructor===String){return str}return self.$class().$new(str)};Opal.defn(self,"$swapcase!",def["$<<"]);def.$to_f=function(){var self=this;if(self.charAt(0)==="_"){return 0}var result=parseFloat(self.replace(/_/g,""));if(isNaN(result)||result==Infinity||result==-Infinity){return 0}else{return result}};def.$to_i=function(base){var self=this;if(base==null){base=10}var result=parseInt(self,base);if(isNaN(result)){return 0}return result};def.$to_proc=function(){var $a,$b,TMP_8,self=this,sym=nil;sym=self;return($a=($b=self).$proc,$a.$$p=(TMP_8=function(args){var self=TMP_8.$$s||this,block,$a,$b,obj=nil;args=$slice.call(arguments,0);block=TMP_8.$$p||nil,TMP_8.$$p=null;if(($a=args["$empty?"]())!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"no receiver given")}obj=args.$shift();return($a=($b=obj).$__send__,$a.$$p=block.$to_proc(),$a).apply($b,[sym].concat(args))},TMP_8.$$s=self,TMP_8),$a).call($b)};def.$to_s=function(){var self=this;return self.toString()};Opal.defn(self,"$to_str",def.$to_s);Opal.defn(self,"$to_sym",def.$intern);def.$tr=function(from,to){var self=this;if(from.length==0||from===to){return self}var subs={};var from_chars=from.split("");var from_length=from_chars.length;var to_chars=to.split("");var to_length=to_chars.length;var inverse=false;var global_sub=null;if(from_chars[0]==="^"){inverse=true;from_chars.shift();global_sub=to_chars[to_length-1];from_length-=1}var from_chars_expanded=[];var last_from=null;var in_range=false;for(var i=0;i<from_length;i++){var ch=from_chars[i];if(last_from==null){last_from=ch;from_chars_expanded.push(ch)}else if(ch==="-"){if(last_from==="-"){from_chars_expanded.push("-");from_chars_expanded.push("-")}else if(i==from_length-1){from_chars_expanded.push("-")}else{in_range=true}}else if(in_range){var start=last_from.charCodeAt(0)+1;var end=ch.charCodeAt(0);for(var c=start;c<end;c++){from_chars_expanded.push(String.fromCharCode(c))}from_chars_expanded.push(ch);in_range=null;last_from=null}else{from_chars_expanded.push(ch)}}from_chars=from_chars_expanded;from_length=from_chars.length;if(inverse){for(var i=0;i<from_length;i++){subs[from_chars[i]]=true}}else{if(to_length>0){var to_chars_expanded=[];var last_to=null;var in_range=false;for(var i=0;i<to_length;i++){var ch=to_chars[i];if(last_from==null){last_from=ch;to_chars_expanded.push(ch)}else if(ch==="-"){if(last_to==="-"){to_chars_expanded.push("-");to_chars_expanded.push("-")}else if(i==to_length-1){to_chars_expanded.push("-")}else{in_range=true}}else if(in_range){var start=last_from.charCodeAt(0)+1;var end=ch.charCodeAt(0);for(var c=start;c<end;c++){to_chars_expanded.push(String.fromCharCode(c))}to_chars_expanded.push(ch);in_range=null;last_from=null}else{to_chars_expanded.push(ch)}}to_chars=to_chars_expanded;to_length=to_chars.length}var length_diff=from_length-to_length;if(length_diff>0){var pad_char=to_length>0?to_chars[to_length-1]:"";for(var i=0;i<length_diff;i++){to_chars.push(pad_char)}}for(var i=0;i<from_length;i++){subs[from_chars[i]]=to_chars[i]}}var new_str="";for(var i=0,length=self.length;i<length;i++){var ch=self.charAt(i);var sub=subs[ch];if(inverse){new_str+=sub==null?global_sub:ch}else{new_str+=sub!=null?sub:ch}}return new_str};Opal.defn(self,"$tr!",def["$<<"]);def.$tr_s=function(from,to){var self=this;if(from.length==0){return self}var subs={};var from_chars=from.split("");var from_length=from_chars.length;var to_chars=to.split("");var to_length=to_chars.length;var inverse=false;var global_sub=null;if(from_chars[0]==="^"){inverse=true;from_chars.shift();global_sub=to_chars[to_length-1];from_length-=1}var from_chars_expanded=[];var last_from=null;var in_range=false;for(var i=0;i<from_length;i++){var ch=from_chars[i];if(last_from==null){last_from=ch;from_chars_expanded.push(ch)}else if(ch==="-"){if(last_from==="-"){from_chars_expanded.push("-");from_chars_expanded.push("-")}else if(i==from_length-1){from_chars_expanded.push("-")}else{in_range=true}}else if(in_range){var start=last_from.charCodeAt(0)+1;var end=ch.charCodeAt(0);for(var c=start;c<end;c++){from_chars_expanded.push(String.fromCharCode(c))}from_chars_expanded.push(ch);in_range=null;last_from=null}else{from_chars_expanded.push(ch)}}from_chars=from_chars_expanded;from_length=from_chars.length;if(inverse){for(var i=0;i<from_length;i++){subs[from_chars[i]]=true}}else{if(to_length>0){var to_chars_expanded=[];var last_to=null;var in_range=false;for(var i=0;i<to_length;i++){var ch=to_chars[i];if(last_from==null){last_from=ch;to_chars_expanded.push(ch)}else if(ch==="-"){if(last_to==="-"){to_chars_expanded.push("-");to_chars_expanded.push("-")}else if(i==to_length-1){to_chars_expanded.push("-")}else{in_range=true}}else if(in_range){var start=last_from.charCodeAt(0)+1;var end=ch.charCodeAt(0);for(var c=start;c<end;c++){to_chars_expanded.push(String.fromCharCode(c))}to_chars_expanded.push(ch);in_range=null;last_from=null}else{to_chars_expanded.push(ch)}}to_chars=to_chars_expanded;to_length=to_chars.length}var length_diff=from_length-to_length;if(length_diff>0){var pad_char=to_length>0?to_chars[to_length-1]:"";for(var i=0;i<length_diff;i++){to_chars.push(pad_char)}}for(var i=0;i<from_length;i++){subs[from_chars[i]]=to_chars[i]}}var new_str="";var last_substitute=null;for(var i=0,length=self.length;i<length;i++){var ch=self.charAt(i);var sub=subs[ch];if(inverse){if(sub==null){if(last_substitute==null){new_str+=global_sub;last_substitute=true}}else{new_str+=ch;last_substitute=null}}else{if(sub!=null){if(last_substitute==null||last_substitute!==sub){new_str+=sub;last_substitute=sub}}else{new_str+=ch;last_substitute=null}}}return new_str};Opal.defn(self,"$tr_s!",def["$<<"]);def.$upcase=function(){var self=this;return self.toUpperCase()};Opal.defn(self,"$upcase!",def["$<<"]);def.$freeze=function(){var self=this;return self};return(def["$frozen?"]=function(){var self=this;return true},nil)&&"frozen?"})(self,null);return Opal.cdecl($scope,"Symbol",$scope.get("String"))};Opal.modules["corelib/string/inheritance"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$new","$allocate","$initialize","$to_proc","$__send__","$class","$clone","$respond_to?","$==","$inspect"]);(function($base,$super){function $String(){}var self=$String=$klass($base,$super,"String",$String);var def=self.$$proto,$scope=self.$$scope;return(Opal.defs(self,"$inherited",function(klass){var self=this,replace=nil;replace=$scope.get("Class").$new($scope.get("String").$$scope.get("Wrapper"));klass.$$proto=replace.$$proto;klass.$$proto.$$class=klass;klass.$$alloc=replace.$$alloc;klass.$$parent=$scope.get("String").$$scope.get("Wrapper");klass.$allocate=replace.$allocate;klass.$new=replace.$new}),nil)&&"inherited"})(self,null);return function($base,$super){function $Wrapper(){}var self=$Wrapper=$klass($base,$super,"Wrapper",$Wrapper);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4;def.literal=nil;Opal.defs(self,"$allocate",TMP_1=function(string){var self=this,$iter=TMP_1.$$p,$yield=$iter||nil,obj=nil;if(string==null){string=""}TMP_1.$$p=null;obj=Opal.find_super_dispatcher(self,"allocate",TMP_1,null,$Wrapper).apply(self,[]);obj.literal=string;return obj});Opal.defs(self,"$new",TMP_2=function(args){var $a,$b,self=this,$iter=TMP_2.$$p,block=$iter||nil,obj=nil;args=$slice.call(arguments,0);TMP_2.$$p=null;obj=self.$allocate();($a=($b=obj).$initialize,$a.$$p=block.$to_proc(),$a).apply($b,[].concat(args));return obj});Opal.defs(self,"$[]",function(objects){var self=this;objects=$slice.call(arguments,0);return self.$allocate(objects)});def.$initialize=function(string){var self=this;if(string==null){string=""}return self.literal=string};def.$method_missing=TMP_3=function(args){var $a,$b,self=this,$iter=TMP_3.$$p,block=$iter||nil,result=nil;args=$slice.call(arguments,0);TMP_3.$$p=null;result=($a=($b=self.literal).$__send__,$a.$$p=block.$to_proc(),$a).apply($b,[].concat(args));if(($a=result.$$is_string!=null)!==nil&&(!$a.$$is_boolean||$a==true)){if(($a=result==self.literal)!==nil&&(!$a.$$is_boolean||$a==true)){return self}else{return self.$class().$allocate(result)}}else{return result}};def.$initialize_copy=function(other){var self=this;return self.literal=other.literal.$clone()};def["$respond_to?"]=TMP_4=function(name){var $zuper=$slice.call(arguments,0);var $a,self=this,$iter=TMP_4.$$p,$yield=$iter||nil;TMP_4.$$p=null;return($a=Opal.find_super_dispatcher(self,"respond_to?",TMP_4,$iter).apply(self,$zuper))!==false&&$a!==nil?$a:self.literal["$respond_to?"](name)};def["$=="]=function(other){var self=this;return self.literal["$=="](other)};Opal.defn(self,"$eql?",def["$=="]);Opal.defn(self,"$===",def["$=="]);def.$to_s=function(){var self=this;return self.literal};def.$to_str=function(){var self=this;return self};return(def.$inspect=function(){var self=this;return self.literal.$inspect()},nil)&&"inspect"}($scope.get("String"),null)};Opal.modules["corelib/match_data"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$gvars=Opal.gvars;Opal.add_stubs(["$attr_reader","$[]","$===","$!","$==","$raise","$inspect"]);return function($base,$super){function $MatchData(){}var self=$MatchData=$klass($base,$super,"MatchData",$MatchData);var def=self.$$proto,$scope=self.$$scope;def.string=def.matches=def.begin=nil;self.$attr_reader("post_match","pre_match","regexp","string");def.$initialize=function(regexp,match_groups){var self=this;$gvars["~"]=self;self.regexp=regexp;self.begin=match_groups.index;self.string=match_groups.input;self.pre_match=self.string.substr(0,regexp.lastIndex-match_groups[0].length);self.post_match=self.string.substr(regexp.lastIndex);self.matches=[];for(var i=0,length=match_groups.length;i<length;i++){var group=match_groups[i];if(group==null){self.matches.push(nil)}else{self.matches.push(group)}}};def["$[]"]=function(args){var $a,self=this;args=$slice.call(arguments,0);return($a=self.matches)["$[]"].apply($a,[].concat(args))};def["$=="]=function(other){var $a,$b,$c,$d,self=this;if(($a=$scope.get("MatchData")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){}else{return false}return $a=($b=($c=($d=self.string==other.string,$d!==false&&$d!==nil?self.regexp==other.regexp:$d),$c!==false&&$c!==nil?self.pre_match==other.pre_match:$c),$b!==false&&$b!==nil?self.post_match==other.post_match:$b),$a!==false&&$a!==nil?self.begin==other.begin:$a};def.$begin=function(pos){var $a,$b,self=this;if(($a=($b=pos["$=="](0)["$!"](),$b!==false&&$b!==nil?pos["$=="](1)["$!"]():$b))!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"MatchData#begin only supports 0th element")}return self.begin};def.$captures=function(){var self=this;return self.matches.slice(1)};def.$inspect=function(){var self=this;var str="#<MatchData "+self.matches[0].$inspect();for(var i=1,length=self.matches.length;i<length;i++){str+=" "+i+":"+self.matches[i].$inspect()}return str+">"};def.$length=function(){var self=this;return self.matches.length};Opal.defn(self,"$size",def.$length);def.$to_a=function(){var self=this;return self.matches};def.$to_s=function(){var self=this;return self.matches[0]};return(def.$values_at=function(indexes){var self=this;indexes=$slice.call(arguments,0);var values=[],match_length=self.matches.length;for(var i=0,length=indexes.length;i<length;i++){var pos=indexes[i];if(pos>=0){values.push(self.matches[pos])}else{pos+=match_length;if(pos>0){values.push(self.matches[pos])}else{values.push(nil)}}}return values},nil)&&"values_at"}(self,null)};Opal.modules["corelib/numeric"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$require","$include","$coerce","$===","$raise","$class","$__send__","$send_coerced","$coerce_to!","$-@","$**","$-","$respond_to?","$==","$enum_for","$gcd","$lcm","$<","$>","$floor","$/","$%"]);self.$require("corelib/comparable");(function($base,$super){function $Numeric(){}var self=$Numeric=$klass($base,$super,"Numeric",$Numeric);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3,TMP_4,TMP_5,TMP_6;self.$include($scope.get("Comparable"));def.$$is_number=true;def.$coerce=function(other,type){var self=this,$case=nil;if(type==null){type="operation"}try{if(other.$$is_number){return[self,other]}else{return other.$coerce(self)}}catch($err){if(true){return function(){$case=type;if("operation"["$==="]($case)){return self.$raise($scope.get("TypeError"),""+other.$class()+" can't be coerced into Numeric")}else if("comparison"["$==="]($case)){return self.$raise($scope.get("ArgumentError"),"comparison of "+self.$class()+" with "+other.$class()+" failed")}else{return nil}}()}else{throw $err}}};def.$send_coerced=function(method,other){var $a,self=this,type=nil,$case=nil,a=nil,b=nil;type=function(){$case=method;if("+"["$==="]($case)||"-"["$==="]($case)||"*"["$==="]($case)||"/"["$==="]($case)||"%"["$==="]($case)||"&"["$==="]($case)||"|"["$==="]($case)||"^"["$==="]($case)||"**"["$==="]($case)){return"operation"}else if(">"["$==="]($case)||">="["$==="]($case)||"<"["$==="]($case)||"<="["$==="]($case)||"<=>"["$==="]($case)){return"comparison"}else{return nil}}();$a=Opal.to_ary(self.$coerce(other,type)),a=$a[0]==null?nil:$a[0],b=$a[1]==null?nil:$a[1];return a.$__send__(method,b)};def["$+"]=function(other){var self=this;if(other.$$is_number){return self+other}else{return self.$send_coerced("+",other)}};def["$-"]=function(other){var self=this;if(other.$$is_number){return self-other}else{return self.$send_coerced("-",other)}};def["$*"]=function(other){var self=this;if(other.$$is_number){return self*other}else{return self.$send_coerced("*",other)}};def["$/"]=function(other){var self=this;if(other.$$is_number){return self/other}else{return self.$send_coerced("/",other)}};def["$%"]=function(other){var self=this;if(other.$$is_number){if(other<0||self<0){return(self%other+other)%other}else{return self%other}}else{return self.$send_coerced("%",other)}};def["$&"]=function(other){var self=this;if(other.$$is_number){return self&other}else{return self.$send_coerced("&",other)}};def["$|"]=function(other){var self=this;if(other.$$is_number){return self|other}else{return self.$send_coerced("|",other)}};def["$^"]=function(other){var self=this;if(other.$$is_number){return self^other}else{return self.$send_coerced("^",other)}};def["$<"]=function(other){var self=this;if(other.$$is_number){return self<other}else{return self.$send_coerced("<",other)}};def["$<="]=function(other){var self=this;if(other.$$is_number){return self<=other}else{return self.$send_coerced("<=",other)}};def["$>"]=function(other){var self=this;if(other.$$is_number){return self>other}else{return self.$send_coerced(">",other)}};def["$>="]=function(other){var self=this;if(other.$$is_number){return self>=other}else{return self.$send_coerced(">=",other)}};def["$<=>"]=function(other){var self=this;try{if(other.$$is_number){return self>other?1:self<other?-1:0}else{return self.$send_coerced("<=>",other)}}catch($err){if(Opal.rescue($err,[$scope.get("ArgumentError")])){return nil}else{throw $err}}};def["$<<"]=function(count){var self=this;count=$scope.get("Opal")["$coerce_to!"](count,$scope.get("Integer"),"to_int");return count>0?self<<count:self>>-count};def["$>>"]=function(count){var self=this;count=$scope.get("Opal")["$coerce_to!"](count,$scope.get("Integer"),"to_int");return count>0?self>>count:self<<-count};def["$[]"]=function(bit){var self=this,min=nil,max=nil;bit=$scope.get("Opal")["$coerce_to!"](bit,$scope.get("Integer"),"to_int");min=2["$**"](30)["$-@"]();max=2["$**"](30)["$-"](1);return bit<min||bit>max?0:(self>>bit)%2};def["$+@"]=function(){var self=this;return+self};def["$-@"]=function(){var self=this;return-self};def["$~"]=function(){var self=this;return~self};def["$**"]=function(other){var self=this;if(other.$$is_number){return Math.pow(self,other)}else{return self.$send_coerced("**",other)}};def["$=="]=function(other){var self=this;if(other.$$is_number){return self==Number(other)}else if(other["$respond_to?"]("==")){return other["$=="](self)}else{return false}};def.$abs=function(){var self=this;return Math.abs(self)};def.$ceil=function(){var self=this;return Math.ceil(self)};def.$chr=function(encoding){var self=this;return String.fromCharCode(self)};def.$conj=function(){var self=this;return self};Opal.defn(self,"$conjugate",def.$conj);def.$downto=TMP_1=function(finish){var self=this,$iter=TMP_1.$$p,block=$iter||nil;TMP_1.$$p=null;if(block!==false&&block!==nil){}else{return self.$enum_for("downto",finish)}for(var i=self;i>=finish;i--){if(block(i)===$breaker){return $breaker.$v}}return self};Opal.defn(self,"$eql?",def["$=="]);Opal.defn(self,"$equal?",def["$=="]);def["$even?"]=function(){var self=this;return self%2===0};def.$floor=function(){var self=this;return Math.floor(self)};def.$gcd=function(other){var $a,self=this;if(($a=$scope.get("Integer")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),"not an integer")}var min=Math.abs(self),max=Math.abs(other);while(min>0){var tmp=min;min=max%min;max=tmp}return max};def.$gcdlcm=function(other){var self=this;return[self.$gcd(),self.$lcm()]};def.$hash=function(){var self=this;return"Numeric:"+self.toString()};def["$integer?"]=function(){var self=this;return self%1===0};def["$is_a?"]=TMP_2=function(klass){var $zuper=$slice.call(arguments,0);var $a,$b,self=this,$iter=TMP_2.$$p,$yield=$iter||nil;TMP_2.$$p=null;if(($a=($b=klass["$=="]($scope.get("Fixnum")))?$scope.get("Integer")["$==="](self):$b)!==nil&&(!$a.$$is_boolean||$a==true)){return true}if(($a=($b=klass["$=="]($scope.get("Integer")))?$scope.get("Integer")["$==="](self):$b)!==nil&&(!$a.$$is_boolean||$a==true)){return true}if(($a=($b=klass["$=="]($scope.get("Float")))?$scope.get("Float")["$==="](self):$b)!==nil&&(!$a.$$is_boolean||$a==true)){return true}return Opal.find_super_dispatcher(self,"is_a?",TMP_2,$iter).apply(self,$zuper)};Opal.defn(self,"$kind_of?",def["$is_a?"]);def["$instance_of?"]=TMP_3=function(klass){var $zuper=$slice.call(arguments,0);var $a,$b,self=this,$iter=TMP_3.$$p,$yield=$iter||nil;TMP_3.$$p=null;if(($a=($b=klass["$=="]($scope.get("Fixnum")))?$scope.get("Integer")["$==="](self):$b)!==nil&&(!$a.$$is_boolean||$a==true)){return true}if(($a=($b=klass["$=="]($scope.get("Integer")))?$scope.get("Integer")["$==="](self):$b)!==nil&&(!$a.$$is_boolean||$a==true)){return true}if(($a=($b=klass["$=="]($scope.get("Float")))?$scope.get("Float")["$==="](self):$b)!==nil&&(!$a.$$is_boolean||$a==true)){return true}return Opal.find_super_dispatcher(self,"instance_of?",TMP_3,$iter).apply(self,$zuper)};def.$lcm=function(other){var $a,self=this;if(($a=$scope.get("Integer")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("TypeError"),"not an integer")}if(self==0||other==0){return 0}else{return Math.abs(self*other/self.$gcd(other))}};Opal.defn(self,"$magnitude",def.$abs);Opal.defn(self,"$modulo",def["$%"]);def.$next=function(){var self=this;return self+1};def["$nonzero?"]=function(){var self=this;return self==0?nil:self};def["$odd?"]=function(){var self=this;return self%2!==0};def.$ord=function(){var self=this;return self};def.$pred=function(){var self=this;return self-1};def.$round=function(ndigits){var self=this;if(ndigits==null){ndigits=0}var scale=Math.pow(10,ndigits);return Math.round(self*scale)/scale};def.$step=TMP_4=function(limit,step){var $a,self=this,$iter=TMP_4.$$p,block=$iter||nil;if(step==null){step=1}TMP_4.$$p=null;if(block!==false&&block!==nil){}else{return self.$enum_for("step",limit,step)}if(($a=step==0)!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"step cannot be 0")}var value=self;if(step>0){while(value<=limit){block(value);value+=step}}else{while(value>=limit){block(value);value+=step}}return self};Opal.defn(self,"$succ",def.$next);def.$times=TMP_5=function(){var self=this,$iter=TMP_5.$$p,block=$iter||nil;TMP_5.$$p=null;if(block!==false&&block!==nil){}else{return self.$enum_for("times")}for(var i=0;i<self;i++){if(block(i)===$breaker){return $breaker.$v}}return self};def.$to_f=function(){var self=this;return self};def.$to_i=function(){var self=this;return parseInt(self)};Opal.defn(self,"$to_int",def.$to_i);def.$to_s=function(base){var $a,$b,self=this;if(base==null){base=10}if(($a=($b=base["$<"](2))!==false&&$b!==nil?$b:base["$>"](36))!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("ArgumentError"),"base must be between 2 and 36")}return self.toString(base)};Opal.defn(self,"$inspect",def.$to_s);def.$divmod=function(rhs){var self=this,q=nil,r=nil;q=self["$/"](rhs).$floor();r=self["$%"](rhs);return[q,r]};def.$upto=TMP_6=function(finish){var self=this,$iter=TMP_6.$$p,block=$iter||nil;TMP_6.$$p=null;if(block!==false&&block!==nil){}else{return self.$enum_for("upto",finish)}for(var i=self;i<=finish;i++){if(block(i)===$breaker){return $breaker.$v}}return self};def["$zero?"]=function(){var self=this;return self==0};def.$size=function(){var self=this;return 4};def["$nan?"]=function(){var self=this;return isNaN(self)};def["$finite?"]=function(){var self=this;return self!=Infinity&&self!=-Infinity};def["$infinite?"]=function(){var self=this;if(self==Infinity){return+1}else if(self==-Infinity){return-1}else{return nil}};def["$positive?"]=function(){var self=this;return 1/self>0};return(def["$negative?"]=function(){var self=this;return 1/self<0},nil)&&"negative?"})(self,null);Opal.cdecl($scope,"Fixnum",$scope.get("Numeric"));(function($base,$super){function $Integer(){}var self=$Integer=$klass($base,$super,"Integer",$Integer);var def=self.$$proto,$scope=self.$$scope;return(Opal.defs(self,"$===",function(other){var self=this;if(!other.$$is_number){return false}return other%1===0}),nil)&&"==="})(self,$scope.get("Numeric"));return function($base,$super){function $Float(){}var self=$Float=$klass($base,$super,"Float",$Float);var def=self.$$proto,$scope=self.$$scope,$a;Opal.defs(self,"$===",function(other){var self=this;return!!other.$$is_number});Opal.cdecl($scope,"INFINITY",Infinity);Opal.cdecl($scope,"NAN",NaN);if(($a=typeof Number.EPSILON!=="undefined")!==nil&&(!$a.$$is_boolean||$a==true)){return Opal.cdecl($scope,"EPSILON",Number.EPSILON)}else{return Opal.cdecl($scope,"EPSILON",2.220446049250313e-16)}}(self,$scope.get("Numeric"))};Opal.modules["corelib/complex"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;return function($base,$super){function $Complex(){}var self=$Complex=$klass($base,$super,"Complex",$Complex);var def=self.$$proto,$scope=self.$$scope;return nil}(self,$scope.get("Numeric"))};Opal.modules["corelib/rational"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;return function($base,$super){function $Rational(){}var self=$Rational=$klass($base,$super,"Rational",$Rational);var def=self.$$proto,$scope=self.$$scope;return nil}(self,$scope.get("Numeric"))};Opal.modules["corelib/proc"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$raise"]);return function($base,$super){function $Proc(){}var self=$Proc=$klass($base,$super,"Proc",$Proc);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2;def.$$is_proc=true;def.$$is_lambda=false;Opal.defs(self,"$new",TMP_1=function(){var self=this,$iter=TMP_1.$$p,block=$iter||nil;TMP_1.$$p=null;if(block!==false&&block!==nil){}else{self.$raise($scope.get("ArgumentError"),"tried to create a Proc object without a block")}return block});def.$call=TMP_2=function(args){var self=this,$iter=TMP_2.$$p,block=$iter||nil;args=$slice.call(arguments,0);TMP_2.$$p=null;if(block!==nil){self.$$p=block}var result;if(self.$$is_lambda){result=self.apply(null,args)}else{result=Opal.yieldX(self,args)}if(result===$breaker){return $breaker.$v}return result};Opal.defn(self,"$[]",def.$call);def.$to_proc=function(){var self=this;return self};def["$lambda?"]=function(){var self=this;return!!self.$$is_lambda};return(def.$arity=function(){var self=this;return self.length},nil)&&"arity"}(self,null)};Opal.modules["corelib/method"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$attr_reader","$class","$arity","$new","$name"]);(function($base,$super){function $Method(){}var self=$Method=$klass($base,$super,"Method",$Method);var def=self.$$proto,$scope=self.$$scope,TMP_1;def.method=def.receiver=def.owner=def.name=def.obj=nil;self.$attr_reader("owner","receiver","name");def.$initialize=function(receiver,method,name){var self=this;self.receiver=receiver;self.owner=receiver.$class();self.name=name;return self.method=method};def.$arity=function(){var self=this;return self.method.$arity()};def.$call=TMP_1=function(args){var self=this,$iter=TMP_1.$$p,block=$iter||nil;args=$slice.call(arguments,0);TMP_1.$$p=null;self.method.$$p=block;return self.method.apply(self.receiver,args)};Opal.defn(self,"$[]",def.$call);def.$unbind=function(){var self=this;return $scope.get("UnboundMethod").$new(self.owner,self.method,self.name)};def.$to_proc=function(){var self=this;return self.method};return(def.$inspect=function(){var self=this;return"#<Method: "+self.obj.$class()+"#"+self.name+"}>"},nil)&&"inspect"})(self,null);return function($base,$super){function $UnboundMethod(){}var self=$UnboundMethod=$klass($base,$super,"UnboundMethod",$UnboundMethod);var def=self.$$proto,$scope=self.$$scope;def.method=def.name=def.owner=nil;self.$attr_reader("owner","name");def.$initialize=function(owner,method,name){var self=this;self.owner=owner;self.method=method;return self.name=name};def.$arity=function(){var self=this;return self.method.$arity()};def.$bind=function(object){var self=this;return $scope.get("Method").$new(object,self.method,self.name)};return(def.$inspect=function(){var self=this;return"#<UnboundMethod: "+self.owner.$name()+"#"+self.name+">"},nil)&&"inspect"}(self,null)};Opal.modules["corelib/range"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$require","$include","$attr_reader","$<=>","$raise","$include?","$<=","$<","$enum_for","$succ","$!","$==","$===","$exclude_end?","$eql?","$begin","$end","$-","$abs","$to_i","$inspect"]);self.$require("corelib/enumerable");return function($base,$super){function $Range(){}var self=$Range=$klass($base,$super,"Range",$Range);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_2,TMP_3;def.begin=def.exclude=def.end=nil;self.$include($scope.get("Enumerable"));def.$$is_range=true;self.$attr_reader("begin","end");def.$initialize=function(first,last,exclude){var $a,self=this;if(exclude==null){exclude=false}if(($a=first["$<=>"](last))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"))}self.begin=first;self.end=last;return self.exclude=exclude; | |
};def["$=="]=function(other){var self=this;if(!other.$$is_range){return false}return self.exclude===other.exclude&&self.begin==other.begin&&self.end==other.end};def["$==="]=function(value){var self=this;return self["$include?"](value)};def["$cover?"]=function(value){var $a,$b,self=this;return($a=self.begin["$<="](value))?function(){if(($b=self.exclude)!==nil&&(!$b.$$is_boolean||$b==true)){return value["$<"](self.end)}else{return value["$<="](self.end)}return nil}():$a};def.$each=TMP_1=function(){var $a,$b,self=this,$iter=TMP_1.$$p,block=$iter||nil,current=nil,last=nil;TMP_1.$$p=null;if(block!==nil){}else{return self.$enum_for("each")}current=self.begin;last=self.end;while(current["$<"](last)){if(Opal.yield1(block,current)===$breaker)return $breaker.$v;current=current.$succ()}if(($a=($b=self.exclude["$!"](),$b!==false&&$b!==nil?current["$=="](last):$b))!==nil&&(!$a.$$is_boolean||$a==true)){if(Opal.yield1(block,current)===$breaker)return $breaker.$v}return self};def["$eql?"]=function(other){var $a,$b,self=this;if(($a=$scope.get("Range")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){}else{return false}return $a=($b=self.exclude["$==="](other["$exclude_end?"]()),$b!==false&&$b!==nil?self.begin["$eql?"](other.$begin()):$b),$a!==false&&$a!==nil?self.end["$eql?"](other.$end()):$a};def["$exclude_end?"]=function(){var self=this;return self.exclude};Opal.defn(self,"$first",def.$begin);Opal.defn(self,"$include?",def["$cover?"]);Opal.defn(self,"$last",def.$end);def.$max=TMP_2=function(){var $zuper=$slice.call(arguments,0);var self=this,$iter=TMP_2.$$p,$yield=$iter||nil;TMP_2.$$p=null;if($yield!==nil){return Opal.find_super_dispatcher(self,"max",TMP_2,$iter).apply(self,$zuper)}else{return self.exclude?self.end-1:self.end}};Opal.defn(self,"$member?",def["$cover?"]);def.$min=TMP_3=function(){var $zuper=$slice.call(arguments,0);var self=this,$iter=TMP_3.$$p,$yield=$iter||nil;TMP_3.$$p=null;if($yield!==nil){return Opal.find_super_dispatcher(self,"min",TMP_3,$iter).apply(self,$zuper)}else{return self.begin}};Opal.defn(self,"$member?",def["$include?"]);def.$size=function(){var $a,$b,self=this,_begin=nil,_end=nil,infinity=nil;_begin=self.begin;_end=self.end;if(($a=self.exclude)!==nil&&(!$a.$$is_boolean||$a==true)){_end=_end["$-"](1)}if(($a=($b=$scope.get("Numeric")["$==="](_begin),$b!==false&&$b!==nil?$scope.get("Numeric")["$==="](_end):$b))!==nil&&(!$a.$$is_boolean||$a==true)){}else{return nil}if(_end["$<"](_begin)){return 0}infinity=$scope.get("Float").$$scope.get("INFINITY");if(($a=($b=infinity["$=="](_begin.$abs()))!==false&&$b!==nil?$b:_end.$abs()["$=="](infinity))!==nil&&(!$a.$$is_boolean||$a==true)){return infinity}return(Math.abs(_end-_begin)+1).$to_i()};def.$step=function(n){var self=this;if(n==null){n=1}return self.$raise($scope.get("NotImplementedError"))};def.$to_s=function(){var self=this;return self.begin.$inspect()+(self.exclude?"...":"..")+self.end.$inspect()};return Opal.defn(self,"$inspect",def.$to_s)}(self,null)};Opal.modules["corelib/time"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$range=Opal.range;Opal.add_stubs(["$require","$include","$kind_of?","$to_i","$coerce_to","$between?","$raise","$new","$compact","$nil?","$===","$<=>","$to_f","$strftime","$is_a?","$zero?","$wday","$utc?","$warn","$year","$mon","$day","$yday","$hour","$min","$sec","$rjust","$ljust","$zone","$to_s","$[]","$cweek_cyear","$month","$isdst","$private","$<=","$!","$==","$-","$ceil","$/","$+"]);self.$require("corelib/comparable");return function($base,$super){function $Time(){}var self=$Time=$klass($base,$super,"Time",$Time);var def=self.$$proto,$scope=self.$$scope;def.tz_offset=nil;self.$include($scope.get("Comparable"));var days_of_week=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],short_days=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],short_months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],long_months=["January","February","March","April","May","June","July","August","September","October","November","December"];Opal.defs(self,"$at",function(seconds,frac){var self=this;if(frac==null){frac=0}return new Date(seconds*1e3+frac)});Opal.defs(self,"$new",function(year,month,day,hour,minute,second,utc_offset){var self=this;switch(arguments.length){case 1:return new Date(year,0);case 2:return new Date(year,month-1);case 3:return new Date(year,month-1,day);case 4:return new Date(year,month-1,day,hour);case 5:return new Date(year,month-1,day,hour,minute);case 6:return new Date(year,month-1,day,hour,minute,second);case 7:return new Date(year,month-1,day,hour,minute,second);default:return new Date}});Opal.defs(self,"$local",function(year,month,day,hour,minute,second,millisecond){var $a,self=this;if(month==null){month=nil}if(day==null){day=nil}if(hour==null){hour=nil}if(minute==null){minute=nil}if(second==null){second=nil}if(millisecond==null){millisecond=nil}if(($a=arguments.length===10)!==nil&&(!$a.$$is_boolean||$a==true)){var args=$slice.call(arguments).reverse();second=args[9];minute=args[8];hour=args[7];day=args[6];month=args[5];year=args[4]}year=function(){if(($a=year["$kind_of?"]($scope.get("String")))!==nil&&(!$a.$$is_boolean||$a==true)){return year.$to_i()}else{return $scope.get("Opal").$coerce_to(year,$scope.get("Integer"),"to_int")}return nil}();month=function(){if(($a=month["$kind_of?"]($scope.get("String")))!==nil&&(!$a.$$is_boolean||$a==true)){return month.$to_i()}else{return $scope.get("Opal").$coerce_to(($a=month)!==false&&$a!==nil?$a:1,$scope.get("Integer"),"to_int")}return nil}();if(($a=month["$between?"](1,12))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"month out of range: "+month)}day=function(){if(($a=day["$kind_of?"]($scope.get("String")))!==nil&&(!$a.$$is_boolean||$a==true)){return day.$to_i()}else{return $scope.get("Opal").$coerce_to(($a=day)!==false&&$a!==nil?$a:1,$scope.get("Integer"),"to_int")}return nil}();if(($a=day["$between?"](1,31))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"day out of range: "+day)}hour=function(){if(($a=hour["$kind_of?"]($scope.get("String")))!==nil&&(!$a.$$is_boolean||$a==true)){return hour.$to_i()}else{return $scope.get("Opal").$coerce_to(($a=hour)!==false&&$a!==nil?$a:0,$scope.get("Integer"),"to_int")}return nil}();if(($a=hour["$between?"](0,24))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"hour out of range: "+hour)}minute=function(){if(($a=minute["$kind_of?"]($scope.get("String")))!==nil&&(!$a.$$is_boolean||$a==true)){return minute.$to_i()}else{return $scope.get("Opal").$coerce_to(($a=minute)!==false&&$a!==nil?$a:0,$scope.get("Integer"),"to_int")}return nil}();if(($a=minute["$between?"](0,59))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"minute out of range: "+minute)}second=function(){if(($a=second["$kind_of?"]($scope.get("String")))!==nil&&(!$a.$$is_boolean||$a==true)){return second.$to_i()}else{return $scope.get("Opal").$coerce_to(($a=second)!==false&&$a!==nil?$a:0,$scope.get("Integer"),"to_int")}return nil}();if(($a=second["$between?"](0,59))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("ArgumentError"),"second out of range: "+second)}return($a=self).$new.apply($a,[].concat([year,month,day,hour,minute,second].$compact()))});Opal.defs(self,"$gm",function(year,month,day,hour,minute,second,utc_offset){var $a,self=this;if(($a=year["$nil?"]())!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("TypeError"),"missing year (got nil)")}if(month>12||day>31||hour>24||minute>59||second>59){self.$raise($scope.get("ArgumentError"))}var date=new Date(Date.UTC(year,(month||1)-1,day||1,hour||0,minute||0,second||0));date.tz_offset=0;return date});(function(self){var $scope=self.$$scope,def=self.$$proto;self.$$proto.$mktime=self.$$proto.$local;return self.$$proto.$utc=self.$$proto.$gm})(self.$singleton_class());Opal.defs(self,"$now",function(){var self=this;return new Date});def["$+"]=function(other){var $a,self=this;if(($a=$scope.get("Time")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){self.$raise($scope.get("TypeError"),"time + time?")}other=$scope.get("Opal").$coerce_to(other,$scope.get("Integer"),"to_int");var result=new Date(self.getTime()+other*1e3);result.tz_offset=self.tz_offset;return result};def["$-"]=function(other){var $a,self=this;if(($a=$scope.get("Time")["$==="](other))!==nil&&(!$a.$$is_boolean||$a==true)){return(self.getTime()-other.getTime())/1e3}other=$scope.get("Opal").$coerce_to(other,$scope.get("Integer"),"to_int");var result=new Date(self.getTime()-other*1e3);result.tz_offset=self.tz_offset;return result};def["$<=>"]=function(other){var self=this;return self.$to_f()["$<=>"](other.$to_f())};def["$=="]=function(other){var self=this;return self.$to_f()===other.$to_f()};def.$asctime=function(){var self=this;return self.$strftime("%a %b %e %H:%M:%S %Y")};Opal.defn(self,"$ctime",def.$asctime);def.$day=function(){var self=this;if(self.tz_offset===0){return self.getUTCDate()}else{return self.getDate()}};def.$yday=function(){var self=this;var onejan=new Date(self.getFullYear(),0,1);return Math.ceil((self-onejan)/864e5)};def.$isdst=function(){var self=this;return self.$raise($scope.get("NotImplementedError"))};def["$eql?"]=function(other){var $a,self=this;return $a=other["$is_a?"]($scope.get("Time")),$a!==false&&$a!==nil?self["$<=>"](other)["$zero?"]():$a};def["$friday?"]=function(){var self=this;return self.$wday()==5};def.$hour=function(){var self=this;if(self.tz_offset===0){return self.getUTCHours()}else{return self.getHours()}};def.$inspect=function(){var $a,self=this;if(($a=self["$utc?"]())!==nil&&(!$a.$$is_boolean||$a==true)){return self.$strftime("%Y-%m-%d %H:%M:%S UTC")}else{return self.$strftime("%Y-%m-%d %H:%M:%S %z")}};Opal.defn(self,"$mday",def.$day);def.$min=function(){var self=this;if(self.tz_offset===0){return self.getUTCMinutes()}else{return self.getMinutes()}};def.$mon=function(){var self=this;if(self.tz_offset===0){return self.getUTCMonth()+1}else{return self.getMonth()+1}};def["$monday?"]=function(){var self=this;return self.$wday()==1};Opal.defn(self,"$month",def.$mon);def["$saturday?"]=function(){var self=this;return self.$wday()==6};def.$sec=function(){var self=this;if(self.tz_offset===0){return self.getUTCSeconds()}else{return self.getSeconds()}};def.$usec=function(){var self=this;self.$warn("Microseconds are not supported");return 0};def.$zone=function(){var self=this;var string=self.toString(),result;if(string.indexOf("(")==-1){result=string.match(/[A-Z]{3,4}/)[0]}else{result=string.match(/\([^)]+\)/)[0].match(/[A-Z]/g).join("")}if(result=="GMT"&&/(GMT\W*\d{4})/.test(string)){return RegExp.$1}else{return result}};def.$getgm=function(){var self=this;var result=new Date(self.getTime());result.tz_offset=0;return result};def["$gmt?"]=function(){var self=this;return self.tz_offset===0};def.$gmt_offset=function(){var self=this;return-self.getTimezoneOffset()*60};def.$strftime=function(format){var self=this;return format.replace(/%([\-_#^0]*:{0,2})(\d+)?([EO]*)(.)/g,function(full,flags,width,_,conv){var result="",width=parseInt(width),zero=flags.indexOf("0")!==-1,pad=flags.indexOf("-")===-1,blank=flags.indexOf("_")!==-1,upcase=flags.indexOf("^")!==-1,invert=flags.indexOf("#")!==-1,colons=(flags.match(":")||[]).length;if(zero&&blank){if(flags.indexOf("0")<flags.indexOf("_")){zero=false}else{blank=false}}switch(conv){case"Y":result+=self.$year();break;case"C":zero=!blank;result+=Math.round(self.$year()/100);break;case"y":zero=!blank;result+=self.$year()%100;break;case"m":zero=!blank;result+=self.$mon();break;case"B":result+=long_months[self.$mon()-1];break;case"b":case"h":blank=!zero;result+=short_months[self.$mon()-1];break;case"d":zero=!blank;result+=self.$day();break;case"e":blank=!zero;result+=self.$day();break;case"j":result+=self.$yday();break;case"H":zero=!blank;result+=self.$hour();break;case"k":blank=!zero;result+=self.$hour();break;case"I":zero=!blank;result+=self.$hour()%12||12;break;case"l":blank=!zero;result+=self.$hour()%12||12;break;case"P":result+=self.$hour()>=12?"pm":"am";break;case"p":result+=self.$hour()>=12?"PM":"AM";break;case"M":zero=!blank;result+=self.$min();break;case"S":zero=!blank;result+=self.$sec();break;case"L":zero=!blank;width=isNaN(width)?3:width;result+=self.getMilliseconds();break;case"N":width=isNaN(width)?9:width;result+=self.getMilliseconds().toString().$rjust(3,"0");result=result.$ljust(width,"0");break;case"z":var offset=self.getTimezoneOffset(),hours=Math.floor(Math.abs(offset)/60),minutes=Math.abs(offset)%60;result+=offset<0?"+":"-";result+=hours<10?"0":"";result+=hours;if(colons>0){result+=":"}result+=minutes<10?"0":"";result+=minutes;if(colons>1){result+=":00"}break;case"Z":result+=self.$zone();break;case"A":result+=days_of_week[self.$wday()];break;case"a":result+=short_days[self.$wday()];break;case"u":result+=self.$wday()+1;break;case"w":result+=self.$wday();break;case"V":result+=self.$cweek_cyear()["$[]"](0).$to_s().$rjust(2,"0");break;case"G":result+=self.$cweek_cyear()["$[]"](1);break;case"g":result+=self.$cweek_cyear()["$[]"](1)["$[]"]($range(-2,-1,false));break;case"s":result+=self.$to_i();break;case"n":result+="\n";break;case"t":result+=" ";break;case"%":result+="%";break;case"c":result+=self.$strftime("%a %b %e %T %Y");break;case"D":case"x":result+=self.$strftime("%m/%d/%y");break;case"F":result+=self.$strftime("%Y-%m-%d");break;case"v":result+=self.$strftime("%e-%^b-%4Y");break;case"r":result+=self.$strftime("%I:%M:%S %p");break;case"R":result+=self.$strftime("%H:%M");break;case"T":case"X":result+=self.$strftime("%H:%M:%S");break;default:return full}if(upcase){result=result.toUpperCase()}if(invert){result=result.replace(/[A-Z]/,function(c){c.toLowerCase()}).replace(/[a-z]/,function(c){c.toUpperCase()})}if(pad&&(zero||blank)){result=result.$rjust(isNaN(width)?2:width,blank?" ":"0")}return result})};def["$sunday?"]=function(){var self=this;return self.$wday()==0};def["$thursday?"]=function(){var self=this;return self.$wday()==4};def.$to_a=function(){var self=this;return[self.$sec(),self.$min(),self.$hour(),self.$day(),self.$month(),self.$year(),self.$wday(),self.$yday(),self.$isdst(),self.$zone()]};def.$to_f=function(){var self=this;return self.getTime()/1e3};def.$to_i=function(){var self=this;return parseInt(self.getTime()/1e3)};Opal.defn(self,"$to_s",def.$inspect);def["$tuesday?"]=function(){var self=this;return self.$wday()==2};Opal.defn(self,"$utc?",def["$gmt?"]);Opal.defn(self,"$utc_offset",def.$gmt_offset);def.$wday=function(){var self=this;if(self.tz_offset===0){return self.getUTCDay()}else{return self.getDay()}};def["$wednesday?"]=function(){var self=this;return self.$wday()==3};def.$year=function(){var self=this;if(self.tz_offset===0){return self.getUTCFullYear()}else{return self.getFullYear()}};self.$private("cweek_cyear");return(def.$cweek_cyear=function(){var $a,$b,self=this,jan01=nil,jan01_wday=nil,first_monday=nil,year=nil,offset=nil,week=nil,dec31=nil,dec31_wday=nil;jan01=$scope.get("Time").$new(self.$year(),1,1);jan01_wday=jan01.$wday();first_monday=0;year=self.$year();if(($a=($b=jan01_wday["$<="](4))?jan01_wday["$=="](0)["$!"]():$b)!==nil&&(!$a.$$is_boolean||$a==true)){offset=jan01_wday["$-"](1)}else{offset=jan01_wday["$-"](7)["$-"](1);if(offset["$=="](-8)){offset=-1}}week=self.$yday()["$+"](offset)["$/"](7).$ceil();if(week["$<="](0)){return $scope.get("Time").$new(self.$year()["$-"](1),12,31).$cweek_cyear()}else if(week["$=="](53)){dec31=$scope.get("Time").$new(self.$year(),12,31);dec31_wday=dec31.$wday();if(($a=($b=dec31_wday["$<="](3))?dec31_wday["$=="](0)["$!"]():$b)!==nil&&(!$a.$$is_boolean||$a==true)){week=1;year=year["$+"](1)}}return[week,year]},nil)&&"cweek_cyear"}(self,null)};Opal.modules["corelib/struct"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$==","$[]","$upcase","$const_set","$new","$unshift","$each","$define_struct_attribute","$instance_eval","$to_proc","$raise","$<<","$members","$attr_accessor","$include","$each_with_index","$instance_variable_set","$class","$===","$>=","$size","$include?","$to_sym","$instance_variable_get","$enum_for","$hash","$all?","$length","$map","$+","$join","$inspect","$each_pair"]);return function($base,$super){function $Struct(){}var self=$Struct=$klass($base,$super,"Struct",$Struct);var def=self.$$proto,$scope=self.$$scope,TMP_1,TMP_6,TMP_8;Opal.defs(self,"$new",TMP_1=function(name,args){var $zuper=$slice.call(arguments,0);var $a,$b,$c,TMP_2,self=this,$iter=TMP_1.$$p,block=$iter||nil;args=$slice.call(arguments,1);TMP_1.$$p=null;if(self["$=="]($scope.get("Struct"))){}else{return Opal.find_super_dispatcher(self,"new",TMP_1,$iter,$Struct).apply(self,$zuper)}if(name["$[]"](0)["$=="](name["$[]"](0).$upcase())){return $scope.get("Struct").$const_set(name,($a=self).$new.apply($a,[].concat(args)))}else{args.$unshift(name);return($b=($c=$scope.get("Class")).$new,$b.$$p=(TMP_2=function(){var self=TMP_2.$$s||this,$a,$b,TMP_3,$c;($a=($b=args).$each,$a.$$p=(TMP_3=function(arg){var self=TMP_3.$$s||this;if(arg==null)arg=nil;return self.$define_struct_attribute(arg)},TMP_3.$$s=self,TMP_3),$a).call($b);if(block!==false&&block!==nil){return($a=($c=self).$instance_eval,$a.$$p=block.$to_proc(),$a).call($c)}else{return nil}},TMP_2.$$s=self,TMP_2),$b).call($c,self)}});Opal.defs(self,"$define_struct_attribute",function(name){var self=this;if(self["$=="]($scope.get("Struct"))){self.$raise($scope.get("ArgumentError"),"you cannot define attributes to the Struct class")}self.$members()["$<<"](name);return self.$attr_accessor(name)});Opal.defs(self,"$members",function(){var $a,self=this;if(self.members==null)self.members=nil;if(self["$=="]($scope.get("Struct"))){self.$raise($scope.get("ArgumentError"),"the Struct class has no members")}return($a=self.members)!==false&&$a!==nil?$a:self.members=[]});Opal.defs(self,"$inherited",function(klass){var $a,$b,TMP_4,self=this,members=nil;if(self.members==null)self.members=nil;if(self["$=="]($scope.get("Struct"))){return nil}members=self.members;return($a=($b=klass).$instance_eval,$a.$$p=(TMP_4=function(){var self=TMP_4.$$s||this;return self.members=members},TMP_4.$$s=self,TMP_4),$a).call($b)});(function(self){var $scope=self.$$scope,def=self.$$proto;return self.$$proto["$[]"]=self.$$proto.$new})(self.$singleton_class());self.$include($scope.get("Enumerable"));def.$initialize=function(args){var $a,$b,TMP_5,self=this;args=$slice.call(arguments,0);return($a=($b=self.$members()).$each_with_index,$a.$$p=(TMP_5=function(name,index){var self=TMP_5.$$s||this;if(name==null)name=nil;if(index==null)index=nil;return self.$instance_variable_set("@"+name,args["$[]"](index))},TMP_5.$$s=self,TMP_5),$a).call($b)};def.$members=function(){var self=this;return self.$class().$members()};def["$[]"]=function(name){var $a,self=this;if(($a=$scope.get("Integer")["$==="](name))!==nil&&(!$a.$$is_boolean||$a==true)){if(name["$>="](self.$members().$size())){self.$raise($scope.get("IndexError"),"offset "+name+" too large for struct(size:"+self.$members().$size()+")")}name=self.$members()["$[]"](name)}else if(($a=self.$members()["$include?"](name.$to_sym()))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("NameError"),"no member '"+name+"' in struct")}return self.$instance_variable_get("@"+name)};def["$[]="]=function(name,value){var $a,self=this;if(($a=$scope.get("Integer")["$==="](name))!==nil&&(!$a.$$is_boolean||$a==true)){if(name["$>="](self.$members().$size())){self.$raise($scope.get("IndexError"),"offset "+name+" too large for struct(size:"+self.$members().$size()+")")}name=self.$members()["$[]"](name)}else if(($a=self.$members()["$include?"](name.$to_sym()))!==nil&&(!$a.$$is_boolean||$a==true)){}else{self.$raise($scope.get("NameError"),"no member '"+name+"' in struct")}return self.$instance_variable_set("@"+name,value)};def.$each=TMP_6=function(){var $a,$b,TMP_7,self=this,$iter=TMP_6.$$p,$yield=$iter||nil;TMP_6.$$p=null;if($yield!==nil){}else{return self.$enum_for("each")}($a=($b=self.$members()).$each,$a.$$p=(TMP_7=function(name){var self=TMP_7.$$s||this,$a;if(name==null)name=nil;return $a=Opal.yield1($yield,self["$[]"](name)),$a===$breaker?$a:$a},TMP_7.$$s=self,TMP_7),$a).call($b);return self};def.$each_pair=TMP_8=function(){var $a,$b,TMP_9,self=this,$iter=TMP_8.$$p,$yield=$iter||nil;TMP_8.$$p=null;if($yield!==nil){}else{return self.$enum_for("each_pair")}($a=($b=self.$members()).$each,$a.$$p=(TMP_9=function(name){var self=TMP_9.$$s||this,$a;if(name==null)name=nil;return $a=Opal.yieldX($yield,[name,self["$[]"](name)]),$a===$breaker?$a:$a},TMP_9.$$s=self,TMP_9),$a).call($b);return self};def["$eql?"]=function(other){var $a,$b,$c,TMP_10,self=this;return($a=self.$hash()["$=="](other.$hash()))!==false&&$a!==nil?$a:($b=($c=other.$each_with_index())["$all?"],$b.$$p=(TMP_10=function(object,index){var self=TMP_10.$$s||this;if(object==null)object=nil;if(index==null)index=nil;return self["$[]"](self.$members()["$[]"](index))["$=="](object)},TMP_10.$$s=self,TMP_10),$b).call($c)};def.$length=function(){var self=this;return self.$members().$length()};Opal.defn(self,"$size",def.$length);def.$to_a=function(){var $a,$b,TMP_11,self=this;return($a=($b=self.$members()).$map,$a.$$p=(TMP_11=function(name){var self=TMP_11.$$s||this;if(name==null)name=nil;return self["$[]"](name)},TMP_11.$$s=self,TMP_11),$a).call($b)};Opal.defn(self,"$values",def.$to_a);def.$inspect=function(){var $a,$b,TMP_12,self=this,result=nil;result="#<struct ";if(self.$class()["$=="]($scope.get("Struct"))){result=result["$+"](""+self.$class()+" ")}result=result["$+"](($a=($b=self.$each_pair()).$map,$a.$$p=(TMP_12=function(name,value){var self=TMP_12.$$s||this;if(name==null)name=nil;if(value==null)value=nil;return""+name+"="+value.$inspect()},TMP_12.$$s=self,TMP_12),$a).call($b).$join(", "));result=result["$+"](">");return result};return Opal.defn(self,"$to_s",def.$inspect)}(self,null)};Opal.modules["corelib/io"]=function(Opal){Opal.dynamic_require_severity="warning";var $a,$b,self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$module=Opal.module,$gvars=Opal.gvars;if($gvars.stdout==null)$gvars.stdout=nil;if($gvars.stderr==null)$gvars.stderr=nil;Opal.add_stubs(["$attr_accessor","$size","$write","$join","$map","$String","$empty?","$concat","$chomp","$getbyte","$getc","$raise","$new","$write_proc=","$extend"]);(function($base,$super){function $IO(){}var self=$IO=$klass($base,$super,"IO",$IO);var def=self.$$proto,$scope=self.$$scope;def.tty=def.closed=nil;Opal.cdecl($scope,"SEEK_SET",0);Opal.cdecl($scope,"SEEK_CUR",1);Opal.cdecl($scope,"SEEK_END",2);def["$tty?"]=function(){var self=this;return self.tty};def["$closed?"]=function(){var self=this;return self.closed};self.$attr_accessor("write_proc");def.$write=function(string){var self=this;self.write_proc(string);return string.$size()};self.$attr_accessor("sync");(function($base){var self=$module($base,"Writable");var def=self.$$proto,$scope=self.$$scope;Opal.defn(self,"$<<",function(string){var self=this;self.$write(string);return self});Opal.defn(self,"$print",function(args){var $a,$b,TMP_1,self=this;if($gvars[","]==null)$gvars[","]=nil;args=$slice.call(arguments,0);self.$write(($a=($b=args).$map,$a.$$p=(TMP_1=function(arg){var self=TMP_1.$$s||this;if(arg==null)arg=nil;return self.$String(arg)},TMP_1.$$s=self,TMP_1),$a).call($b).$join($gvars[","]));return nil});Opal.defn(self,"$puts",function(args){var $a,$b,TMP_2,self=this,newline=nil;if($gvars["/"]==null)$gvars["/"]=nil;args=$slice.call(arguments,0);newline=$gvars["/"];if(($a=args["$empty?"]())!==nil&&(!$a.$$is_boolean||$a==true)){self.$write($gvars["/"])}else{self.$write(($a=($b=args).$map,$a.$$p=(TMP_2=function(arg){var self=TMP_2.$$s||this;if(arg==null)arg=nil;return self.$String(arg).$chomp()},TMP_2.$$s=self,TMP_2),$a).call($b).$concat([nil]).$join(newline))}return nil})})(self);return function($base){var self=$module($base,"Readable");var def=self.$$proto,$scope=self.$$scope;Opal.defn(self,"$readbyte",function(){var self=this;return self.$getbyte()});Opal.defn(self,"$readchar",function(){var self=this;return self.$getc()});Opal.defn(self,"$readline",function(sep){var self=this;if($gvars["/"]==null)$gvars["/"]=nil;if(sep==null){sep=$gvars["/"]}return self.$raise($scope.get("NotImplementedError"))});Opal.defn(self,"$readpartial",function(integer,outbuf){var self=this;if(outbuf==null){outbuf=nil}return self.$raise($scope.get("NotImplementedError"))})}(self)})(self,null);Opal.cdecl($scope,"STDERR",$gvars.stderr=$scope.get("IO").$new());Opal.cdecl($scope,"STDIN",$gvars.stdin=$scope.get("IO").$new());Opal.cdecl($scope,"STDOUT",$gvars.stdout=$scope.get("IO").$new());$a=[typeof process==="object"?function(s){process.stdout.write(s)}:function(s){console.log(s)}],$b=$gvars.stdout,$b["$write_proc="].apply($b,$a),$a[$a.length-1];$a=[typeof process==="object"?function(s){process.stderr.write(s)}:function(s){console.warn(s)}],$b=$gvars.stderr,$b["$write_proc="].apply($b,$a),$a[$a.length-1];$gvars.stdout.$extend($scope.get("IO").$$scope.get("Writable"));return $gvars.stderr.$extend($scope.get("IO").$$scope.get("Writable"))};Opal.modules["corelib/main"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$include"]);Opal.defs(self,"$to_s",function(){var self=this;return"main"});return(Opal.defs(self,"$include",function(mod){var self=this;return $scope.get("Object").$include(mod)}),nil)&&"include"};Opal.modules["corelib/variables"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$gvars=Opal.gvars,$hash2=Opal.hash2;Opal.add_stubs(["$new"]);$gvars["&"]=$gvars["~"]=$gvars["`"]=$gvars["'"]=nil;$gvars.LOADED_FEATURES=$gvars['"']=Opal.loaded_features;$gvars.LOAD_PATH=$gvars[":"]=[];$gvars["/"]="\n";$gvars[","]=nil;Opal.cdecl($scope,"ARGV",[]);Opal.cdecl($scope,"ARGF",$scope.get("Object").$new());Opal.cdecl($scope,"ENV",$hash2([],{}));$gvars.VERBOSE=false;$gvars.DEBUG=false;$gvars.SAFE=0;Opal.cdecl($scope,"RUBY_PLATFORM","opal");Opal.cdecl($scope,"RUBY_ENGINE","opal");Opal.cdecl($scope,"RUBY_VERSION","2.1.1");Opal.cdecl($scope,"RUBY_ENGINE_VERSION","0.6.1");return Opal.cdecl($scope,"RUBY_RELEASE_DATE","2014-04-15")};Opal.modules["corelib/dir"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass;Opal.add_stubs(["$[]"]);return function($base,$super){function $Dir(){}var self=$Dir=$klass($base,$super,"Dir",$Dir);var def=self.$$proto,$scope=self.$$scope;return function(self){var $scope=self.$$scope,def=self.$$proto;self.$$proto.$chdir=TMP_1=function(dir){var $a,self=this,$iter=TMP_1.$$p,$yield=$iter||nil,prev_cwd=nil;TMP_1.$$p=null;try{prev_cwd=Opal.current_dir;Opal.current_dir=dir;return $a=Opal.yieldX($yield,[]),$a===$breaker?$a:$a}finally{Opal.current_dir=prev_cwd}};self.$$proto.$pwd=function(){var self=this;return Opal.current_dir||"."};self.$$proto.$getwd=self.$$proto.$pwd;return(self.$$proto.$home=function(){var $a,self=this;return($a=$scope.get("ENV")["$[]"]("HOME"))!==false&&$a!==nil?$a:"."},nil)&&"home"}(self.$singleton_class())}(self,null)};Opal.modules["corelib/file"]=function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice,$klass=Opal.klass,$range=Opal.range;Opal.add_stubs(["$join","$compact","$split","$==","$first","$[]=","$home","$each","$pop","$<<","$[]","$gsub","$find","$=~"]);return function($base,$super){function $File(){}var self=$File=$klass($base,$super,"File",$File);var def=self.$$proto,$scope=self.$$scope;Opal.cdecl($scope,"Separator",Opal.cdecl($scope,"SEPARATOR","/"));Opal.cdecl($scope,"ALT_SEPARATOR",nil);Opal.cdecl($scope,"PATH_SEPARATOR",":");return function(self){var $scope=self.$$scope,def=self.$$proto;self.$$proto.$expand_path=function(path,basedir){var $a,$b,TMP_1,self=this,parts=nil,new_parts=nil;if(basedir==null){basedir=nil}path=[basedir,path].$compact().$join($scope.get("SEPARATOR"));parts=path.$split($scope.get("SEPARATOR"));new_parts=[];if(parts.$first()["$=="]("~")){parts["$[]="](0,$scope.get("Dir").$home())}($a=($b=parts).$each,$a.$$p=(TMP_1=function(part){var self=TMP_1.$$s||this;if(part==null)part=nil;if(part["$=="]("..")){return new_parts.$pop()}else{return new_parts["$<<"](part)}},TMP_1.$$s=self,TMP_1),$a).call($b);return new_parts.$join($scope.get("SEPARATOR"))};self.$$proto.$dirname=function(path){var self=this;return self.$split(path)["$[]"]($range(0,-2,false))};self.$$proto.$basename=function(path){var self=this;return self.$split(path)["$[]"](-1)};self.$$proto["$exist?"]=function(path){var self=this;return Opal.modules[path]!=null};self.$$proto["$exists?"]=self.$$proto["$exist?"];self.$$proto["$directory?"]=function(path){var $a,$b,TMP_2,self=this,files=nil,file=nil;files=[];for(var key in Opal.modules){files.push(key)}path=path.$gsub(new RegExp("(^."+$scope.get("SEPARATOR")+"+|"+$scope.get("SEPARATOR")+"+$)"));file=($a=($b=files).$find,$a.$$p=(TMP_2=function(file){var self=TMP_2.$$s||this;if(file==null)file=nil;return file["$=~"](new RegExp("^"+path))},TMP_2.$$s=self,TMP_2),$a).call($b);return file};self.$$proto.$join=function(paths){var self=this;paths=$slice.call(arguments,0);return paths.$join($scope.get("SEPARATOR")).$gsub(new RegExp(""+$scope.get("SEPARATOR")+"+"),$scope.get("SEPARATOR"))};return(self.$$proto.$split=function(path){var self=this;return path.$split($scope.get("SEPARATOR"))},nil)&&"split"}(self.$singleton_class())}(self,$scope.get("IO"))};(function(Opal){Opal.dynamic_require_severity="warning";var self=Opal.top,$scope=Opal,nil=Opal.nil,$breaker=Opal.breaker,$slice=Opal.slice;Opal.add_stubs(["$require"]);self.$require("corelib/runtime");self.$require("corelib/helpers");self.$require("corelib/module");self.$require("corelib/class");self.$require("corelib/basic_object");self.$require("corelib/kernel");self.$require("corelib/nil_class");self.$require("corelib/boolean");self.$require("corelib/error");self.$require("corelib/regexp");self.$require("corelib/comparable");self.$require("corelib/enumerable");self.$require("corelib/enumerator");self.$require("corelib/array");self.$require("corelib/array/inheritance");self.$require("corelib/hash");self.$require("corelib/string");self.$require("corelib/string/inheritance");self.$require("corelib/match_data");self.$require("corelib/numeric");self.$require("corelib/complex");self.$require("corelib/rational");self.$require("corelib/proc");self.$require("corelib/method");self.$require("corelib/range");self.$require("corelib/time");self.$require("corelib/struct");self.$require("corelib/io");self.$require("corelib/main");self.$require("corelib/variables");self.$require("corelib/dir");return self.$require("corelib/file")})(Opal); | |
module.exports = Opal; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var Opal = require('./opal.min.js'); | |
/* Generated by Opal 0.8.0.beta1 from ruby.rb */ | |
(function(Opal) { | |
Opal.dynamic_require_severity = "error"; | |
function $rb_minus(lhs, rhs) { | |
return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs - rhs : lhs['$-'](rhs); | |
} | |
var $a, $b, TMP_3, self = Opal.top, $scope = Opal, nil = Opal.nil, $breaker = Opal.breaker, $slice = Opal.slice, $klass = Opal.klass, $range = Opal.range, array1 = nil, array2 = nil; | |
Opal.add_stubs(['$now', '$puts', '$to_f', '$sample', '$to_a', '$reject', '$include?', '$tap', '$report', '$method1', '$method2', '$new', '$==', '$sort', '$uniq']); | |
(function($base, $super) { | |
function $SimpleBench(){}; | |
var self = $SimpleBench = $klass($base, $super, 'SimpleBench', $SimpleBench); | |
var def = self.$$proto, $scope = self.$$scope, TMP_1; | |
return (def.$report = TMP_1 = function(name) { | |
var self = this, $iter = TMP_1.$$p, $yield = $iter || nil, started_at = nil; | |
TMP_1.$$p = null; | |
started_at = $scope.get('Time').$now(); | |
if (Opal.yieldX($yield, []) === $breaker) return $breaker.$v; | |
return self.$puts("" + (name) + " took " + ($rb_minus($scope.get('Time').$now().$to_f(), started_at.$to_f())) + "s"); | |
}, nil) && 'report' | |
})(self, null); | |
array1 = ($range(0, 10000, true)).$to_a().$sample(7000); | |
array2 = ($range(0, 10000, true)).$to_a().$sample(7000); | |
Opal.Object.$$proto.$method1 = function(a, b) { | |
var self = this; | |
return $rb_minus(a, b); | |
}; | |
Opal.Object.$$proto.$method2 = function(a, b) { | |
var $a, $b, TMP_2, self = this; | |
return ($a = ($b = a).$reject, $a.$$p = (TMP_2 = function(id){var self = TMP_2.$$s || this; | |
if (id == null) id = nil; | |
return b['$include?'](id)}, TMP_2.$$s = self, TMP_2), $a).call($b); | |
}; | |
($a = ($b = $scope.get('SimpleBench').$new()).$tap, $a.$$p = (TMP_3 = function(x){var self = TMP_3.$$s || this, $a, $b, TMP_4, $c, TMP_5; | |
if (x == null) x = nil; | |
($a = ($b = x).$report, $a.$$p = (TMP_4 = function(){var self = TMP_4.$$s || this; | |
return self.$method1(array1, array2)}, TMP_4.$$s = self, TMP_4), $a).call($b, "a-b"); | |
return ($a = ($c = x).$report, $a.$$p = (TMP_5 = function(){var self = TMP_5.$$s || this; | |
return self.$method2(array1, array2)}, TMP_5.$$s = self, TMP_5), $a).call($c, "reject..include?");}, TMP_3.$$s = self, TMP_3), $a).call($b); | |
self.$puts("\n\n"); | |
if (self.$method1(array1, array2)['$=='](self.$method2(array1, array2))) { | |
return self.$puts("All's good") | |
} else { | |
self.$puts("Whoa, something is wrong here"); | |
self.$puts("array1 => " + (array1.$uniq().$sort())); | |
self.$puts("array2 => " + (array2.$uniq().$sort())); | |
self.$puts("method1 => " + (self.$method1(array1, array2).$uniq().$sort())); | |
return self.$puts("method2 => " + (self.$method2(array1, array2).$uniq().$sort())); | |
}; | |
})(Opal); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class SimpleBench | |
def report(name) | |
started_at = Time.now | |
yield | |
puts "#{name} took #{Time.now.to_f - started_at.to_f}s" | |
end | |
end | |
array1 = (0...10_000).to_a.sample(7_000) | |
array2 = (0...10_000).to_a.sample(7_000) | |
def method1(a,b) | |
a-b | |
end | |
def method2(a,b) | |
a.reject{|id| b.include? id} | |
end | |
SimpleBench.new.tap do |x| | |
x.report("a-b") { method1(array1,array2) } | |
x.report("reject..include?") { method2(array1,array2) } | |
end | |
# Sanity Check | |
puts "\n\n" | |
if method1(array1,array2) == method2(array1,array2) | |
puts "All's good" | |
else | |
puts "Whoa, something is wrong here" | |
puts "array1 => #{array1.uniq.sort}" | |
puts "array2 => #{array2.uniq.sort}" | |
puts "method1 => #{method1(array1,array2).uniq.sort}" | |
puts "method2 => #{method2(array1,array2).uniq.sort}" | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment