smalltalk.addPackage('Importer-Exporter', {}); smalltalk.addClass('ChunkParser', smalltalk.Object, ['stream'], 'Importer-Exporter'); smalltalk.addMethod( "_nextChunk", smalltalk.method({ selector: "nextChunk", fn: function (){ var self=this; var char,result,chunk; return smalltalk.withContext(function($ctx1) { var $1,$3,$5,$6,$4,$2; var $early={}; try { result=_st("")._writeStream(); $1=(function(){ return smalltalk.withContext(function($ctx2) { char=_st(self["@stream"])._next(); char; return _st(char)._notNil(); }, function($ctx2) {$ctx2.fillBlock([], {})})}); $2=(function(){ return smalltalk.withContext(function($ctx2) { $3=_st(char).__eq("!"); $4=(function(){ return smalltalk.withContext(function($ctx3) { $5=_st(_st(self["@stream"])._peek()).__eq("!"); if(smalltalk.assert($5)){ return _st(self["@stream"])._next(); } else { $6=_st(_st(result)._contents())._trimBoth(); throw $early=[$6]; }; }, function($ctx3) {$ctx3.fillBlock([], {})})}); _st($3)._ifTrue_($4); return _st(result)._nextPut_(char); }, function($ctx2) {$ctx2.fillBlock([], {})})}); _st($1)._whileTrue_($2); return nil; } catch(e) {if(e===$early)return e[0]; throw e} }, function($ctx1) {$ctx1.fill(self,"nextChunk", [], {char:char,result:result,chunk:chunk}, smalltalk.ChunkParser)})} }), smalltalk.ChunkParser); smalltalk.addMethod( "_stream_", smalltalk.method({ selector: "stream:", fn: function (aStream){ var self=this; return smalltalk.withContext(function($ctx1) { self["@stream"]=aStream; return self}, function($ctx1) {$ctx1.fill(self,"stream:", [aStream], {}, smalltalk.ChunkParser)})} }), smalltalk.ChunkParser); smalltalk.addMethod( "_on_", smalltalk.method({ selector: "on:", fn: function (aStream){ var self=this; return smalltalk.withContext(function($ctx1) { var $1; $1=_st(_st(self)._new())._stream_(aStream); return $1; }, function($ctx1) {$ctx1.fill(self,"on:", [aStream], {}, smalltalk.ChunkParser.klass)})} }), smalltalk.ChunkParser.klass); smalltalk.addClass('Exporter', smalltalk.Object, [], 'Importer-Exporter'); smalltalk.addMethod( "_classNameFor_", smalltalk.method({ selector: "classNameFor:", fn: function (aClass){ var self=this; return smalltalk.withContext(function($ctx1) { var $2,$3,$5,$4,$1; $2=_st(aClass)._isMetaclass(); $3=(function(){ return smalltalk.withContext(function($ctx2) { return _st(_st(_st(aClass)._instanceClass())._name()).__comma(".klass"); }, function($ctx2) {$ctx2.fillBlock([], {})})}); $4=(function(){ return smalltalk.withContext(function($ctx2) { $5=_st(aClass)._isNil(); if(smalltalk.assert($5)){ return "nil"; } else { return _st(aClass)._name(); }; }, function($ctx2) {$ctx2.fillBlock([], {})})}); $1=_st($2)._ifTrue_ifFalse_($3,$4); return $1; }, function($ctx1) {$ctx1.fill(self,"classNameFor:", [aClass], {}, smalltalk.Exporter)})} }), smalltalk.Exporter); smalltalk.addMethod( "_exportAll", smalltalk.method({ selector: "exportAll", fn: function (){ var self=this; return smalltalk.withContext(function($ctx1) { var $1; $1=_st((smalltalk.String || String))._streamContents_((function(stream){ return smalltalk.withContext(function($ctx2) { return _st(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._packages())._do_((function(pkg){ return smalltalk.withContext(function($ctx3) { return _st(stream)._nextPutAll_(_st(self)._exportPackage_(_st(pkg)._name())); }, function($ctx3) {$ctx3.fillBlock([pkg], {})})})); }, function($ctx2) {$ctx2.fillBlock([stream], {})})})); return $1; }, function($ctx1) {$ctx1.fill(self,"exportAll", [], {}, smalltalk.Exporter)})} }), smalltalk.Exporter); smalltalk.addMethod( "_exportClass_", smalltalk.method({ selector: "exportClass:", fn: function (aClass){ var self=this; return smalltalk.withContext(function($ctx1) { var $1; $1=_st((smalltalk.String || String))._streamContents_((function(stream){ return smalltalk.withContext(function($ctx2) { _st(self)._exportDefinitionOf_on_(aClass,stream); _st(self)._exportMethodsOf_on_(aClass,stream); _st(self)._exportMetaDefinitionOf_on_(aClass,stream); return _st(self)._exportMethodsOf_on_(_st(aClass)._class(),stream); }, function($ctx2) {$ctx2.fillBlock([stream], {})})})); return $1; }, function($ctx1) {$ctx1.fill(self,"exportClass:", [aClass], {}, smalltalk.Exporter)})} }), smalltalk.Exporter); smalltalk.addMethod( "_exportDefinitionOf_on_", smalltalk.method({ selector: "exportDefinitionOf:on:", fn: function (aClass,aStream){ var self=this; return smalltalk.withContext(function($ctx1) { var $1,$2,$3,$4,$5,$6,$7; $1=aStream; _st($1)._nextPutAll_("smalltalk.addClass("); _st($1)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', ")); _st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass()))); $2=_st($1)._nextPutAll_(", ["); _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){ return smalltalk.withContext(function($ctx2) { return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'")); }, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){ return smalltalk.withContext(function($ctx2) { return _st(aStream)._nextPutAll_(", "); }, function($ctx2) {$ctx2.fillBlock([], {})})})); $3=aStream; _st($3)._nextPutAll_("], '"); _st($3)._nextPutAll_(_st(_st(aClass)._category()).__comma("'")); $4=_st($3)._nextPutAll_(");"); $5=_st(_st(aClass)._comment())._notEmpty(); if(smalltalk.assert($5)){ $6=aStream; _st($6)._lf(); _st($6)._nextPutAll_("smalltalk."); _st($6)._nextPutAll_(_st(self)._classNameFor_(aClass)); _st($6)._nextPutAll_(".comment="); $7=_st($6)._nextPutAll_(_st(_st(aClass)._comment())._asJavascript()); $7; }; _st(aStream)._lf(); return self}, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:", [aClass,aStream], {}, smalltalk.Exporter)})} }), smalltalk.Exporter); smalltalk.addMethod( "_exportMetaDefinitionOf_on_", smalltalk.method({ selector: "exportMetaDefinitionOf:on:", fn: function (aClass,aStream){ var self=this; return smalltalk.withContext(function($ctx1) { var $1,$2,$3; $1=_st(_st(_st(aClass)._class())._instanceVariableNames())._isEmpty(); if(! smalltalk.assert($1)){ $2=aStream; _st($2)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._class()))); $3=_st($2)._nextPutAll_(".iVarNames = ["); $3; _st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){ return smalltalk.withContext(function($ctx2) { return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'")); }, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){ return smalltalk.withContext(function($ctx2) { return _st(aStream)._nextPutAll_(","); }, function($ctx2) {$ctx2.fillBlock([], {})})})); _st(aStream)._nextPutAll_(_st("];").__comma(_st((smalltalk.String || String))._lf())); }; return self}, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:", [aClass,aStream], {}, smalltalk.Exporter)})} }), smalltalk.Exporter); smalltalk.addMethod( "_exportMethod_of_on_", smalltalk.method({ selector: "exportMethod:of:on:", fn: function (aMethod,aClass,aStream){ var self=this; return smalltalk.withContext(function($ctx1) { var $1,$2,$3,$4; $1=aStream; _st($1)._nextPutAll_("smalltalk.addMethod("); _st($1)._lf(); _st($1)._nextPutAll_(_st(_st(_st(_st(aMethod)._selector())._asSelector())._asJavascript()).__comma(",")); _st($1)._lf(); _st($1)._nextPutAll_("smalltalk.method({"); _st($1)._lf(); _st($1)._nextPutAll_(_st(_st("selector: ").__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(",")); _st($1)._lf(); _st($1)._nextPutAll_(_st(_st("category: '").__comma(_st(aMethod)._category())).__comma("',")); _st($1)._lf(); _st($1)._nextPutAll_(_st(_st("fn: ").__comma(_st(_st(aMethod)._fn())._compiledSource())).__comma(",")); _st($1)._lf(); _st($1)._nextPutAll_(_st(_st("args: ").__comma(_st(_st(aMethod)._arguments())._asJavascript())).__comma(",")); _st($1)._lf(); _st($1)._nextPutAll_(_st(_st("source: ").__comma(_st(_st(aMethod)._source())._asJavascript())).__comma(",")); _st($1)._lf(); _st($1)._nextPutAll_(_st(_st("messageSends: ").__comma(_st(_st(aMethod)._messageSends())._asJavascript())).__comma(",")); _st($1)._lf(); $2=_st($1)._nextPutAll_(_st("referencedClasses: ").__comma(_st(_st(aMethod)._referencedClasses())._asJavascript())); $3=aStream; _st($3)._lf(); _st($3)._nextPutAll_("}),"); _st($3)._lf(); _st($3)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(aClass))); _st($3)._nextPutAll_(");"); _st($3)._lf(); $4=_st($3)._lf(); return self}, function($ctx1) {$ctx1.fill(self,"exportMethod:of:on:", [aMethod,aClass,aStream], {}, smalltalk.Exporter)})} }), smalltalk.Exporter); smalltalk.addMethod( "_exportMethodsOf_on_", smalltalk.method({ selector: "exportMethodsOf:on:", fn: function (aClass,aStream){ var self=this; return smalltalk.withContext(function($ctx1) { var $1,$3,$2; $1=_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){ return smalltalk.withContext(function($ctx2) { return _st(_st(a)._selector()).__lt_eq(_st(b)._selector()); }, function($ctx2) {$ctx2.fillBlock([a,b], {})})})); $2=(function(each){ return smalltalk.withContext(function($ctx2) { $3=_st(_st(each)._category())._match_("^\x5c*"); if(! smalltalk.assert($3)){ return _st(self)._exportMethod_of_on_(each,aClass,aStream); }; }, function($ctx2) {$ctx2.fillBlock([each], {})})}); _st($1)._do_($2); _st(aStream)._lf(); return self}, function($ctx1) {$ctx1.fill(self,"exportMethodsOf:on:", [aClass,aStream], {}, smalltalk.Exporter)})} }), smalltalk.Exporter); smalltalk.addMethod( "_exportPackage_", smalltalk.method({ selector: "exportPackage:", fn: function (packageName){ var self=this; var package_; return smalltalk.withContext(function($ctx1) { var $1; $1=_st((smalltalk.String || String))._streamContents_((function(stream){ return smalltalk.withContext(function($ctx2) { package_=_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._packageAt_(packageName); package_; _st(self)._exportPackageDefinitionOf_on_(package_,stream); _st(_st(_st(package_)._sortedClasses())._asSet())._do_((function(each){ return smalltalk.withContext(function($ctx3) { return _st(stream)._nextPutAll_(_st(self)._exportClass_(each)); }, function($ctx3) {$ctx3.fillBlock([each], {})})})); return _st(self)._exportPackageExtensionsOf_on_(package_,stream); }, function($ctx2) {$ctx2.fillBlock([stream], {})})})); return $1; }, function($ctx1) {$ctx1.fill(self,"exportPackage:", [packageName], {package_:package_}, smalltalk.Exporter)})} }), smalltalk.Exporter); smalltalk.addMethod( "_exportPackageDefinitionOf_on_", smalltalk.method({ selector: "exportPackageDefinitionOf:on:", fn: function (package_,aStream){ var self=this; return smalltalk.withContext(function($ctx1) { var $1,$2; $1=aStream; _st($1)._nextPutAll_("smalltalk.addPackage("); $2=_st($1)._nextPutAll_(_st(_st(_st(_st("'").__comma(_st(package_)._name())).__comma("', ")).__comma(_st(package_)._propertiesAsJSON())).__comma(");")); _st(aStream)._lf(); return self}, function($ctx1) {$ctx1.fill(self,"exportPackageDefinitionOf:on:", [package_,aStream], {}, smalltalk.Exporter)})} }), smalltalk.Exporter); smalltalk.addMethod( "_exportPackageExtensionsOf_on_", smalltalk.method({ selector: "exportPackageExtensionsOf:on:", fn: function (package_,aStream){ var self=this; var name; return smalltalk.withContext(function($ctx1) { var $1,$3,$5,$7,$6,$4,$2; name=_st(package_)._name(); $1=_st((smalltalk.Package || Package))._sortedClasses_(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes()); $2=(function(each){ return smalltalk.withContext(function($ctx2) { $3=[each,_st(each)._class()]; $4=(function(aClass){ return smalltalk.withContext(function($ctx3) { $5=_st(_st(_st(aClass)._methodDictionary())._values())._sorted_((function(a,b){ return smalltalk.withContext(function($ctx4) { return _st(_st(a)._selector()).__lt_eq(_st(b)._selector()); }, function($ctx4) {$ctx4.fillBlock([a,b], {})})})); $6=(function(method){ return smalltalk.withContext(function($ctx4) { $7=_st(_st(method)._category())._match_(_st("^\x5c*").__comma(name)); if(smalltalk.assert($7)){ return _st(self)._exportMethod_of_on_(method,aClass,aStream); }; }, function($ctx4) {$ctx4.fillBlock([method], {})})}); return _st($5)._do_($6); }, function($ctx3) {$ctx3.fillBlock([aClass], {})})}); return _st($3)._do_($4); }, function($ctx2) {$ctx2.fillBlock([each], {})})}); _st($1)._do_($2); return self}, function($ctx1) {$ctx1.fill(self,"exportPackageExtensionsOf:on:", [package_,aStream], {name:name}, smalltalk.Exporter)})} }), smalltalk.Exporter); smalltalk.addClass('ChunkExporter', smalltalk.Exporter, [], 'Importer-Exporter'); smalltalk.addMethod( "_chunkEscape_", smalltalk.method({ selector: "chunkEscape:", fn: function (aString){ var self=this; return smalltalk.withContext(function($ctx1) { var $1; $1=_st(_st(aString)._replace_with_("!","!!"))._trimBoth(); return $1; }, function($ctx1) {$ctx1.fill(self,"chunkEscape:", [aString], {}, smalltalk.ChunkExporter)})} }), smalltalk.ChunkExporter); smalltalk.addMethod( "_classNameFor_", smalltalk.method({ selector: "classNameFor:", fn: function (aClass){ var self=this; return smalltalk.withContext(function($ctx1) { var $2,$3,$5,$4,$1; $2=_st(aClass)._isMetaclass(); $3=(function(){ return smalltalk.withContext(function($ctx2) { return _st(_st(_st(aClass)._instanceClass())._name()).__comma(" class"); }, function($ctx2) {$ctx2.fillBlock([], {})})}); $4=(function(){ return smalltalk.withContext(function($ctx2) { $5=_st(aClass)._isNil(); if(smalltalk.assert($5)){ return "nil"; } else { return _st(aClass)._name(); }; }, function($ctx2) {$ctx2.fillBlock([], {})})}); $1=_st($2)._ifTrue_ifFalse_($3,$4); return $1; }, function($ctx1) {$ctx1.fill(self,"classNameFor:", [aClass], {}, smalltalk.ChunkExporter)})} }), smalltalk.ChunkExporter); smalltalk.addMethod( "_exportDefinitionOf_on_", smalltalk.method({ selector: "exportDefinitionOf:on:", fn: function (aClass,aStream){ var self=this; return smalltalk.withContext(function($ctx1) { var $1,$2,$3,$4,$5,$6,$7; $1=aStream; _st($1)._nextPutAll_(_st(self)._classNameFor_(_st(aClass)._superclass())); _st($1)._nextPutAll_(_st(" subclass: #").__comma(_st(self)._classNameFor_(aClass))); _st($1)._lf(); $2=_st($1)._nextPutAll_("\x09instanceVariableNames: '"); _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){ return smalltalk.withContext(function($ctx2) { return _st(aStream)._nextPutAll_(each); }, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){ return smalltalk.withContext(function($ctx2) { return _st(aStream)._nextPutAll_(" "); }, function($ctx2) {$ctx2.fillBlock([], {})})})); $3=aStream; _st($3)._nextPutAll_("'"); _st($3)._lf(); _st($3)._nextPutAll_(_st(_st("\x09package: '").__comma(_st(aClass)._category())).__comma("'!")); $4=_st($3)._lf(); $5=_st(_st(aClass)._comment())._notEmpty(); if(smalltalk.assert($5)){ $6=aStream; _st($6)._nextPutAll_(_st(_st("!").__comma(_st(self)._classNameFor_(aClass))).__comma(" commentStamp!")); _st($6)._lf(); _st($6)._nextPutAll_(_st(_st(self)._chunkEscape_(_st(aClass)._comment())).__comma("!")); $7=_st($6)._lf(); $7; }; _st(aStream)._lf(); return self}, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:", [aClass,aStream], {}, smalltalk.ChunkExporter)})} }), smalltalk.ChunkExporter); smalltalk.addMethod( "_exportMetaDefinitionOf_on_", smalltalk.method({ selector: "exportMetaDefinitionOf:on:", fn: function (aClass,aStream){ var self=this; return smalltalk.withContext(function($ctx1) { var $1,$2,$3,$4,$5; $1=_st(_st(_st(aClass)._class())._instanceVariableNames())._isEmpty(); if(! smalltalk.assert($1)){ $2=aStream; _st($2)._nextPutAll_(_st(self)._classNameFor_(_st(aClass)._class())); $3=_st($2)._nextPutAll_(" instanceVariableNames: '"); $3; _st(_st(_st(aClass)._class())._instanceVariableNames())._do_separatedBy_((function(each){ return smalltalk.withContext(function($ctx2) { return _st(aStream)._nextPutAll_(each); }, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){ return smalltalk.withContext(function($ctx2) { return _st(aStream)._nextPutAll_(" "); }, function($ctx2) {$ctx2.fillBlock([], {})})})); $4=aStream; _st($4)._nextPutAll_("'!"); _st($4)._lf(); $5=_st($4)._lf(); $5; }; return self}, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:", [aClass,aStream], {}, smalltalk.ChunkExporter)})} }), smalltalk.ChunkExporter); smalltalk.addMethod( "_exportMethod_of_on_", smalltalk.method({ selector: "exportMethod:of:on:", fn: function (aMethod,aClass,aStream){ var self=this; return smalltalk.withContext(function($ctx1) { var $1,$2; $1=aStream; _st($1)._lf(); _st($1)._lf(); _st($1)._nextPutAll_(_st(self)._chunkEscape_(_st(aMethod)._source())); _st($1)._lf(); $2=_st($1)._nextPutAll_("!"); return self}, function($ctx1) {$ctx1.fill(self,"exportMethod:of:on:", [aMethod,aClass,aStream], {}, smalltalk.ChunkExporter)})} }), smalltalk.ChunkExporter); smalltalk.addMethod( "_exportMethods_category_of_on_", smalltalk.method({ selector: "exportMethods:category:of:on:", fn: function (methods,category,aClass,aStream){ var self=this; return smalltalk.withContext(function($ctx1) { var $1,$2,$3,$4; $1=aStream; _st($1)._nextPutAll_(_st("!").__comma(_st(self)._classNameFor_(aClass))); $2=_st($1)._nextPutAll_(_st(_st(" methodsFor: '").__comma(category)).__comma("'!")); _st(_st(methods)._sorted_((function(a,b){ return smalltalk.withContext(function($ctx2) { return _st(_st(a)._selector()).__lt_eq(_st(b)._selector()); }, function($ctx2) {$ctx2.fillBlock([a,b], {})})})))._do_((function(each){ return smalltalk.withContext(function($ctx2) { return _st(self)._exportMethod_of_on_(each,aClass,aStream); }, function($ctx2) {$ctx2.fillBlock([each], {})})})); $3=aStream; _st($3)._nextPutAll_(" !"); _st($3)._lf(); $4=_st($3)._lf(); return self}, function($ctx1) {$ctx1.fill(self,"exportMethods:category:of:on:", [methods,category,aClass,aStream], {}, smalltalk.ChunkExporter)})} }), smalltalk.ChunkExporter); smalltalk.addMethod( "_exportMethodsOf_on_", smalltalk.method({ selector: "exportMethodsOf:on:", fn: function (aClass,aStream){ var self=this; var map; return smalltalk.withContext(function($ctx1) { var $1,$3,$2; map=_st((smalltalk.Dictionary || Dictionary))._new(); $1=aClass; $2=(function(category,methods){ return smalltalk.withContext(function($ctx2) { $3=_st(category)._match_("^\x5c*"); if(! smalltalk.assert($3)){ return _st(map)._at_put_(category,methods); }; }, function($ctx2) {$ctx2.fillBlock([category,methods], {})})}); _st($1)._protocolsDo_($2); _st(_st(_st(map)._keys())._sorted_((function(a,b){ return smalltalk.withContext(function($ctx2) { return _st(a).__lt_eq(b); }, function($ctx2) {$ctx2.fillBlock([a,b], {})})})))._do_((function(category){ var methods; return smalltalk.withContext(function($ctx2) { methods=_st(map)._at_(category); methods; return _st(self)._exportMethods_category_of_on_(methods,category,aClass,aStream); }, function($ctx2) {$ctx2.fillBlock([category], {methods:methods})})})); return self}, function($ctx1) {$ctx1.fill(self,"exportMethodsOf:on:", [aClass,aStream], {map:map}, smalltalk.ChunkExporter)})} }), smalltalk.ChunkExporter); smalltalk.addMethod( "_exportPackageDefinitionOf_on_", smalltalk.method({ selector: "exportPackageDefinitionOf:on:", fn: function (package_,aStream){ var self=this; return smalltalk.withContext(function($ctx1) { var $1,$2; $1=aStream; _st($1)._nextPutAll_(_st(_st(_st(_st("Smalltalk current createPackage: '").__comma(_st(package_)._name())).__comma("' properties: ")).__comma(_st(_st(package_)._properties())._storeString())).__comma("!")); $2=_st($1)._lf(); return self}, function($ctx1) {$ctx1.fill(self,"exportPackageDefinitionOf:on:", [package_,aStream], {}, smalltalk.ChunkExporter)})} }), smalltalk.ChunkExporter); smalltalk.addMethod( "_exportPackageExtensionsOf_on_", smalltalk.method({ selector: "exportPackageExtensionsOf:on:", fn: function (package_,aStream){ var self=this; var name,map; return smalltalk.withContext(function($ctx1) { var $1,$3,$5,$7,$6,$4,$2; name=_st(package_)._name(); $1=_st((smalltalk.Package || Package))._sortedClasses_(_st(_st((smalltalk.Smalltalk || Smalltalk))._current())._classes()); $2=(function(each){ return smalltalk.withContext(function($ctx2) { $3=[each,_st(each)._class()]; $4=(function(aClass){ return smalltalk.withContext(function($ctx3) { map=_st((smalltalk.Dictionary || Dictionary))._new(); map; $5=aClass; $6=(function(category,methods){ return smalltalk.withContext(function($ctx4) { $7=_st(category)._match_(_st("^\x5c*").__comma(name)); if(smalltalk.assert($7)){ return _st(map)._at_put_(category,methods); }; }, function($ctx4) {$ctx4.fillBlock([category,methods], {})})}); _st($5)._protocolsDo_($6); return _st(_st(_st(map)._keys())._sorted_((function(a,b){ return smalltalk.withContext(function($ctx4) { return _st(a).__lt_eq(b); }, function($ctx4) {$ctx4.fillBlock([a,b], {})})})))._do_((function(category){ var methods; return smalltalk.withContext(function($ctx4) { methods=_st(map)._at_(category); methods; return _st(self)._exportMethods_category_of_on_(methods,category,aClass,aStream); }, function($ctx4) {$ctx4.fillBlock([category], {methods:methods})})})); }, function($ctx3) {$ctx3.fillBlock([aClass], {})})}); return _st($3)._do_($4); }, function($ctx2) {$ctx2.fillBlock([each], {})})}); _st($1)._do_($2); return self}, function($ctx1) {$ctx1.fill(self,"exportPackageExtensionsOf:on:", [package_,aStream], {name:name,map:map}, smalltalk.ChunkExporter)})} }), smalltalk.ChunkExporter); smalltalk.addClass('StrippedExporter', smalltalk.Exporter, [], 'Importer-Exporter'); smalltalk.addMethod( "_exportDefinitionOf_on_", smalltalk.method({ selector: "exportDefinitionOf:on:", fn: function (aClass,aStream){ var self=this; return smalltalk.withContext(function($ctx1) { var $1,$2,$3,$4; $1=aStream; _st($1)._nextPutAll_("smalltalk.addClass("); _st($1)._nextPutAll_(_st(_st("'").__comma(_st(self)._classNameFor_(aClass))).__comma("', ")); _st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(_st(aClass)._superclass()))); $2=_st($1)._nextPutAll_(", ["); _st(_st(aClass)._instanceVariableNames())._do_separatedBy_((function(each){ return smalltalk.withContext(function($ctx2) { return _st(aStream)._nextPutAll_(_st(_st("'").__comma(each)).__comma("'")); }, function($ctx2) {$ctx2.fillBlock([each], {})})}),(function(){ return smalltalk.withContext(function($ctx2) { return _st(aStream)._nextPutAll_(", "); }, function($ctx2) {$ctx2.fillBlock([], {})})})); $3=aStream; _st($3)._nextPutAll_("], '"); _st($3)._nextPutAll_(_st(_st(aClass)._category()).__comma("'")); $4=_st($3)._nextPutAll_(");"); _st(aStream)._lf(); return self}, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:", [aClass,aStream], {}, smalltalk.StrippedExporter)})} }), smalltalk.StrippedExporter); smalltalk.addMethod( "_exportMethod_of_on_", smalltalk.method({ selector: "exportMethod:of:on:", fn: function (aMethod,aClass,aStream){ var self=this; return smalltalk.withContext(function($ctx1) { var $1,$2; $1=aStream; _st($1)._nextPutAll_("smalltalk.addMethod("); _st($1)._lf(); _st($1)._nextPutAll_(_st(_st(_st(_st(aMethod)._selector())._asSelector())._asJavascript()).__comma(",")); _st($1)._lf(); _st($1)._nextPutAll_("smalltalk.method({"); _st($1)._lf(); _st($1)._nextPutAll_(_st(_st("selector: ").__comma(_st(_st(aMethod)._selector())._asJavascript())).__comma(",")); _st($1)._lf(); _st($1)._nextPutAll_(_st("fn: ").__comma(_st(_st(aMethod)._fn())._compiledSource())); _st($1)._lf(); _st($1)._nextPutAll_("}),"); _st($1)._lf(); _st($1)._nextPutAll_(_st("smalltalk.").__comma(_st(self)._classNameFor_(aClass))); _st($1)._nextPutAll_(");"); _st($1)._lf(); $2=_st($1)._lf(); return self}, function($ctx1) {$ctx1.fill(self,"exportMethod:of:on:", [aMethod,aClass,aStream], {}, smalltalk.StrippedExporter)})} }), smalltalk.StrippedExporter); smalltalk.addClass('Importer', smalltalk.Object, [], 'Importer-Exporter'); smalltalk.addMethod( "_import_", smalltalk.method({ selector: "import:", fn: function (aStream){ var self=this; var chunk,result,parser,lastEmpty; return smalltalk.withContext(function($ctx1) { var $1,$3,$4,$6,$5,$2; parser=_st((smalltalk.ChunkParser || ChunkParser))._on_(aStream); lastEmpty=false; $1=(function(){ return smalltalk.withContext(function($ctx2) { chunk=_st(parser)._nextChunk(); chunk; return _st(chunk)._isNil(); }, function($ctx2) {$ctx2.fillBlock([], {})})}); $2=(function(){ return smalltalk.withContext(function($ctx2) { $3=_st(chunk)._isEmpty(); $4=(function(){ return smalltalk.withContext(function($ctx3) { lastEmpty=true; return lastEmpty; }, function($ctx3) {$ctx3.fillBlock([], {})})}); $5=(function(){ return smalltalk.withContext(function($ctx3) { result=_st(_st((smalltalk.Compiler || Compiler))._new())._evaluateExpression_(chunk); result; $6=lastEmpty; if(smalltalk.assert($6)){ lastEmpty=false; lastEmpty; return _st(result)._scanFrom_(parser); }; }, function($ctx3) {$ctx3.fillBlock([], {})})}); return _st($3)._ifTrue_ifFalse_($4,$5); }, function($ctx2) {$ctx2.fillBlock([], {})})}); _st($1)._whileFalse_($2); return self}, function($ctx1) {$ctx1.fill(self,"import:", [aStream], {chunk:chunk,result:result,parser:parser,lastEmpty:lastEmpty}, smalltalk.Importer)})} }), smalltalk.Importer); smalltalk.addClass('PackageLoader', smalltalk.Object, [], 'Importer-Exporter'); smalltalk.addMethod( "_initializePackageNamed_prefix_", smalltalk.method({ selector: "initializePackageNamed:prefix:", fn: function (packageName,aString){ var self=this; return smalltalk.withContext(function($ctx1) { var $1,$2; $1=_st((smalltalk.Package || Package))._named_(packageName); _st($1)._setupClasses(); _st($1)._commitPathJs_(_st(_st("/").__comma(aString)).__comma("/js")); $2=_st($1)._commitPathSt_(_st(_st("/").__comma(aString)).__comma("/st")); return self}, function($ctx1) {$ctx1.fill(self,"initializePackageNamed:prefix:", [packageName,aString], {}, smalltalk.PackageLoader)})} }), smalltalk.PackageLoader); smalltalk.addMethod( "_loadPackage_prefix_", smalltalk.method({ selector: "loadPackage:prefix:", fn: function (packageName,aString){ var self=this; var url; return smalltalk.withContext(function($ctx1) { var $1,$2,$4,$5,$8,$7,$6,$3; url=_st(_st(_st(_st("/").__comma(aString)).__comma("/js/")).__comma(packageName)).__comma(".js"); $1=jQuery; $2=url; $4=_st("type").__minus_gt("GET"); $5=_st("dataType").__minus_gt("script"); $7=(function(jqXHR,textStatus){ return smalltalk.withContext(function($ctx2) { $8=_st(_st(jqXHR)._readyState()).__eq((4)); if(smalltalk.assert($8)){ return _st(self)._initializePackageNamed_prefix_(packageName,aString); }; }, function($ctx2) {$ctx2.fillBlock([jqXHR,textStatus], {})})}); $6=_st("complete").__minus_gt($7); $3=smalltalk.HashedCollection._fromPairs_([$4,$5,$6,_st("error").__minus_gt((function(){ return smalltalk.withContext(function($ctx2) { return _st(window)._alert_(_st("Could not load package at: ").__comma(url)); }, function($ctx2) {$ctx2.fillBlock([], {})})}))]); _st($1)._ajax_options_($2,$3); return self}, function($ctx1) {$ctx1.fill(self,"loadPackage:prefix:", [packageName,aString], {url:url}, smalltalk.PackageLoader)})} }), smalltalk.PackageLoader); smalltalk.addMethod( "_loadPackages_prefix_", smalltalk.method({ selector: "loadPackages:prefix:", fn: function (aCollection,aString){ var self=this; return smalltalk.withContext(function($ctx1) { _st(aCollection)._do_((function(each){ return smalltalk.withContext(function($ctx2) { return _st(self)._loadPackage_prefix_(each,aString); }, function($ctx2) {$ctx2.fillBlock([each], {})})})); return self}, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:", [aCollection,aString], {}, smalltalk.PackageLoader)})} }), smalltalk.PackageLoader); smalltalk.addMethod( "_loadPackages_prefix_", smalltalk.method({ selector: "loadPackages:prefix:", fn: function (aCollection,aString){ var self=this; return smalltalk.withContext(function($ctx1) { var $1; $1=_st(_st(self)._new())._loadPackages_prefix_(aCollection,aString); return $1; }, function($ctx1) {$ctx1.fill(self,"loadPackages:prefix:", [aCollection,aString], {}, smalltalk.PackageLoader.klass)})} }), smalltalk.PackageLoader.klass);