server.js 390 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942
  1. /* ====================================================================
  2. |
  3. | Amber Smalltalk
  4. | http://amber-lang.net
  5. |
  6. ======================================================================
  7. ======================================================================
  8. |
  9. | Copyright (c) 2010-2011
  10. | Nicolas Petton <petton.nicolas@gmail.com>
  11. |
  12. | Amber is released under the MIT license
  13. |
  14. | Permission is hereby granted, free of charge, to any person obtaining
  15. | a copy of this software and associated documentation files (the
  16. | 'Software'), to deal in the Software without restriction, including
  17. | without limitation the rights to use, copy, modify, merge, publish,
  18. | distribute, sublicense, and/or sell copies of the Software, and to
  19. | permit persons to whom the Software is furnished to do so, subject to
  20. | the following conditions:
  21. |
  22. | The above copyright notice and this permission notice shall be
  23. | included in all copies or substantial portions of the Software.
  24. |
  25. | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
  26. | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  27. | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  28. | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  29. | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  30. | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  31. | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  32. |
  33. ==================================================================== */
  34. /* Make that console is defined */
  35. if (typeof console === "undefined") {
  36. this.console = {
  37. log: function() {},
  38. warn: function() {},
  39. info: function() {},
  40. debug: function() {},
  41. error: function() {},
  42. };
  43. }
  44. /* Smalltalk constructors definition */
  45. function SmalltalkObject(){};
  46. function SmalltalkBehavior(){};
  47. function SmalltalkClass(){};
  48. function SmalltalkPackage(){};
  49. function SmalltalkMetaclass(){
  50. this.meta = true;
  51. };
  52. function SmalltalkMethod(){};
  53. function SmalltalkNil(){};
  54. function Smalltalk(){
  55. var st = this;
  56. /* This is the current call context object. While it is publicly available,
  57. Use smalltalk.getThisContext() instead which will answer a safe copy of
  58. the current context */
  59. st.thisContext = undefined;
  60. /* List of all reserved words in JavaScript. They may not be used as variables
  61. in Smalltalk. */
  62. st.reservedWords = ['break', 'case', 'catch', 'class', 'continue', 'debugger',
  63. 'default', 'delete', 'do', 'else', 'finally', 'for', 'function',
  64. 'if', 'in', 'instanceof', 'new', 'private', 'protected',
  65. 'public', 'return', 'static', 'switch', 'this', 'throw',
  66. 'try', 'typeof', 'var', 'void', 'while', 'with', 'yield'];
  67. /* We hold all Packages in a separate Object */
  68. st.packages = {};
  69. /* Smalltalk package creation. To add a Package, use smalltalk.addPackage() */
  70. function pkg(spec) {
  71. var that = new SmalltalkPackage();
  72. that.pkgName = spec.pkgName;
  73. that.properties = spec.properties || [];
  74. return that;
  75. };
  76. /* Smalltalk class creation. A class is an instance of an automatically
  77. created metaclass object. Newly created classes (not their metaclass)
  78. should be added to the smalltalk object, see smalltalk.addClass().
  79. Superclass linking is *not* handled here, see smalltalk.init() */
  80. function klass(spec) {
  81. var spec = spec || {};
  82. var that;
  83. if(spec.meta) {
  84. that = new SmalltalkMetaclass();
  85. } else {
  86. that = new (klass({meta: true})).fn;
  87. that.klass.instanceClass = that;
  88. that.className = spec.className;
  89. that.klass.className = that.className + ' class';
  90. }
  91. that.fn = spec.fn || function(){};
  92. that.superclass = spec.superclass;
  93. that.iVarNames = spec.iVarNames || [];
  94. if(that.superclass) {
  95. that.klass.superclass = that.superclass.klass;
  96. }
  97. that.pkg = spec.pkg;
  98. that.fn.prototype.methods = {};
  99. that.fn.prototype.inheritedMethods = {};
  100. that.fn.prototype.klass = that;
  101. return that;
  102. };
  103. /* Smalltalk method object. To add a method to a class,
  104. use smalltalk.addMethod() */
  105. st.method = function(spec) {
  106. var that = new SmalltalkMethod();
  107. that.selector = spec.selector;
  108. that.jsSelector = spec.jsSelector;
  109. that.args = spec.args || {};
  110. that.category = spec.category;
  111. that.source = spec.source;
  112. that.messageSends = spec.messageSends || [];
  113. that.referencedClasses = spec.referencedClasses || [];
  114. that.fn = spec.fn;
  115. return that
  116. };
  117. /* Initialize a class in its class hierarchy. Handle both class and
  118. metaclasses. */
  119. st.init = function(klass) {
  120. var subclasses = st.subclasses(klass);
  121. var methods;
  122. if(klass.superclass && klass.superclass !== nil) {
  123. methods = st.methods(klass.superclass);
  124. //Methods linking
  125. for(var i in methods) {
  126. if(!klass.fn.prototype.methods[i]) {
  127. klass.fn.prototype.inheritedMethods[i] = methods[i];
  128. klass.fn.prototype[methods[i].jsSelector] = methods[i].fn;
  129. }
  130. }
  131. }
  132. for(var i=0;i<subclasses.length;i++) {
  133. st.init(subclasses[i]);
  134. }
  135. if(klass.klass && !klass.meta) {
  136. st.init(klass.klass);
  137. }
  138. };
  139. /* Answer all registered Packages as Array */
  140. st.packages.all = function() {
  141. var packages = [];
  142. for(var i in st.packages) {
  143. if (!st.packages.hasOwnProperty(i) || typeof(st.packages[i]) === "function") continue;
  144. packages.push(st.packages[i]);
  145. }
  146. return packages
  147. };
  148. /* Answer all registered Smalltalk classes */
  149. st.classes = function() {
  150. var classes = [];
  151. for(var i in st) {
  152. if(i.search(/^[A-Z]/g) != -1) {
  153. classes.push(st[i]);
  154. }
  155. }
  156. return classes
  157. };
  158. /* Answer all methods (included inherited ones) of klass. */
  159. st.methods = function(klass) {
  160. var methods = {};
  161. for(var i in klass.fn.prototype.methods) {
  162. methods[i] = klass.fn.prototype.methods[i]
  163. }
  164. for(var i in klass.fn.prototype.inheritedMethods) {
  165. methods[i] = klass.fn.prototype.inheritedMethods[i]
  166. }
  167. return methods;
  168. }
  169. /* Answer the direct subclasses of klass. */
  170. st.subclasses = function(klass) {
  171. var subclasses = [];
  172. var classes = st.classes();
  173. for(var i in classes) {
  174. if(classes[i].fn) {
  175. //Metaclasses
  176. if(classes[i].klass && classes[i].klass.superclass === klass) {
  177. subclasses.push(classes[i].klass);
  178. }
  179. //Classes
  180. if(classes[i].superclass === klass) {
  181. subclasses.push(classes[i]);
  182. }
  183. }
  184. }
  185. return subclasses;
  186. };
  187. /* Create a new class wrapping a JavaScript constructor, and add it to the
  188. global smalltalk object. Package is lazily created if it does not exist with given name. */
  189. st.mapClassName = function(className, pkgName, fn, superclass) {
  190. var pkg = st.addPackage(pkgName, null);
  191. st[className] = klass({
  192. className: className,
  193. superclass: superclass,
  194. pkg: pkg,
  195. fn: fn
  196. });
  197. };
  198. /* Add a package to the smalltalk.packages object, creating a new one if needed.
  199. If pkgName is null or empty we return nil, which is an allowed package for a class.
  200. If package already exists we still update the properties of it. */
  201. st.addPackage = function(pkgName, properties) {
  202. if(!pkgName) {return nil;}
  203. if(!(st.packages[pkgName])) {
  204. st.packages[pkgName] = pkg({
  205. pkgName: pkgName,
  206. properties: properties
  207. });
  208. } else {
  209. if(properties) {
  210. st.packages[pkgName].properties = properties;
  211. }
  212. }
  213. return st.packages[pkgName];
  214. };
  215. /* Add a class to the smalltalk object, creating a new one if needed.
  216. Package is lazily created if it does not exist with given name.*/
  217. st.addClass = function(className, superclass, iVarNames, pkgName) {
  218. var pkg = st.addPackage(pkgName, null);
  219. if(st[className]) {
  220. st[className].superclass = superclass;
  221. st[className].iVarNames = iVarNames;
  222. st[className].pkg = pkg || st[className].pkg;
  223. } else {
  224. st[className] = klass({
  225. className: className,
  226. superclass: superclass,
  227. pkg: pkg,
  228. iVarNames: iVarNames
  229. });
  230. }
  231. };
  232. /* Add a method to a class */
  233. st.addMethod = function(jsSelector, method, klass) {
  234. klass.fn.prototype[jsSelector] = method.fn;
  235. klass.fn.prototype.methods[method.selector] = method;
  236. method.methodClass = klass;
  237. method.jsSelector = jsSelector;
  238. };
  239. /* Handles Smalltalk message send. Automatically converts undefined to the nil object.
  240. If the receiver does not understand the selector, call its #doesNotUnderstand: method */
  241. sendWithoutContext = function(receiver, selector, args, klass) {
  242. if(receiver === undefined || receiver === null) {
  243. receiver = nil;
  244. }
  245. if(!klass && receiver.klass && receiver[selector]) {
  246. return receiver[selector].apply(receiver, args);
  247. } else if(klass && klass.fn.prototype[selector]) {
  248. return klass.fn.prototype[selector].apply(receiver, args)
  249. }
  250. return messageNotUnderstood(receiver, selector, args);
  251. };
  252. /* Handles unhandled errors during message sends */
  253. sendWithContext = function(receiver, selector, args, klass) {
  254. if(st.thisContext) {
  255. return withContextSend(receiver, selector, args, klass);
  256. } else {
  257. try {return withContextSend(receiver, selector, args, klass)}
  258. catch(error) {
  259. // Reset the context stack in any case
  260. st.thisContext = undefined;
  261. if(error.smalltalkError) {
  262. handleError(error);
  263. } else {
  264. throw(error);
  265. }
  266. }
  267. }
  268. };
  269. /* Same as sendWithoutContext but creates a methodContext. */
  270. withContextSend = function(receiver, selector, args, klass) {
  271. var call, context;
  272. if(receiver === undefined || receiver === null) {
  273. receiver = nil;
  274. }
  275. if(!klass && receiver.klass && receiver[selector]) {
  276. context = pushContext(receiver, selector, args);
  277. call = receiver[selector].apply(receiver, args);
  278. popContext(context);
  279. return call;
  280. } else if(klass && klass.fn.prototype[selector]) {
  281. context = pushContext(receiver, selector, args);
  282. call = klass.fn.prototype[selector].apply(receiver, args);
  283. popContext(context);
  284. return call;
  285. }
  286. return messageNotUnderstood(receiver, selector, args);
  287. };
  288. /* Handles Smalltalk errors. Triggers the registered ErrorHandler
  289. (See the Smalltalk class ErrorHandler and its subclasses */
  290. function handleError(error) {
  291. st.thisContext = undefined;
  292. smalltalk.ErrorHandler._current()._handleError_(error);
  293. }
  294. /* Handles #dnu: *and* JavaScript method calls.
  295. if the receiver has no klass, we consider it a JS object (outside of the
  296. Amber system). Else assume that the receiver understands #doesNotUnderstand: */
  297. function messageNotUnderstood(receiver, selector, args) {
  298. /* Handles JS method calls. */
  299. if(receiver.klass === undefined || receiver.allowJavaScriptCalls) {
  300. return callJavaScriptMethod(receiver, selector, args);
  301. }
  302. /* Handles not understood messages. Also see the Amber counter-part
  303. Object>>doesNotUnderstand: */
  304. return receiver._doesNotUnderstand_(
  305. st.Message._new()
  306. ._selector_(st.convertSelector(selector))
  307. ._arguments_(args)
  308. );
  309. };
  310. function callJavaScriptMethod(receiver, selector, args) {
  311. /* Call a method of a JS object, or answer a property if it exists.
  312. Else try wrapping a JSObjectProxy around the receiver.
  313. Converts keyword-based selectors by using the first
  314. keyword only, but keeping all message arguments.
  315. Example:
  316. "self do: aBlock with: anObject" -> "self.do(aBlock, anObject)" */
  317. var jsSelector = selector._asJavaScriptSelector();
  318. var jsProperty = receiver[jsSelector];
  319. if(typeof jsProperty === "function") {
  320. return jsProperty.apply(receiver, args);
  321. } else if(jsProperty !== undefined) {
  322. if(args[0]) {
  323. receiver[jsSelector] = args[0];
  324. return nil;
  325. } else {
  326. return jsProperty
  327. }
  328. }
  329. return st.send(st.JSObjectProxy._on_(receiver), selector, args);
  330. };
  331. /* Reuse old contexts stored in oldContexts */
  332. st.oldContexts = [];
  333. /* Handle thisContext pseudo variable */
  334. st.getThisContext = function() {
  335. if(st.thisContext) {
  336. return st.thisContext.copy();
  337. } else {
  338. return undefined;
  339. }
  340. }
  341. pushContext = function(receiver, selector, temps) {
  342. if(st.thisContext) {
  343. return st.thisContext = st.thisContext.newContext(receiver, selector, temps);
  344. } else {
  345. return st.thisContext = new SmalltalkMethodContext(receiver, selector, temps);
  346. }
  347. };
  348. popContext = function(context) {
  349. if(context) {
  350. context.removeYourself();
  351. }
  352. };
  353. /* Convert a string to a valid smalltalk selector.
  354. if you modify the following functions, also change String>>asSelector
  355. accordingly */
  356. st.convertSelector = function(selector) {
  357. if(selector.match(/__/)) {
  358. return convertBinarySelector(selector);
  359. } else {
  360. return convertKeywordSelector(selector);
  361. }
  362. };
  363. function convertKeywordSelector(selector) {
  364. return selector.replace(/^_/, '').replace(/_/g, ':');
  365. };
  366. function convertBinarySelector(selector) {
  367. return selector
  368. .replace(/^_/, '')
  369. .replace(/_plus/, '+')
  370. .replace(/_minus/, '-')
  371. .replace(/_star/, '*')
  372. .replace(/_slash/, '/')
  373. .replace(/_gt/, '>')
  374. .replace(/_lt/, '<')
  375. .replace(/_eq/, '=')
  376. .replace(/_comma/, ',')
  377. .replace(/_at/, '@')
  378. };
  379. /* Converts a JavaScript object to valid Smalltalk Object */
  380. st.readJSObject = function(js) {
  381. var object = js;
  382. var readObject = (js.constructor === Object);
  383. var readArray = (js.constructor === Array);
  384. if(readObject) {
  385. object = smalltalk.Dictionary._new();
  386. }
  387. for(var i in js) {
  388. if(readObject) {
  389. object._at_put_(i, st.readJSObject(js[i]));
  390. }
  391. if(readArray) {
  392. object[i] = st.readJSObject(js[i]);
  393. }
  394. }
  395. return object;
  396. };
  397. /* Toggle deployment mode (no context will be handled during message send */
  398. st.setDeploymentMode = function() {
  399. st.send = sendWithoutContext;
  400. };
  401. st.setDevelopmentMode = function() {
  402. st.send = sendWithContext;
  403. }
  404. /* Set development mode by default */
  405. st.setDevelopmentMode();
  406. }
  407. function SmalltalkMethodContext(receiver, selector, temps, home) {
  408. var that = this;
  409. that.receiver = receiver;
  410. that.selector = selector;
  411. that.temps = temps || {};
  412. that.homeContext = home;
  413. that.copy = function() {
  414. var home = that.homeContext;
  415. if(home) {home = home.copy()}
  416. return new SmalltalkMethodContext(
  417. that.receiver,
  418. that.selector,
  419. that.temps,
  420. home
  421. );
  422. }
  423. that.newContext = function(receiver, selector, temps) {
  424. var c = smalltalk.oldContexts.pop();
  425. if(c) {
  426. c.homeContext = that;
  427. c.receiver = receiver;
  428. c.selector = selector;
  429. c.temps = temps || {};
  430. } else {
  431. c = new SmalltalkMethodContext(receiver, selector, temps, that);
  432. }
  433. return c;
  434. }
  435. that.removeYourself = function() {
  436. smalltalk.thisContext = that.homeContext;
  437. that.homeContext = undefined;
  438. smalltalk.oldContexts.push(that);
  439. }
  440. }
  441. /* Global Smalltalk objects. */
  442. var nil = new SmalltalkNil();
  443. var smalltalk = new Smalltalk();
  444. if(this.jQuery) {
  445. this.jQuery.allowJavaScriptCalls = true;
  446. }
  447. /****************************************************************************************/
  448. /* Base classes mapping. If you edit this part, do not forget to set the superclass of the
  449. object metaclass to Class after the definition of Object */
  450. smalltalk.mapClassName("Object", "Kernel", SmalltalkObject);
  451. smalltalk.mapClassName("Smalltalk", "Kernel", Smalltalk, smalltalk.Object);
  452. smalltalk.mapClassName("Package", "Kernel", SmalltalkPackage, smalltalk.Object);
  453. smalltalk.mapClassName("Behavior", "Kernel", SmalltalkBehavior, smalltalk.Object);
  454. smalltalk.mapClassName("Class", "Kernel", SmalltalkClass, smalltalk.Behavior);
  455. smalltalk.mapClassName("Metaclass", "Kernel", SmalltalkMetaclass, smalltalk.Behavior);
  456. smalltalk.mapClassName("CompiledMethod", "Kernel", SmalltalkMethod, smalltalk.Object);
  457. smalltalk.Object.klass.superclass = smalltalk.Class;
  458. smalltalk.mapClassName("Number", "Kernel", Number, smalltalk.Object);
  459. smalltalk.mapClassName("BlockClosure", "Kernel", Function, smalltalk.Object);
  460. smalltalk.mapClassName("Boolean", "Kernel", Boolean, smalltalk.Object);
  461. smalltalk.mapClassName("Date", "Kernel", Date, smalltalk.Object);
  462. smalltalk.mapClassName("UndefinedObject", "Kernel", SmalltalkNil, smalltalk.Object);
  463. smalltalk.mapClassName("Collection", "Kernel", null, smalltalk.Object);
  464. smalltalk.mapClassName("SequenceableCollection", "Kernel", null, smalltalk.Collection);
  465. smalltalk.mapClassName("String", "Kernel", String, smalltalk.SequenceableCollection);
  466. smalltalk.mapClassName("Array", "Kernel", Array, smalltalk.SequenceableCollection);
  467. smalltalk.mapClassName("RegularExpression", "Kernel", RegExp, smalltalk.String);
  468. smalltalk.mapClassName("Error", "Kernel", Error, smalltalk.Object);
  469. smalltalk.mapClassName("MethodContext", "Kernel", SmalltalkMethodContext, smalltalk.Object);
  470. smalltalk.addPackage('Kernel', {});
  471. smalltalk.addClass('Object', smalltalk.nil, [], 'Kernel');
  472. smalltalk.addMethod(
  473. unescape('__eq'),
  474. smalltalk.method({
  475. selector: unescape('%3D'),
  476. category: 'comparing',
  477. fn: function (anObject){
  478. var self=this;
  479. return smalltalk.send(self, "__eq_eq", [anObject]);
  480. return self;},
  481. args: ["anObject"],
  482. source: unescape('%3D%20anObject%0A%09%5Eself%20%3D%3D%20anObject'),
  483. messageSends: [unescape("%3D%3D")],
  484. referencedClasses: []
  485. }),
  486. smalltalk.Object);
  487. smalltalk.addMethod(
  488. unescape('_%7E_eq'),
  489. smalltalk.method({
  490. selector: unescape('%7E%3D'),
  491. category: 'comparing',
  492. fn: function (anObject){
  493. var self=this;
  494. return smalltalk.send(smalltalk.send(self, "__eq", [anObject]), "__eq", [false]);
  495. return self;},
  496. args: ["anObject"],
  497. source: unescape('%7E%3D%20anObject%0A%09%5E%28self%20%3D%20anObject%29%20%3D%20false'),
  498. messageSends: [unescape("%3D")],
  499. referencedClasses: []
  500. }),
  501. smalltalk.Object);
  502. smalltalk.addMethod(
  503. unescape('_initialize'),
  504. smalltalk.method({
  505. selector: unescape('initialize'),
  506. category: 'initialization',
  507. fn: function (){
  508. var self=this;
  509. return self;},
  510. args: [],
  511. source: unescape('initialize'),
  512. messageSends: [],
  513. referencedClasses: []
  514. }),
  515. smalltalk.Object);
  516. smalltalk.addMethod(
  517. unescape('_yourself'),
  518. smalltalk.method({
  519. selector: unescape('yourself'),
  520. category: 'accessing',
  521. fn: function (){
  522. var self=this;
  523. return self;
  524. return self;},
  525. args: [],
  526. source: unescape('yourself%0A%09%5Eself'),
  527. messageSends: [],
  528. referencedClasses: []
  529. }),
  530. smalltalk.Object);
  531. smalltalk.addMethod(
  532. unescape('_class'),
  533. smalltalk.method({
  534. selector: unescape('class'),
  535. category: 'accessing',
  536. fn: function (){
  537. var self=this;
  538. return self.klass;
  539. return self;},
  540. args: [],
  541. source: unescape('class%0A%09%3Creturn%20self.klass%3E'),
  542. messageSends: [],
  543. referencedClasses: []
  544. }),
  545. smalltalk.Object);
  546. smalltalk.addMethod(
  547. unescape('_size'),
  548. smalltalk.method({
  549. selector: unescape('size'),
  550. category: 'accessing',
  551. fn: function (){
  552. var self=this;
  553. smalltalk.send(self, "_error_", ["Object not indexable"]);
  554. return self;},
  555. args: [],
  556. source: unescape('size%0A%09self%20error%3A%20%27Object%20not%20indexable%27'),
  557. messageSends: ["error:"],
  558. referencedClasses: []
  559. }),
  560. smalltalk.Object);
  561. smalltalk.addMethod(
  562. unescape('_copy'),
  563. smalltalk.method({
  564. selector: unescape('copy'),
  565. category: 'copying',
  566. fn: function (){
  567. var self=this;
  568. return smalltalk.send(smalltalk.send(self, "_shallowCopy", []), "_postCopy", []);
  569. return self;},
  570. args: [],
  571. source: unescape('copy%0A%09%5Eself%20shallowCopy%20postCopy'),
  572. messageSends: ["postCopy", "shallowCopy"],
  573. referencedClasses: []
  574. }),
  575. smalltalk.Object);
  576. smalltalk.addMethod(
  577. unescape('_shallowCopy'),
  578. smalltalk.method({
  579. selector: unescape('shallowCopy'),
  580. category: 'copying',
  581. fn: function (){
  582. var self=this;
  583. var copy = self.klass._new();
  584. for(var i in self) {
  585. if(/^@.+/.test(i)) {
  586. copy[i] = self[i];
  587. }
  588. }
  589. return copy;
  590. ;
  591. return self;},
  592. args: [],
  593. source: unescape('shallowCopy%0A%09%3C%0A%09%20%20%20%20var%20copy%20%3D%20self.klass._new%28%29%3B%0A%09%20%20%20%20for%28var%20i%20in%20self%29%20%7B%0A%09%09if%28/%5E@.+/.test%28i%29%29%20%7B%0A%09%09%20%20%20%20copy%5Bi%5D%20%3D%20self%5Bi%5D%3B%0A%09%09%7D%0A%09%20%20%20%20%7D%0A%09%20%20%20%20return%20copy%3B%0A%09%3E'),
  594. messageSends: [],
  595. referencedClasses: []
  596. }),
  597. smalltalk.Object);
  598. smalltalk.addMethod(
  599. unescape('_deepCopy'),
  600. smalltalk.method({
  601. selector: unescape('deepCopy'),
  602. category: 'copying',
  603. fn: function (){
  604. var self=this;
  605. var copy = self.klass._new();
  606. for(var i in self) {
  607. if(/^@.+/.test(i)) {
  608. copy[i] = self[i]._deepCopy();
  609. }
  610. }
  611. return copy;
  612. ;
  613. return self;},
  614. args: [],
  615. source: unescape('deepCopy%0A%09%3C%20%20%20%20%0A%09%20%20%20%20var%20copy%20%3D%20self.klass._new%28%29%3B%0A%09%20%20%20%20for%28var%20i%20in%20self%29%20%7B%0A%09%09if%28/%5E@.+/.test%28i%29%29%20%7B%0A%09%09%20%20%20%20copy%5Bi%5D%20%3D%20self%5Bi%5D._deepCopy%28%29%3B%0A%09%09%7D%0A%09%20%20%20%20%7D%0A%09%20%20%20%20return%20copy%3B%0A%09%3E'),
  616. messageSends: [],
  617. referencedClasses: []
  618. }),
  619. smalltalk.Object);
  620. smalltalk.addMethod(
  621. unescape('_postCopy'),
  622. smalltalk.method({
  623. selector: unescape('postCopy'),
  624. category: 'copying',
  625. fn: function (){
  626. var self=this;
  627. return self;},
  628. args: [],
  629. source: unescape('postCopy'),
  630. messageSends: [],
  631. referencedClasses: []
  632. }),
  633. smalltalk.Object);
  634. smalltalk.addMethod(
  635. unescape('__minus_gt'),
  636. smalltalk.method({
  637. selector: unescape('-%3E'),
  638. category: 'converting',
  639. fn: function (anObject){
  640. var self=this;
  641. return smalltalk.send((smalltalk.Association || Association), "_key_value_", [self, anObject]);
  642. return self;},
  643. args: ["anObject"],
  644. source: unescape('-%3E%20anObject%0A%09%5EAssociation%20key%3A%20self%20value%3A%20anObject'),
  645. messageSends: ["key:value:"],
  646. referencedClasses: [smalltalk.nil]
  647. }),
  648. smalltalk.Object);
  649. smalltalk.addMethod(
  650. unescape('_asString'),
  651. smalltalk.method({
  652. selector: unescape('asString'),
  653. category: 'converting',
  654. fn: function (){
  655. var self=this;
  656. return smalltalk.send(self, "_printString", []);
  657. return self;},
  658. args: [],
  659. source: unescape('asString%0A%09%5Eself%20printString'),
  660. messageSends: ["printString"],
  661. referencedClasses: []
  662. }),
  663. smalltalk.Object);
  664. smalltalk.addMethod(
  665. unescape('_asJavascript'),
  666. smalltalk.method({
  667. selector: unescape('asJavascript'),
  668. category: 'converting',
  669. fn: function (){
  670. var self=this;
  671. return smalltalk.send(self, "_asString", []);
  672. return self;},
  673. args: [],
  674. source: unescape('asJavascript%0A%09%5Eself%20asString'),
  675. messageSends: ["asString"],
  676. referencedClasses: []
  677. }),
  678. smalltalk.Object);
  679. smalltalk.addMethod(
  680. unescape('_perform_'),
  681. smalltalk.method({
  682. selector: unescape('perform%3A'),
  683. category: 'message handling',
  684. fn: function (aSymbol){
  685. var self=this;
  686. return smalltalk.send(self, "_perform_withArguments_", [aSymbol, []]);
  687. return self;},
  688. args: ["aSymbol"],
  689. source: unescape('perform%3A%20aSymbol%0A%09%5Eself%20perform%3A%20aSymbol%20withArguments%3A%20%23%28%29'),
  690. messageSends: ["perform:withArguments:"],
  691. referencedClasses: []
  692. }),
  693. smalltalk.Object);
  694. smalltalk.addMethod(
  695. unescape('_perform_withArguments_'),
  696. smalltalk.method({
  697. selector: unescape('perform%3AwithArguments%3A'),
  698. category: 'message handling',
  699. fn: function (aSymbol, aCollection){
  700. var self=this;
  701. return smalltalk.send(self, "_basicPerform_withArguments_", [smalltalk.send(aSymbol, "_asSelector", []), aCollection]);
  702. return self;},
  703. args: ["aSymbol", "aCollection"],
  704. source: unescape('perform%3A%20aSymbol%20withArguments%3A%20aCollection%0A%09%5Eself%20basicPerform%3A%20aSymbol%20asSelector%20withArguments%3A%20aCollection'),
  705. messageSends: ["basicPerform:withArguments:", "asSelector"],
  706. referencedClasses: []
  707. }),
  708. smalltalk.Object);
  709. smalltalk.addMethod(
  710. unescape('_instVarAt_'),
  711. smalltalk.method({
  712. selector: unescape('instVarAt%3A'),
  713. category: 'accessing',
  714. fn: function (aString){
  715. var self=this;
  716. return self['@'+aString];
  717. return self;},
  718. args: ["aString"],
  719. source: unescape('instVarAt%3A%20aString%0A%09%3Creturn%20self%5B%27@%27+aString%5D%3E'),
  720. messageSends: [],
  721. referencedClasses: []
  722. }),
  723. smalltalk.Object);
  724. smalltalk.addMethod(
  725. unescape('_instVarAt_put_'),
  726. smalltalk.method({
  727. selector: unescape('instVarAt%3Aput%3A'),
  728. category: 'accessing',
  729. fn: function (aString, anObject){
  730. var self=this;
  731. self['@' + aString] = anObject;
  732. return self;},
  733. args: ["aString", "anObject"],
  734. source: unescape('instVarAt%3A%20aString%20put%3A%20anObject%0A%09%3Cself%5B%27@%27%20+%20aString%5D%20%3D%20anObject%3E'),
  735. messageSends: [],
  736. referencedClasses: []
  737. }),
  738. smalltalk.Object);
  739. smalltalk.addMethod(
  740. unescape('_basicAt_'),
  741. smalltalk.method({
  742. selector: unescape('basicAt%3A'),
  743. category: 'accessing',
  744. fn: function (aString){
  745. var self=this;
  746. return self[aString];
  747. return self;},
  748. args: ["aString"],
  749. source: unescape('basicAt%3A%20aString%0A%09%3Creturn%20self%5BaString%5D%3E'),
  750. messageSends: [],
  751. referencedClasses: []
  752. }),
  753. smalltalk.Object);
  754. smalltalk.addMethod(
  755. unescape('_basicAt_put_'),
  756. smalltalk.method({
  757. selector: unescape('basicAt%3Aput%3A'),
  758. category: 'accessing',
  759. fn: function (aString, anObject){
  760. var self=this;
  761. return self[aString] = anObject;
  762. return self;},
  763. args: ["aString", "anObject"],
  764. source: unescape('basicAt%3A%20aString%20put%3A%20anObject%0A%09%3Creturn%20self%5BaString%5D%20%3D%20anObject%3E'),
  765. messageSends: [],
  766. referencedClasses: []
  767. }),
  768. smalltalk.Object);
  769. smalltalk.addMethod(
  770. unescape('_error_'),
  771. smalltalk.method({
  772. selector: unescape('error%3A'),
  773. category: 'error handling',
  774. fn: function (aString){
  775. var self=this;
  776. smalltalk.send((smalltalk.Error || Error), "_signal_", [aString]);
  777. return self;},
  778. args: ["aString"],
  779. source: unescape('error%3A%20aString%0A%09Error%20signal%3A%20aString'),
  780. messageSends: ["signal:"],
  781. referencedClasses: [smalltalk.Error]
  782. }),
  783. smalltalk.Object);
  784. smalltalk.addMethod(
  785. unescape('_subclassResponsibility'),
  786. smalltalk.method({
  787. selector: unescape('subclassResponsibility'),
  788. category: 'error handling',
  789. fn: function (){
  790. var self=this;
  791. smalltalk.send(self, "_error_", ["This method is a responsibility of a subclass"]);
  792. return self;},
  793. args: [],
  794. source: unescape('subclassResponsibility%0A%09self%20error%3A%20%27This%20method%20is%20a%20responsibility%20of%20a%20subclass%27'),
  795. messageSends: ["error:"],
  796. referencedClasses: []
  797. }),
  798. smalltalk.Object);
  799. smalltalk.addMethod(
  800. unescape('_shouldNotImplement'),
  801. smalltalk.method({
  802. selector: unescape('shouldNotImplement'),
  803. category: 'error handling',
  804. fn: function (){
  805. var self=this;
  806. smalltalk.send(self, "_error_", [smalltalk.send("This method should not be implemented in ", "__comma", [smalltalk.send(smalltalk.send(self, "_class", []), "_name", [])])]);
  807. return self;},
  808. args: [],
  809. source: unescape('shouldNotImplement%0A%09self%20error%3A%20%27This%20method%20should%20not%20be%20implemented%20in%20%27%2C%20self%20class%20name'),
  810. messageSends: ["error:", unescape("%2C"), "name", "class"],
  811. referencedClasses: []
  812. }),
  813. smalltalk.Object);
  814. smalltalk.addMethod(
  815. unescape('_try_catch_'),
  816. smalltalk.method({
  817. selector: unescape('try%3Acatch%3A'),
  818. category: 'error handling',
  819. fn: function (aBlock, anotherBlock){
  820. var self=this;
  821. try{aBlock()} catch(e) {anotherBlock(e)};
  822. return self;},
  823. args: ["aBlock", "anotherBlock"],
  824. source: unescape('try%3A%20aBlock%20catch%3A%20anotherBlock%0A%09%3Ctry%7BaBlock%28%29%7D%20catch%28e%29%20%7BanotherBlock%28e%29%7D%3E'),
  825. messageSends: [],
  826. referencedClasses: []
  827. }),
  828. smalltalk.Object);
  829. smalltalk.addMethod(
  830. unescape('_printString'),
  831. smalltalk.method({
  832. selector: unescape('printString'),
  833. category: 'printing',
  834. fn: function (){
  835. var self=this;
  836. return smalltalk.send("a ", "__comma", [smalltalk.send(smalltalk.send(self, "_class", []), "_name", [])]);
  837. return self;},
  838. args: [],
  839. source: unescape('printString%0A%09%5E%27a%20%27%2C%20self%20class%20name'),
  840. messageSends: [unescape("%2C"), "name", "class"],
  841. referencedClasses: []
  842. }),
  843. smalltalk.Object);
  844. smalltalk.addMethod(
  845. unescape('_printNl'),
  846. smalltalk.method({
  847. selector: unescape('printNl'),
  848. category: 'printing',
  849. fn: function (){
  850. var self=this;
  851. console.log(self);
  852. return self;},
  853. args: [],
  854. source: unescape('printNl%0A%09%3Cconsole.log%28self%29%3E'),
  855. messageSends: [],
  856. referencedClasses: []
  857. }),
  858. smalltalk.Object);
  859. smalltalk.addMethod(
  860. unescape('_isKindOf_'),
  861. smalltalk.method({
  862. selector: unescape('isKindOf%3A'),
  863. category: 'testing',
  864. fn: function (aClass){
  865. var self=this;
  866. return ((($receiver = smalltalk.send(self, "_isMemberOf_", [aClass])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return true;})() : (function(){return smalltalk.send(smalltalk.send(self, "_class", []), "_inheritsFrom_", [aClass]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return true;}), (function(){return smalltalk.send(smalltalk.send(self, "_class", []), "_inheritsFrom_", [aClass]);})]));
  867. return self;},
  868. args: ["aClass"],
  869. source: unescape('isKindOf%3A%20aClass%0A%09%5E%28self%20isMemberOf%3A%20aClass%29%0A%09%20%20%20%20ifTrue%3A%20%5Btrue%5D%0A%09%20%20%20%20ifFalse%3A%20%5Bself%20class%20inheritsFrom%3A%20aClass%5D'),
  870. messageSends: ["ifTrue:ifFalse:", "isMemberOf:", "inheritsFrom:", "class"],
  871. referencedClasses: []
  872. }),
  873. smalltalk.Object);
  874. smalltalk.addMethod(
  875. unescape('_isMemberOf_'),
  876. smalltalk.method({
  877. selector: unescape('isMemberOf%3A'),
  878. category: 'testing',
  879. fn: function (aClass){
  880. var self=this;
  881. return smalltalk.send(smalltalk.send(self, "_class", []), "__eq", [aClass]);
  882. return self;},
  883. args: ["aClass"],
  884. source: unescape('isMemberOf%3A%20aClass%0A%09%5Eself%20class%20%3D%20aClass'),
  885. messageSends: [unescape("%3D"), "class"],
  886. referencedClasses: []
  887. }),
  888. smalltalk.Object);
  889. smalltalk.addMethod(
  890. unescape('_ifNil_'),
  891. smalltalk.method({
  892. selector: unescape('ifNil%3A'),
  893. category: 'testing',
  894. fn: function (aBlock){
  895. var self=this;
  896. return self;
  897. return self;},
  898. args: ["aBlock"],
  899. source: unescape('ifNil%3A%20aBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5Eself'),
  900. messageSends: [],
  901. referencedClasses: []
  902. }),
  903. smalltalk.Object);
  904. smalltalk.addMethod(
  905. unescape('_ifNil_ifNotNil_'),
  906. smalltalk.method({
  907. selector: unescape('ifNil%3AifNotNil%3A'),
  908. category: 'testing',
  909. fn: function (aBlock, anotherBlock){
  910. var self=this;
  911. return smalltalk.send(anotherBlock, "_value", []);
  912. return self;},
  913. args: ["aBlock", "anotherBlock"],
  914. source: unescape('ifNil%3A%20aBlock%20ifNotNil%3A%20anotherBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5EanotherBlock%20value'),
  915. messageSends: ["value"],
  916. referencedClasses: []
  917. }),
  918. smalltalk.Object);
  919. smalltalk.addMethod(
  920. unescape('_ifNotNil_'),
  921. smalltalk.method({
  922. selector: unescape('ifNotNil%3A'),
  923. category: 'testing',
  924. fn: function (aBlock){
  925. var self=this;
  926. return smalltalk.send(aBlock, "_value", []);
  927. return self;},
  928. args: ["aBlock"],
  929. source: unescape('ifNotNil%3A%20aBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5EaBlock%20value'),
  930. messageSends: ["value"],
  931. referencedClasses: []
  932. }),
  933. smalltalk.Object);
  934. smalltalk.addMethod(
  935. unescape('_ifNotNil_ifNil_'),
  936. smalltalk.method({
  937. selector: unescape('ifNotNil%3AifNil%3A'),
  938. category: 'testing',
  939. fn: function (aBlock, anotherBlock){
  940. var self=this;
  941. return smalltalk.send(aBlock, "_value", []);
  942. return self;},
  943. args: ["aBlock", "anotherBlock"],
  944. source: unescape('ifNotNil%3A%20aBlock%20ifNil%3A%20anotherBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5EaBlock%20value'),
  945. messageSends: ["value"],
  946. referencedClasses: []
  947. }),
  948. smalltalk.Object);
  949. smalltalk.addMethod(
  950. unescape('_isNil'),
  951. smalltalk.method({
  952. selector: unescape('isNil'),
  953. category: 'testing',
  954. fn: function (){
  955. var self=this;
  956. return false;
  957. return self;},
  958. args: [],
  959. source: unescape('isNil%0A%09%5Efalse'),
  960. messageSends: [],
  961. referencedClasses: []
  962. }),
  963. smalltalk.Object);
  964. smalltalk.addMethod(
  965. unescape('_notNil'),
  966. smalltalk.method({
  967. selector: unescape('notNil'),
  968. category: 'testing',
  969. fn: function (){
  970. var self=this;
  971. return smalltalk.send(smalltalk.send(self, "_isNil", []), "_not", []);
  972. return self;},
  973. args: [],
  974. source: unescape('notNil%0A%09%5Eself%20isNil%20not'),
  975. messageSends: ["not", "isNil"],
  976. referencedClasses: []
  977. }),
  978. smalltalk.Object);
  979. smalltalk.addMethod(
  980. unescape('_isClass'),
  981. smalltalk.method({
  982. selector: unescape('isClass'),
  983. category: 'testing',
  984. fn: function (){
  985. var self=this;
  986. return false;
  987. return self;},
  988. args: [],
  989. source: unescape('isClass%0A%09%5Efalse'),
  990. messageSends: [],
  991. referencedClasses: []
  992. }),
  993. smalltalk.Object);
  994. smalltalk.addMethod(
  995. unescape('_isMetaclass'),
  996. smalltalk.method({
  997. selector: unescape('isMetaclass'),
  998. category: 'testing',
  999. fn: function (){
  1000. var self=this;
  1001. return false;
  1002. return self;},
  1003. args: [],
  1004. source: unescape('isMetaclass%0A%09%5Efalse'),
  1005. messageSends: [],
  1006. referencedClasses: []
  1007. }),
  1008. smalltalk.Object);
  1009. smalltalk.addMethod(
  1010. unescape('_isNumber'),
  1011. smalltalk.method({
  1012. selector: unescape('isNumber'),
  1013. category: 'testing',
  1014. fn: function (){
  1015. var self=this;
  1016. return false;
  1017. return self;},
  1018. args: [],
  1019. source: unescape('isNumber%0A%09%5Efalse'),
  1020. messageSends: [],
  1021. referencedClasses: []
  1022. }),
  1023. smalltalk.Object);
  1024. smalltalk.addMethod(
  1025. unescape('_isString'),
  1026. smalltalk.method({
  1027. selector: unescape('isString'),
  1028. category: 'testing',
  1029. fn: function (){
  1030. var self=this;
  1031. return false;
  1032. return self;},
  1033. args: [],
  1034. source: unescape('isString%0A%09%5Efalse'),
  1035. messageSends: [],
  1036. referencedClasses: []
  1037. }),
  1038. smalltalk.Object);
  1039. smalltalk.addMethod(
  1040. unescape('_isParseFailure'),
  1041. smalltalk.method({
  1042. selector: unescape('isParseFailure'),
  1043. category: 'testing',
  1044. fn: function (){
  1045. var self=this;
  1046. return false;
  1047. return self;},
  1048. args: [],
  1049. source: unescape('isParseFailure%0A%09%5Efalse'),
  1050. messageSends: [],
  1051. referencedClasses: []
  1052. }),
  1053. smalltalk.Object);
  1054. smalltalk.addMethod(
  1055. unescape('_basicPerform_'),
  1056. smalltalk.method({
  1057. selector: unescape('basicPerform%3A'),
  1058. category: 'message handling',
  1059. fn: function (aSymbol){
  1060. var self=this;
  1061. return smalltalk.send(self, "_basicPerform_withArguments_", [aSymbol, []]);
  1062. return self;},
  1063. args: ["aSymbol"],
  1064. source: unescape('basicPerform%3A%20aSymbol%20%0A%09%5Eself%20basicPerform%3A%20aSymbol%20withArguments%3A%20%23%28%29'),
  1065. messageSends: ["basicPerform:withArguments:"],
  1066. referencedClasses: []
  1067. }),
  1068. smalltalk.Object);
  1069. smalltalk.addMethod(
  1070. unescape('_basicPerform_withArguments_'),
  1071. smalltalk.method({
  1072. selector: unescape('basicPerform%3AwithArguments%3A'),
  1073. category: 'message handling',
  1074. fn: function (aSymbol, aCollection){
  1075. var self=this;
  1076. return self[aSymbol].apply(self, aCollection);;
  1077. return self;},
  1078. args: ["aSymbol", "aCollection"],
  1079. source: unescape('basicPerform%3A%20aSymbol%20withArguments%3A%20aCollection%0A%09%3Creturn%20self%5BaSymbol%5D.apply%28self%2C%20aCollection%29%3B%3E'),
  1080. messageSends: [],
  1081. referencedClasses: []
  1082. }),
  1083. smalltalk.Object);
  1084. smalltalk.addMethod(
  1085. unescape('_basicDelete_'),
  1086. smalltalk.method({
  1087. selector: unescape('basicDelete%3A'),
  1088. category: 'accessing',
  1089. fn: function (aString){
  1090. var self=this;
  1091. delete self[aString];
  1092. return self;},
  1093. args: ["aString"],
  1094. source: unescape('basicDelete%3A%20aString%0A%20%20%20%20%3Cdelete%20self%5BaString%5D%3E'),
  1095. messageSends: [],
  1096. referencedClasses: []
  1097. }),
  1098. smalltalk.Object);
  1099. smalltalk.addMethod(
  1100. unescape('_doesNotUnderstand_'),
  1101. smalltalk.method({
  1102. selector: unescape('doesNotUnderstand%3A'),
  1103. category: 'error handling',
  1104. fn: function (aMessage){
  1105. var self=this;
  1106. (function($rec){smalltalk.send($rec, "_receiver_", [self]);smalltalk.send($rec, "_message_", [aMessage]);return smalltalk.send($rec, "_signal", []);})(smalltalk.send((smalltalk.MessageNotUnderstood || MessageNotUnderstood), "_new", []));
  1107. return self;},
  1108. args: ["aMessage"],
  1109. source: unescape('doesNotUnderstand%3A%20aMessage%0A%09MessageNotUnderstood%20new%0A%09%09receiver%3A%20self%3B%0A%09%09message%3A%20aMessage%3B%0A%09%09signal'),
  1110. messageSends: ["receiver:", "message:", "signal", "new"],
  1111. referencedClasses: [smalltalk.nil]
  1112. }),
  1113. smalltalk.Object);
  1114. smalltalk.addMethod(
  1115. unescape('_asJSON'),
  1116. smalltalk.method({
  1117. selector: unescape('asJSON'),
  1118. category: 'converting',
  1119. fn: function (){
  1120. var self=this;
  1121. return JSON.stringify(self._asJSONObject());
  1122. return self;},
  1123. args: [],
  1124. source: unescape('asJSON%0A%09%3Creturn%20JSON.stringify%28self._asJSONObject%28%29%29%3E'),
  1125. messageSends: [],
  1126. referencedClasses: []
  1127. }),
  1128. smalltalk.Object);
  1129. smalltalk.addMethod(
  1130. unescape('_asJSONObject'),
  1131. smalltalk.method({
  1132. selector: unescape('asJSONObject'),
  1133. category: 'converting',
  1134. fn: function (){
  1135. var self=this;
  1136. var object=nil;
  1137. object=smalltalk.send((smalltalk.Object || Object), "_new", []);
  1138. smalltalk.send(smalltalk.send(smalltalk.send(self, "_class", []), "_instanceVariableNames", []), "_do_", [(function(each){return smalltalk.send(object, "_basicAt_put_", [each, smalltalk.send(smalltalk.send(self, "_instVarAt_", [each]), "_asJSONObject", [])]);})]);
  1139. return object;
  1140. return self;},
  1141. args: [],
  1142. source: unescape('asJSONObject%0A%09%7C%20object%20%7C%0A%09object%20%3A%3D%20Object%20new.%0A%09self%20class%20instanceVariableNames%20do%3A%20%5B%3Aeach%20%7C%0A%09%09object%20basicAt%3A%20each%20put%3A%20%28self%20instVarAt%3A%20each%29%20asJSONObject%5D.%0A%09%5Eobject'),
  1143. messageSends: ["new", "do:", "instanceVariableNames", "class", "basicAt:put:", "asJSONObject", "instVarAt:"],
  1144. referencedClasses: [smalltalk.Object]
  1145. }),
  1146. smalltalk.Object);
  1147. smalltalk.addMethod(
  1148. unescape('_halt'),
  1149. smalltalk.method({
  1150. selector: unescape('halt'),
  1151. category: 'error handling',
  1152. fn: function (){
  1153. var self=this;
  1154. smalltalk.send(self, "_error_", ["Halt encountered"]);
  1155. return self;},
  1156. args: [],
  1157. source: unescape('halt%0A%09self%20error%3A%20%27Halt%20encountered%27'),
  1158. messageSends: ["error:"],
  1159. referencedClasses: []
  1160. }),
  1161. smalltalk.Object);
  1162. smalltalk.addMethod(
  1163. unescape('_log_block_'),
  1164. smalltalk.method({
  1165. selector: unescape('log%3Ablock%3A'),
  1166. category: 'printing',
  1167. fn: function (aString, aBlock){
  1168. var self=this;
  1169. var result=nil;
  1170. smalltalk.send((typeof console == 'undefined' ? nil : console), "_log_", [smalltalk.send(smalltalk.send(aString, "__comma", [" time: "]), "__comma", [smalltalk.send(smalltalk.send((smalltalk.Date || Date), "_millisecondsToRun_", [(function(){return result=smalltalk.send(aBlock, "_value", []);})]), "_printString", [])])]);
  1171. return result;
  1172. return self;},
  1173. args: ["aString", "aBlock"],
  1174. source: unescape('log%3A%20aString%20block%3A%20aBlock%0A%0A%09%7C%20result%20%7C%0A%09console%20log%3A%20%20aString%2C%20%20%27%20time%3A%20%27%2C%20%28Date%20millisecondsToRun%3A%20%5Bresult%20%3A%3D%20aBlock%20value%5D%29%20printString.%0A%09%5Eresult'),
  1175. messageSends: ["log:", unescape("%2C"), "printString", "millisecondsToRun:", "value"],
  1176. referencedClasses: [smalltalk.Date]
  1177. }),
  1178. smalltalk.Object);
  1179. smalltalk.addMethod(
  1180. unescape('__eq_eq'),
  1181. smalltalk.method({
  1182. selector: unescape('%3D%3D'),
  1183. category: 'comparing',
  1184. fn: function (anObject){
  1185. var self=this;
  1186. return self === anObject;
  1187. return self;},
  1188. args: ["anObject"],
  1189. source: unescape('%3D%3D%20anObject%0A%09%3Creturn%20self%20%3D%3D%3D%20anObject%3E'),
  1190. messageSends: [],
  1191. referencedClasses: []
  1192. }),
  1193. smalltalk.Object);
  1194. smalltalk.addMethod(
  1195. unescape('_%7E%7E'),
  1196. smalltalk.method({
  1197. selector: unescape('%7E%7E'),
  1198. category: 'comparing',
  1199. fn: function (anObject){
  1200. var self=this;
  1201. return smalltalk.send(smalltalk.send(self, "__eq_eq", [anObject]), "__eq", [false]);
  1202. return self;},
  1203. args: ["anObject"],
  1204. source: unescape('%7E%7E%20anObject%0A%09%5E%28self%20%3D%3D%20anObject%29%20%3D%20false'),
  1205. messageSends: [unescape("%3D"), unescape("%3D%3D")],
  1206. referencedClasses: []
  1207. }),
  1208. smalltalk.Object);
  1209. smalltalk.addMethod(
  1210. unescape('_deprecatedAPI'),
  1211. smalltalk.method({
  1212. selector: unescape('deprecatedAPI'),
  1213. category: 'error handling',
  1214. fn: function (){
  1215. var self=this;
  1216. smalltalk.send((typeof console == 'undefined' ? nil : console), "_warn_", [smalltalk.send(smalltalk.send(smalltalk.send((smalltalk.getThisContext()), "_home", []), "_asString", []), "__comma", [unescape("%20is%20deprecated%21")])]);
  1217. return self;},
  1218. args: [],
  1219. source: unescape('deprecatedAPI%0A%09%22Just%20a%20simple%20way%20to%20deprecate%20methods.%0A%09%23deprecatedAPI%20is%20in%20the%20%27error%20handling%27%20protocol%20even%20if%20it%20doesn%27t%20throw%20an%20error%2C%0A%09but%20it%20could%20in%20the%20future.%22%0A%09console%20warn%3A%20thisContext%20home%20asString%2C%20%27%20is%20deprecated%21%27'),
  1220. messageSends: ["warn:", unescape("%2C"), "asString", "home"],
  1221. referencedClasses: []
  1222. }),
  1223. smalltalk.Object);
  1224. smalltalk.addMethod(
  1225. unescape('_storeString'),
  1226. smalltalk.method({
  1227. selector: unescape('storeString'),
  1228. category: 'printing',
  1229. fn: function (){
  1230. var self=this;
  1231. return smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(s){return smalltalk.send(self, "_storeOn_", [s]);})]);
  1232. return self;},
  1233. args: [],
  1234. source: unescape('storeString%0A%09%22Answer%20a%20String%20representation%20of%20the%20receiver%20from%20which%20the%20receiver%20%0A%09can%20be%20reconstructed.%22%0A%0A%09%5E%20String%20streamContents%3A%20%5B%3As%20%7C%20self%20storeOn%3A%20s%5D'),
  1235. messageSends: ["streamContents:", "storeOn:"],
  1236. referencedClasses: [smalltalk.String]
  1237. }),
  1238. smalltalk.Object);
  1239. smalltalk.addMethod(
  1240. unescape('_storeOn_'),
  1241. smalltalk.method({
  1242. selector: unescape('storeOn%3A'),
  1243. category: 'printing',
  1244. fn: function (aStream){
  1245. var self=this;
  1246. smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send(self, "_printString", [])]);
  1247. return self;},
  1248. args: ["aStream"],
  1249. source: unescape('storeOn%3A%20aStream%0A%09aStream%20nextPutAll%3A%20self%20printString'),
  1250. messageSends: ["nextPutAll:", "printString"],
  1251. referencedClasses: []
  1252. }),
  1253. smalltalk.Object);
  1254. smalltalk.addMethod(
  1255. unescape('_initialize'),
  1256. smalltalk.method({
  1257. selector: unescape('initialize'),
  1258. category: 'initialization',
  1259. fn: function (){
  1260. var self=this;
  1261. return self;},
  1262. args: [],
  1263. source: unescape('initialize%0A%09%22no%20op%22'),
  1264. messageSends: [],
  1265. referencedClasses: []
  1266. }),
  1267. smalltalk.Object.klass);
  1268. smalltalk.addClass('Smalltalk', smalltalk.Object, [], 'Kernel');
  1269. smalltalk.addMethod(
  1270. unescape('_classes'),
  1271. smalltalk.method({
  1272. selector: unescape('classes'),
  1273. category: 'accessing',
  1274. fn: function (){
  1275. var self=this;
  1276. return self.classes();
  1277. return self;},
  1278. args: [],
  1279. source: unescape('classes%0A%09%3Creturn%20self.classes%28%29%3E'),
  1280. messageSends: [],
  1281. referencedClasses: []
  1282. }),
  1283. smalltalk.Smalltalk);
  1284. smalltalk.addMethod(
  1285. unescape('_readJSON_'),
  1286. smalltalk.method({
  1287. selector: unescape('readJSON%3A'),
  1288. category: 'accessing',
  1289. fn: function (anObject){
  1290. var self=this;
  1291. return self.readJSObject(anObject);
  1292. return self;},
  1293. args: ["anObject"],
  1294. source: unescape('readJSON%3A%20anObject%0A%09%3Creturn%20self.readJSObject%28anObject%29%3E'),
  1295. messageSends: [],
  1296. referencedClasses: []
  1297. }),
  1298. smalltalk.Smalltalk);
  1299. smalltalk.addMethod(
  1300. unescape('_at_'),
  1301. smalltalk.method({
  1302. selector: unescape('at%3A'),
  1303. category: 'accessing',
  1304. fn: function (aString){
  1305. var self=this;
  1306. return self[aString];
  1307. return self;},
  1308. args: ["aString"],
  1309. source: unescape('at%3A%20aString%0A%09%3Creturn%20self%5BaString%5D%3E'),
  1310. messageSends: [],
  1311. referencedClasses: []
  1312. }),
  1313. smalltalk.Smalltalk);
  1314. smalltalk.addMethod(
  1315. unescape('_removeClass_'),
  1316. smalltalk.method({
  1317. selector: unescape('removeClass%3A'),
  1318. category: 'classes',
  1319. fn: function (aClass){
  1320. var self=this;
  1321. ((($receiver = smalltalk.send(aClass, "_isMetaclass", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_error_", [smalltalk.send(smalltalk.send(aClass, "_asString", []), "__comma", [unescape("%20is%20a%20Metaclass%20and%20cannot%20be%20removed%21")])]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(self, "_error_", [smalltalk.send(smalltalk.send(aClass, "_asString", []), "__comma", [unescape("%20is%20a%20Metaclass%20and%20cannot%20be%20removed%21")])]);})]));
  1322. smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_methodDictionary", []), "_values", []), "_do_", [(function(each){return smalltalk.send(aClass, "_removeCompiledMethod_", [each]);})]);
  1323. smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_class", []), "_methodDictionary", []), "_values", []), "_do_", [(function(each){return smalltalk.send(smalltalk.send(aClass, "_class", []), "_removeCompiledMethod_", [each]);})]);
  1324. smalltalk.send(self, "_basicDelete_", [smalltalk.send(aClass, "_name", [])]);
  1325. return self;},
  1326. args: ["aClass"],
  1327. source: unescape('removeClass%3A%20aClass%0A%09aClass%20isMetaclass%20ifTrue%3A%20%5Bself%20error%3A%20aClass%20asString%2C%20%27%20is%20a%20Metaclass%20and%20cannot%20be%20removed%21%27%5D.%0A%09aClass%20methodDictionary%20values%20do%3A%20%5B%3Aeach%20%7C%0A%09%09aClass%20removeCompiledMethod%3A%20each%5D.%0A%09aClass%20class%20methodDictionary%20values%20do%3A%20%5B%3Aeach%20%7C%0A%09%09aClass%20class%20removeCompiledMethod%3A%20each%5D.%0A%09self%20basicDelete%3A%20aClass%20name'),
  1328. messageSends: ["ifTrue:", "isMetaclass", "error:", unescape("%2C"), "asString", "do:", "values", "methodDictionary", "removeCompiledMethod:", "class", "basicDelete:", "name"],
  1329. referencedClasses: []
  1330. }),
  1331. smalltalk.Smalltalk);
  1332. smalltalk.addMethod(
  1333. unescape('_basicParse_'),
  1334. smalltalk.method({
  1335. selector: unescape('basicParse%3A'),
  1336. category: 'accessing',
  1337. fn: function (aString){
  1338. var self=this;
  1339. return smalltalk.parser.parse(aString);
  1340. return self;},
  1341. args: ["aString"],
  1342. source: unescape('basicParse%3A%20aString%0A%09%3Creturn%20smalltalk.parser.parse%28aString%29%3E'),
  1343. messageSends: [],
  1344. referencedClasses: []
  1345. }),
  1346. smalltalk.Smalltalk);
  1347. smalltalk.addMethod(
  1348. unescape('_parse_'),
  1349. smalltalk.method({
  1350. selector: unescape('parse%3A'),
  1351. category: 'accessing',
  1352. fn: function (aString){
  1353. var self=this;
  1354. var result=nil;
  1355. smalltalk.send(self, "_try_catch_", [(function(){return result=smalltalk.send(self, "_basicParse_", [aString]);}), (function(ex){return smalltalk.send(smalltalk.send(self, "_parseError_parsing_", [ex, aString]), "_signal", []);})]);
  1356. return result;
  1357. return self;},
  1358. args: ["aString"],
  1359. source: unescape('parse%3A%20aString%0A%09%7C%20result%20%7C%20%0A%09self%20try%3A%20%5Bresult%20%3A%3D%20self%20basicParse%3A%20aString%5D%20catch%3A%20%5B%3Aex%20%7C%20%28self%20parseError%3A%20ex%20parsing%3A%20aString%29%20signal%5D.%0A%09%5Eresult'),
  1360. messageSends: ["try:catch:", "basicParse:", "signal", "parseError:parsing:"],
  1361. referencedClasses: []
  1362. }),
  1363. smalltalk.Smalltalk);
  1364. smalltalk.addMethod(
  1365. unescape('_parseError_parsing_'),
  1366. smalltalk.method({
  1367. selector: unescape('parseError%3Aparsing%3A'),
  1368. category: 'accessing',
  1369. fn: function (anException, aString){
  1370. var self=this;
  1371. var row=nil;
  1372. var col=nil;
  1373. var message=nil;
  1374. var lines=nil;
  1375. var badLine=nil;
  1376. var code=nil;
  1377. row = anException.line;
  1378. col = anException.column;
  1379. message = anException.message;;
  1380. lines=smalltalk.send(aString, "_lines", []);
  1381. badLine=smalltalk.send(lines, "_at_", [row]);
  1382. badLine=smalltalk.send(smalltalk.send(smalltalk.send(badLine, "_copyFrom_to_", [(1), ((($receiver = col).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)]))]), "__comma", [unescape("%20%3D%3D%3D%3E")]), "__comma", [smalltalk.send(badLine, "_copyFrom_to_", [col, smalltalk.send(badLine, "_size", [])])]);
  1383. smalltalk.send(lines, "_at_put_", [row, badLine]);
  1384. code=smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(s){return smalltalk.send(lines, "_withIndexDo_", [(function(l, i){return smalltalk.send(s, "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(i, "_asString", []), "__comma", [": "]), "__comma", [l]), "__comma", [smalltalk.send((smalltalk.String || String), "_lf", [])])]);})]);})]);
  1385. return smalltalk.send(smalltalk.send((smalltalk.Error || Error), "_new", []), "_messageText_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send("Parse error on line ", "__comma", [row]), "__comma", [" column "]), "__comma", [col]), "__comma", [" : "]), "__comma", [message]), "__comma", [unescape("%20Below%20is%20code%20with%20line%20numbers%20and%20%3D%3D%3D%3E%20marker%20inserted%3A")]), "__comma", [smalltalk.send((smalltalk.String || String), "_lf", [])]), "__comma", [code])]);
  1386. return self;},
  1387. args: ["anException", "aString"],
  1388. source: unescape('parseError%3A%20anException%20parsing%3A%20aString%0A%09%7C%20row%20col%20message%20lines%20badLine%20code%20%7C%0A%09%3Crow%20%3D%20anException.line%3B%0A%09col%20%3D%20anException.column%3B%0A%09message%20%3D%20anException.message%3B%3E.%0A%09lines%20%3A%3D%20aString%20lines.%0A%09badLine%20%3A%3D%20lines%20at%3A%20row.%0A%09badLine%20%3A%3D%20%28badLine%20copyFrom%3A%201%20to%3A%20col%20-%201%29%2C%20%27%20%3D%3D%3D%3E%27%2C%20%28badLine%20copyFrom%3A%20%20col%20to%3A%20badLine%20size%29.%0A%09lines%20at%3A%20row%20put%3A%20badLine.%0A%09code%20%3A%3D%20String%20streamContents%3A%20%5B%3As%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20lines%20withIndexDo%3A%20%5B%3Al%20%3Ai%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20s%20nextPutAll%3A%20i%20asString%2C%20%27%3A%20%27%2C%20l%2C%20String%20lf%5D%5D.%0A%09%5E%20Error%20new%20messageText%3A%20%28%27Parse%20error%20on%20line%20%27%20%2C%20row%20%2C%20%27%20column%20%27%20%2C%20col%20%2C%20%27%20%3A%20%27%20%2C%20message%20%2C%20%27%20Below%20is%20code%20with%20line%20numbers%20and%20%3D%3D%3D%3E%20marker%20inserted%3A%27%20%2C%20String%20lf%2C%20code%29'),
  1389. messageSends: ["lines", "at:", unescape("%2C"), "copyFrom:to:", unescape("-"), "size", "at:put:", "streamContents:", "withIndexDo:", "nextPutAll:", "asString", "lf", "messageText:", "new"],
  1390. referencedClasses: [smalltalk.String,smalltalk.Error]
  1391. }),
  1392. smalltalk.Smalltalk);
  1393. smalltalk.addMethod(
  1394. unescape('_packages'),
  1395. smalltalk.method({
  1396. selector: unescape('packages'),
  1397. category: 'packages',
  1398. fn: function (){
  1399. var self=this;
  1400. return self.packages.all();
  1401. return self;},
  1402. args: [],
  1403. source: unescape('packages%0A%09%22Return%20all%20Package%20instances%20in%20the%20system.%22%0A%0A%09%3Creturn%20self.packages.all%28%29%3E'),
  1404. messageSends: [],
  1405. referencedClasses: []
  1406. }),
  1407. smalltalk.Smalltalk);
  1408. smalltalk.addMethod(
  1409. unescape('_packageAt_'),
  1410. smalltalk.method({
  1411. selector: unescape('packageAt%3A'),
  1412. category: 'packages',
  1413. fn: function (packageName){
  1414. var self=this;
  1415. return self.packages[packageName];
  1416. return self;},
  1417. args: ["packageName"],
  1418. source: unescape('packageAt%3A%20packageName%0A%20%20%20%20%20%20%20%3Creturn%20self.packages%5BpackageName%5D%3E'),
  1419. messageSends: [],
  1420. referencedClasses: []
  1421. }),
  1422. smalltalk.Smalltalk);
  1423. smalltalk.addMethod(
  1424. unescape('_packageAt_ifAbsent_'),
  1425. smalltalk.method({
  1426. selector: unescape('packageAt%3AifAbsent%3A'),
  1427. category: 'packages',
  1428. fn: function (packageName, aBlock){
  1429. var self=this;
  1430. return smalltalk.send(smalltalk.send(self, "_packageAt_", [packageName]), "_ifNil_", [aBlock]);
  1431. return self;},
  1432. args: ["packageName", "aBlock"],
  1433. source: unescape('packageAt%3A%20packageName%20ifAbsent%3A%20aBlock%0A%20%20%20%20%20%20%20%5E%28self%20packageAt%3A%20packageName%29%20ifNil%3A%20aBlock'),
  1434. messageSends: ["ifNil:", "packageAt:"],
  1435. referencedClasses: []
  1436. }),
  1437. smalltalk.Smalltalk);
  1438. smalltalk.addMethod(
  1439. unescape('_createPackage_'),
  1440. smalltalk.method({
  1441. selector: unescape('createPackage%3A'),
  1442. category: 'private',
  1443. fn: function (packageName){
  1444. var self=this;
  1445. return smalltalk.addPackage(packageName, nil);
  1446. return self;},
  1447. args: ["packageName"],
  1448. source: unescape('createPackage%3A%20packageName%0A%09%22Create%20and%20bind%20a%20new%20package%20with%20given%20name%20and%20return%20it.%22%0A%0A%20%20%20%20%20%20%3Creturn%20smalltalk.addPackage%28packageName%2C%20nil%29%3E'),
  1449. messageSends: [],
  1450. referencedClasses: []
  1451. }),
  1452. smalltalk.Smalltalk);
  1453. smalltalk.addMethod(
  1454. unescape('_deletePackage_'),
  1455. smalltalk.method({
  1456. selector: unescape('deletePackage%3A'),
  1457. category: 'private',
  1458. fn: function (packageName){
  1459. var self=this;
  1460. delete smalltalk.packages[packageName];
  1461. return self;},
  1462. args: ["packageName"],
  1463. source: unescape('deletePackage%3A%20packageName%0A%09%22Deletes%20a%20package%20by%20deleting%20its%20binding%2C%20but%20does%20not%20check%20if%20it%20contains%20classes%20etc.%0A%09To%20remove%20a%20package%2C%20use%20%23removePackage%20instead.%22%0A%0A%20%20%20%20%20%20%20%3Cdelete%20smalltalk.packages%5BpackageName%5D%3E'),
  1464. messageSends: [],
  1465. referencedClasses: []
  1466. }),
  1467. smalltalk.Smalltalk);
  1468. smalltalk.addMethod(
  1469. unescape('_removePackage_'),
  1470. smalltalk.method({
  1471. selector: unescape('removePackage%3A'),
  1472. category: 'packages',
  1473. fn: function (packageName){
  1474. var self=this;
  1475. var pkg=nil;
  1476. pkg=smalltalk.send(self, "_packageAt_ifAbsent_", [packageName, (function(){return smalltalk.send(self, "_error_", [smalltalk.send("Missing package: ", "__comma", [packageName])]);})]);
  1477. smalltalk.send(smalltalk.send(pkg, "_classes", []), "_do_", [(function(each){return smalltalk.send(self, "_removeClass_", [each]);})]);
  1478. smalltalk.send(self, "_deletePackage_", [packageName]);
  1479. return self;},
  1480. args: ["packageName"],
  1481. source: unescape('removePackage%3A%20packageName%0A%09%22Removes%20a%20package%20and%20all%20its%20classes.%22%0A%0A%09%7C%20pkg%20%7C%0A%09pkg%20%3A%3D%20self%20packageAt%3A%20packageName%20ifAbsent%3A%20%5Bself%20error%3A%20%27Missing%20package%3A%20%27%2C%20packageName%5D.%0A%09pkg%20classes%20do%3A%20%5B%3Aeach%20%7C%0A%20%20%20%20%20%20%20%20%09self%20removeClass%3A%20each%5D.%0A%09self%20deletePackage%3A%20packageName'),
  1482. messageSends: ["packageAt:ifAbsent:", "error:", unescape("%2C"), "do:", "classes", "removeClass:", "deletePackage:"],
  1483. referencedClasses: []
  1484. }),
  1485. smalltalk.Smalltalk);
  1486. smalltalk.addMethod(
  1487. unescape('_renamePackage_to_'),
  1488. smalltalk.method({
  1489. selector: unescape('renamePackage%3Ato%3A'),
  1490. category: 'packages',
  1491. fn: function (packageName, newName){
  1492. var self=this;
  1493. var pkg=nil;
  1494. pkg=smalltalk.send(self, "_packageAt_ifAbsent_", [packageName, (function(){return smalltalk.send(self, "_error_", [smalltalk.send("Missing package: ", "__comma", [packageName])]);})]);
  1495. (($receiver = smalltalk.send(self, "_packageAt_", [newName])) != nil && $receiver != undefined) ? (function(){return smalltalk.send(self, "_error_", [smalltalk.send("Already exists a package called: ", "__comma", [newName])]);})() : nil;
  1496. smalltalk.packages[newName] = smalltalk.packages[packageName];
  1497. smalltalk.send(pkg, "_name_", [newName]);
  1498. smalltalk.send(self, "_deletePackage_", [packageName]);
  1499. return self;},
  1500. args: ["packageName", "newName"],
  1501. source: unescape('renamePackage%3A%20packageName%20to%3A%20newName%0A%09%22Rename%20a%20package.%22%0A%0A%09%7C%20pkg%20%7C%0A%09pkg%20%3A%3D%20self%20packageAt%3A%20packageName%20ifAbsent%3A%20%5Bself%20error%3A%20%27Missing%20package%3A%20%27%2C%20packageName%5D.%0A%09%28self%20packageAt%3A%20newName%29%20ifNotNil%3A%20%5Bself%20error%3A%20%27Already%20exists%20a%20package%20called%3A%20%27%2C%20newName%5D.%0A%09%3Csmalltalk.packages%5BnewName%5D%20%3D%20smalltalk.packages%5BpackageName%5D%3E.%0A%09pkg%20name%3A%20newName.%0A%09self%20deletePackage%3A%20packageName.'),
  1502. messageSends: ["packageAt:ifAbsent:", "error:", unescape("%2C"), "ifNotNil:", "packageAt:", "name:", "deletePackage:"],
  1503. referencedClasses: []
  1504. }),
  1505. smalltalk.Smalltalk);
  1506. smalltalk.addMethod(
  1507. unescape('_reservedWords'),
  1508. smalltalk.method({
  1509. selector: unescape('reservedWords'),
  1510. category: 'accessing',
  1511. fn: function (){
  1512. var self=this;
  1513. return self.reservedWords;
  1514. return self;},
  1515. args: [],
  1516. source: unescape('reservedWords%0A%09%22JavaScript%20reserved%20words%22%0A%09%3Creturn%20self.reservedWords%3E'),
  1517. messageSends: [],
  1518. referencedClasses: []
  1519. }),
  1520. smalltalk.Smalltalk);
  1521. smalltalk.addMethod(
  1522. unescape('_createPackage_properties_'),
  1523. smalltalk.method({
  1524. selector: unescape('createPackage%3Aproperties%3A'),
  1525. category: 'private',
  1526. fn: function (packageName, aDict){
  1527. var self=this;
  1528. var object=nil;
  1529. object = {};;
  1530. smalltalk.send(aDict, "_keysAndValuesDo_", [(function(key, value){return object[key] = value;})]);
  1531. return smalltalk.addPackage(packageName, object);
  1532. return self;},
  1533. args: ["packageName", "aDict"],
  1534. source: unescape('createPackage%3A%20packageName%20properties%3A%20aDict%0A%09%22Create%20and%20bind%20a%20new%20package%20with%20given%20name%20and%20return%20it.%22%0A%0A%09%7C%20object%20%7C%0A%09%3Cobject%20%3D%20%7B%7D%3B%3E.%0A%09aDict%20keysAndValuesDo%3A%20%5B%3Akey%20%3Avalue%20%7C%0A%09%09%3Cobject%5Bkey%5D%20%3D%20value%3E.%0A%09%5D.%0A%20%20%20%20%20%20%20%3Creturn%20smalltalk.addPackage%28packageName%2C%20object%29%3E'),
  1535. messageSends: ["keysAndValuesDo:"],
  1536. referencedClasses: []
  1537. }),
  1538. smalltalk.Smalltalk);
  1539. smalltalk.Smalltalk.klass.iVarNames = ['current'];
  1540. smalltalk.addMethod(
  1541. unescape('_current'),
  1542. smalltalk.method({
  1543. selector: unescape('current'),
  1544. category: 'accessing',
  1545. fn: function (){
  1546. var self=this;
  1547. return smalltalk;
  1548. return self;},
  1549. args: [],
  1550. source: unescape('current%0A%09%3Creturn%20smalltalk%3E'),
  1551. messageSends: [],
  1552. referencedClasses: []
  1553. }),
  1554. smalltalk.Smalltalk.klass);
  1555. smalltalk.addClass('Package', smalltalk.Object, [], 'Kernel');
  1556. smalltalk.Package.comment=unescape('A%20Package%20is%20similar%20to%20a%20%22class%20category%22%20typically%20found%20in%20other%20Smalltalks%20like%20Pharo%20or%20Squeak.%20Amber%20does%20not%20have%20class%20categories%20anymore%2C%20it%20had%20in%20the%20beginning%20but%20now%20each%20class%20in%20the%20system%20knows%20which%20package%20it%20belongs%20to.%0A%0AA%20Package%20has%20a%20name%2C%20an%20Array%20of%20%22requires%22%2C%20a%20comment%20and%20a%20Dictionary%20with%20other%20optional%20key%20value%20attributes.%20A%20Package%20can%20also%20be%20queried%20for%20its%20classes%2C%20but%20it%20will%20then%20resort%20to%20a%20reverse%20scan%20of%20all%20classes%20to%20find%20them.%0APackages%20are%20manipulated%20through%20%22Smalltalk%20current%22%2C%20like%20for%20example%20finding%20one%20based%20on%20a%20name%3A%0A%0A%09Smalltalk%20current%20packageAt%3A%20%27Kernel%27%0A%0A...but%20you%20can%20also%20use%3A%0A%0A%09Package%20named%3A%20%27Kernel%27%0A%0AA%20Package%20differs%20slightly%20from%20a%20Monticello%20package%20which%20can%20span%20multiple%20class%20categories%20using%20a%20naming%20convention%20based%20on%20hyphenation.%20But%20just%20as%20in%20Monticello%20a%20Package%20supports%20%22class%20extensions%22%20so%20a%20Package%0Acan%20define%20behaviors%20in%20foreign%20classes%20using%20a%20naming%20convention%20for%20method%20categories%20where%20the%20category%20starts%20with%20an%20asterisk%20and%20then%20the%20name%20of%20the%20owning%20package%20follows.%20This%20can%20easily%20be%20seen%20in%20for%20example%20class%0AString%20where%20the%20method%20category%20%22*IDE%22%20defines%20%23inspectOn%3A%20which%20thus%20is%20a%20method%20belonging%20to%20the%20IDE%20package.')
  1557. smalltalk.addMethod(
  1558. unescape('_name'),
  1559. smalltalk.method({
  1560. selector: unescape('name'),
  1561. category: 'accessing',
  1562. fn: function (){
  1563. var self=this;
  1564. return self.pkgName || nil;
  1565. return self;},
  1566. args: [],
  1567. source: unescape('name%0A%09%3Creturn%20self.pkgName%20%7C%7C%20nil%3E'),
  1568. messageSends: [],
  1569. referencedClasses: []
  1570. }),
  1571. smalltalk.Package);
  1572. smalltalk.addMethod(
  1573. unescape('_name_'),
  1574. smalltalk.method({
  1575. selector: unescape('name%3A'),
  1576. category: 'accessing',
  1577. fn: function (aString){
  1578. var self=this;
  1579. return self.pkgName = aString;
  1580. return self;},
  1581. args: ["aString"],
  1582. source: unescape('name%3A%20aString%0A%09%3Creturn%20self.pkgName%20%3D%20aString%3E'),
  1583. messageSends: [],
  1584. referencedClasses: []
  1585. }),
  1586. smalltalk.Package);
  1587. smalltalk.addMethod(
  1588. unescape('_classes'),
  1589. smalltalk.method({
  1590. selector: unescape('classes'),
  1591. category: 'classes',
  1592. fn: function (){
  1593. var self=this;
  1594. return smalltalk.send(smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_classes", []), "_select_", [(function(c){return smalltalk.send(smalltalk.send(c, "_package", []), "__eq_eq", [self]);})]);
  1595. return self;},
  1596. args: [],
  1597. source: unescape('classes%0A%09%22We%20need%20to%20do%20a%20reverse%20scan.%22%0A%09%5ESmalltalk%20current%20classes%20select%3A%20%5B%3Ac%20%7C%20c%20package%20%3D%3D%20self%5D'),
  1598. messageSends: ["select:", "classes", "current", unescape("%3D%3D"), "package"],
  1599. referencedClasses: [smalltalk.Smalltalk]
  1600. }),
  1601. smalltalk.Package);
  1602. smalltalk.addMethod(
  1603. unescape('_printString'),
  1604. smalltalk.method({
  1605. selector: unescape('printString'),
  1606. category: 'printing',
  1607. fn: function (){
  1608. var self=this;
  1609. return smalltalk.send(self, "_name", []);
  1610. return self;},
  1611. args: [],
  1612. source: unescape('printString%0A%09%5Eself%20name'),
  1613. messageSends: ["name"],
  1614. referencedClasses: []
  1615. }),
  1616. smalltalk.Package);
  1617. smalltalk.addMethod(
  1618. unescape('_dependencies'),
  1619. smalltalk.method({
  1620. selector: unescape('dependencies'),
  1621. category: 'accessing',
  1622. fn: function (){
  1623. var self=this;
  1624. return smalltalk.send(self, "_propertyAt_ifAbsent_", ["dependencies", (function(){return [];})]);
  1625. return self;},
  1626. args: [],
  1627. source: unescape('dependencies%0A%09%5Eself%20propertyAt%3A%20%27dependencies%27%20ifAbsent%3A%20%5B%23%28%29%5D'),
  1628. messageSends: ["propertyAt:ifAbsent:"],
  1629. referencedClasses: []
  1630. }),
  1631. smalltalk.Package);
  1632. smalltalk.addMethod(
  1633. unescape('_dependencies_'),
  1634. smalltalk.method({
  1635. selector: unescape('dependencies%3A'),
  1636. category: 'accessing',
  1637. fn: function (anArray){
  1638. var self=this;
  1639. return smalltalk.send(self, "_propertyAt_put_", ["dependencies", anArray]);
  1640. return self;},
  1641. args: ["anArray"],
  1642. source: unescape('dependencies%3A%20anArray%0A%09%5Eself%20propertyAt%3A%20%27dependencies%27%20put%3A%20anArray'),
  1643. messageSends: ["propertyAt:put:"],
  1644. referencedClasses: []
  1645. }),
  1646. smalltalk.Package);
  1647. smalltalk.addMethod(
  1648. unescape('_properties'),
  1649. smalltalk.method({
  1650. selector: unescape('properties'),
  1651. category: 'accessing',
  1652. fn: function (){
  1653. var self=this;
  1654. var result=nil;
  1655. result=smalltalk.send((smalltalk.Dictionary || Dictionary), "_new", []);
  1656. for (var i in self.properties) {
  1657. result._at_put_(i, self.properties[i]);
  1658. }
  1659. return result;;
  1660. return self;},
  1661. args: [],
  1662. source: unescape('properties%0A%09%22It%20is%20stored%20as%20a%20javascript%20object.%22%0A%0A%09%7C%20result%20%7C%0A%09result%20%3A%3D%20Dictionary%20new.%0A%09%3Cfor%20%28var%20i%20in%20self.properties%29%20%7B%0A%09%09result._at_put_%28i%2C%20self.properties%5Bi%5D%29%3B%0A%09%7D%0A%09return%20result%3B%3E'),
  1663. messageSends: ["new"],
  1664. referencedClasses: [smalltalk.nil]
  1665. }),
  1666. smalltalk.Package);
  1667. smalltalk.addMethod(
  1668. unescape('_propertiesAsJSON'),
  1669. smalltalk.method({
  1670. selector: unescape('propertiesAsJSON'),
  1671. category: 'private',
  1672. fn: function (){
  1673. var self=this;
  1674. return JSON.stringify(self.properties);
  1675. return self;},
  1676. args: [],
  1677. source: unescape('propertiesAsJSON%0A%09%3Creturn%20JSON.stringify%28self.properties%29%3E'),
  1678. messageSends: [],
  1679. referencedClasses: []
  1680. }),
  1681. smalltalk.Package);
  1682. smalltalk.addMethod(
  1683. unescape('_properties_'),
  1684. smalltalk.method({
  1685. selector: unescape('properties%3A'),
  1686. category: 'accessing',
  1687. fn: function (aDict){
  1688. var self=this;
  1689. var object=nil;
  1690. object = {};;
  1691. smalltalk.send(aDict, "_keysAndValuesDo_", [(function(key, value){return object[key] = value;})]);
  1692. return self.properties = object;
  1693. return self;},
  1694. args: ["aDict"],
  1695. source: unescape('properties%3A%20aDict%0A%09%22We%20store%20it%20as%20a%20javascript%20object.%22%0A%09%0A%09%7C%20object%20%7C%0A%09%3Cobject%20%3D%20%7B%7D%3B%3E.%0A%09aDict%20keysAndValuesDo%3A%20%5B%3Akey%20%3Avalue%20%7C%0A%09%09%3Cobject%5Bkey%5D%20%3D%20value%3E.%0A%09%5D.%0A%09%3Creturn%20self.properties%20%3D%20object%3E'),
  1696. messageSends: ["keysAndValuesDo:"],
  1697. referencedClasses: []
  1698. }),
  1699. smalltalk.Package);
  1700. smalltalk.addMethod(
  1701. unescape('_jsProperties'),
  1702. smalltalk.method({
  1703. selector: unescape('jsProperties'),
  1704. category: 'private',
  1705. fn: function (){
  1706. var self=this;
  1707. return self.properties || nil;
  1708. return self;},
  1709. args: [],
  1710. source: unescape('jsProperties%0A%09%3Creturn%20self.properties%20%7C%7C%20nil%3E'),
  1711. messageSends: [],
  1712. referencedClasses: []
  1713. }),
  1714. smalltalk.Package);
  1715. smalltalk.addMethod(
  1716. unescape('_jsProperties_'),
  1717. smalltalk.method({
  1718. selector: unescape('jsProperties%3A'),
  1719. category: 'private',
  1720. fn: function (aJSObject){
  1721. var self=this;
  1722. return self.properties = aJSObject;
  1723. return self;},
  1724. args: ["aJSObject"],
  1725. source: unescape('jsProperties%3A%20aJSObject%0A%09%3Creturn%20self.properties%20%3D%20aJSObject%3E'),
  1726. messageSends: [],
  1727. referencedClasses: []
  1728. }),
  1729. smalltalk.Package);
  1730. smalltalk.addMethod(
  1731. unescape('_propertyAt_'),
  1732. smalltalk.method({
  1733. selector: unescape('propertyAt%3A'),
  1734. category: 'properties',
  1735. fn: function (key){
  1736. var self=this;
  1737. return self.properties[key];
  1738. return self;},
  1739. args: ["key"],
  1740. source: unescape('propertyAt%3A%20key%0A%0A%09%3Creturn%20self.properties%5Bkey%5D%3E'),
  1741. messageSends: [],
  1742. referencedClasses: []
  1743. }),
  1744. smalltalk.Package);
  1745. smalltalk.addMethod(
  1746. unescape('_propertyAt_put_'),
  1747. smalltalk.method({
  1748. selector: unescape('propertyAt%3Aput%3A'),
  1749. category: 'properties',
  1750. fn: function (key, value){
  1751. var self=this;
  1752. return self.properties[key] = value;
  1753. return self;},
  1754. args: ["key", "value"],
  1755. source: unescape('propertyAt%3A%20key%20put%3A%20value%0A%0A%09%3Creturn%20self.properties%5Bkey%5D%20%3D%20value%3E'),
  1756. messageSends: [],
  1757. referencedClasses: []
  1758. }),
  1759. smalltalk.Package);
  1760. smalltalk.addMethod(
  1761. unescape('_propertyAt_ifAbsent_'),
  1762. smalltalk.method({
  1763. selector: unescape('propertyAt%3AifAbsent%3A'),
  1764. category: 'properties',
  1765. fn: function (key, block){
  1766. var self=this;
  1767. return (($receiver = smalltalk.send(self, "_propertyAt_", [key])) == nil || $receiver == undefined) ? (function(){return smalltalk.send(block, "_value", []);})() : $receiver;
  1768. return self;},
  1769. args: ["key", "block"],
  1770. source: unescape('propertyAt%3A%20key%20ifAbsent%3A%20block%0A%0A%09%5E%28self%20propertyAt%3A%20key%29%20ifNil%3A%20%5Bblock%20value%5D'),
  1771. messageSends: ["ifNil:", "propertyAt:", "value"],
  1772. referencedClasses: []
  1773. }),
  1774. smalltalk.Package);
  1775. smalltalk.addMethod(
  1776. unescape('_named_'),
  1777. smalltalk.method({
  1778. selector: unescape('named%3A'),
  1779. category: 'not yet classified',
  1780. fn: function (aPackageName){
  1781. var self=this;
  1782. return smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_packageAt_", [aPackageName]);
  1783. return self;},
  1784. args: ["aPackageName"],
  1785. source: unescape('named%3A%20aPackageName%0A%0A%09%5ESmalltalk%20current%20packageAt%3A%20aPackageName'),
  1786. messageSends: ["packageAt:", "current"],
  1787. referencedClasses: [smalltalk.Smalltalk]
  1788. }),
  1789. smalltalk.Package.klass);
  1790. smalltalk.addMethod(
  1791. unescape('_named_ifAbsent_'),
  1792. smalltalk.method({
  1793. selector: unescape('named%3AifAbsent%3A'),
  1794. category: 'not yet classified',
  1795. fn: function (aPackageName, aBlock){
  1796. var self=this;
  1797. return smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_packageAt_ifAbsent_", [aPackageName, aBlock]);
  1798. return self;},
  1799. args: ["aPackageName", "aBlock"],
  1800. source: unescape('named%3A%20aPackageName%20ifAbsent%3A%20aBlock%0A%0A%09%5ESmalltalk%20current%20packageAt%3A%20aPackageName%20ifAbsent%3A%20aBlock'),
  1801. messageSends: ["packageAt:ifAbsent:", "current"],
  1802. referencedClasses: [smalltalk.Smalltalk]
  1803. }),
  1804. smalltalk.Package.klass);
  1805. smalltalk.addClass('Behavior', smalltalk.Object, [], 'Kernel');
  1806. smalltalk.addMethod(
  1807. unescape('_new'),
  1808. smalltalk.method({
  1809. selector: unescape('new'),
  1810. category: 'instance creation',
  1811. fn: function (){
  1812. var self=this;
  1813. return smalltalk.send(smalltalk.send(self, "_basicNew", []), "_initialize", []);
  1814. return self;},
  1815. args: [],
  1816. source: unescape('new%0A%09%5Eself%20basicNew%20initialize'),
  1817. messageSends: ["initialize", "basicNew"],
  1818. referencedClasses: []
  1819. }),
  1820. smalltalk.Behavior);
  1821. smalltalk.addMethod(
  1822. unescape('_basicNew'),
  1823. smalltalk.method({
  1824. selector: unescape('basicNew'),
  1825. category: 'instance creation',
  1826. fn: function (){
  1827. var self=this;
  1828. return new self.fn();
  1829. return self;},
  1830. args: [],
  1831. source: unescape('basicNew%0A%09%3Creturn%20new%20self.fn%28%29%3E'),
  1832. messageSends: [],
  1833. referencedClasses: []
  1834. }),
  1835. smalltalk.Behavior);
  1836. smalltalk.addMethod(
  1837. unescape('_name'),
  1838. smalltalk.method({
  1839. selector: unescape('name'),
  1840. category: 'accessing',
  1841. fn: function (){
  1842. var self=this;
  1843. return self.className || nil;
  1844. return self;},
  1845. args: [],
  1846. source: unescape('name%0A%09%3Creturn%20self.className%20%7C%7C%20nil%3E'),
  1847. messageSends: [],
  1848. referencedClasses: []
  1849. }),
  1850. smalltalk.Behavior);
  1851. smalltalk.addMethod(
  1852. unescape('_superclass'),
  1853. smalltalk.method({
  1854. selector: unescape('superclass'),
  1855. category: 'accessing',
  1856. fn: function (){
  1857. var self=this;
  1858. return self.superclass || nil;
  1859. return self;},
  1860. args: [],
  1861. source: unescape('superclass%0A%09%3Creturn%20self.superclass%20%7C%7C%20nil%3E'),
  1862. messageSends: [],
  1863. referencedClasses: []
  1864. }),
  1865. smalltalk.Behavior);
  1866. smalltalk.addMethod(
  1867. unescape('_subclasses'),
  1868. smalltalk.method({
  1869. selector: unescape('subclasses'),
  1870. category: 'accessing',
  1871. fn: function (){
  1872. var self=this;
  1873. return smalltalk.subclasses(self);
  1874. return self;},
  1875. args: [],
  1876. source: unescape('subclasses%0A%09%3Creturn%20smalltalk.subclasses%28self%29%3E'),
  1877. messageSends: [],
  1878. referencedClasses: []
  1879. }),
  1880. smalltalk.Behavior);
  1881. smalltalk.addMethod(
  1882. unescape('_allSubclasses'),
  1883. smalltalk.method({
  1884. selector: unescape('allSubclasses'),
  1885. category: 'accessing',
  1886. fn: function (){
  1887. var self=this;
  1888. var result=nil;
  1889. result=smalltalk.send(self, "_subclasses", []);
  1890. smalltalk.send(smalltalk.send(self, "_subclasses", []), "_do_", [(function(each){return smalltalk.send(result, "_addAll_", [smalltalk.send(each, "_allSubclasses", [])]);})]);
  1891. return result;
  1892. return self;},
  1893. args: [],
  1894. source: unescape('allSubclasses%0A%09%7C%20result%20%7C%0A%09result%20%3A%3D%20self%20subclasses.%0A%09self%20subclasses%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20result%20addAll%3A%20each%20allSubclasses%5D.%0A%09%5Eresult'),
  1895. messageSends: ["subclasses", "do:", "addAll:", "allSubclasses"],
  1896. referencedClasses: []
  1897. }),
  1898. smalltalk.Behavior);
  1899. smalltalk.addMethod(
  1900. unescape('_withAllSubclasses'),
  1901. smalltalk.method({
  1902. selector: unescape('withAllSubclasses'),
  1903. category: 'accessing',
  1904. fn: function (){
  1905. var self=this;
  1906. return (function($rec){smalltalk.send($rec, "_addAll_", [smalltalk.send(self, "_allSubclasses", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.Array || Array), "_with_", [self]));
  1907. return self;},
  1908. args: [],
  1909. source: unescape('withAllSubclasses%0A%09%5E%28Array%20with%3A%20self%29%20addAll%3A%20self%20allSubclasses%3B%20yourself'),
  1910. messageSends: ["addAll:", "allSubclasses", "yourself", "with:"],
  1911. referencedClasses: [smalltalk.Array]
  1912. }),
  1913. smalltalk.Behavior);
  1914. smalltalk.addMethod(
  1915. unescape('_prototype'),
  1916. smalltalk.method({
  1917. selector: unescape('prototype'),
  1918. category: 'accessing',
  1919. fn: function (){
  1920. var self=this;
  1921. return self.fn.prototype;
  1922. return self;},
  1923. args: [],
  1924. source: unescape('prototype%0A%09%3Creturn%20self.fn.prototype%3E'),
  1925. messageSends: [],
  1926. referencedClasses: []
  1927. }),
  1928. smalltalk.Behavior);
  1929. smalltalk.addMethod(
  1930. unescape('_methodDictionary'),
  1931. smalltalk.method({
  1932. selector: unescape('methodDictionary'),
  1933. category: 'accessing',
  1934. fn: function (){
  1935. var self=this;
  1936. var dict = smalltalk.Dictionary._new();
  1937. var methods = self.fn.prototype.methods;
  1938. for(var i in methods) {
  1939. if(methods[i].selector) {
  1940. dict._at_put_(methods[i].selector, methods[i]);
  1941. }
  1942. };
  1943. return dict;
  1944. return self;},
  1945. args: [],
  1946. source: unescape('methodDictionary%0A%09%3Cvar%20dict%20%3D%20smalltalk.Dictionary._new%28%29%3B%0A%09var%20methods%20%3D%20self.fn.prototype.methods%3B%0A%09for%28var%20i%20in%20methods%29%20%7B%0A%09%09if%28methods%5Bi%5D.selector%29%20%7B%0A%09%09%09dict._at_put_%28methods%5Bi%5D.selector%2C%20methods%5Bi%5D%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%09return%20dict%3E'),
  1947. messageSends: [],
  1948. referencedClasses: []
  1949. }),
  1950. smalltalk.Behavior);
  1951. smalltalk.addMethod(
  1952. unescape('_methodsFor_'),
  1953. smalltalk.method({
  1954. selector: unescape('methodsFor%3A'),
  1955. category: 'accessing',
  1956. fn: function (aString){
  1957. var self=this;
  1958. return (function($rec){smalltalk.send($rec, "_class_category_", [self, aString]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.ClassCategoryReader || ClassCategoryReader), "_new", []));
  1959. return self;},
  1960. args: ["aString"],
  1961. source: unescape('methodsFor%3A%20aString%0A%09%5EClassCategoryReader%20new%0A%09%20%20%20%20class%3A%20self%20category%3A%20aString%3B%0A%09%20%20%20%20yourself'),
  1962. messageSends: ["class:category:", "yourself", "new"],
  1963. referencedClasses: [smalltalk.nil]
  1964. }),
  1965. smalltalk.Behavior);
  1966. smalltalk.addMethod(
  1967. unescape('_addCompiledMethod_'),
  1968. smalltalk.method({
  1969. selector: unescape('addCompiledMethod%3A'),
  1970. category: 'accessing',
  1971. fn: function (aMethod){
  1972. var self=this;
  1973. smalltalk.addMethod(aMethod.selector._asSelector(), aMethod, self);
  1974. return self;},
  1975. args: ["aMethod"],
  1976. source: unescape('addCompiledMethod%3A%20aMethod%0A%09%3Csmalltalk.addMethod%28aMethod.selector._asSelector%28%29%2C%20aMethod%2C%20self%29%3E'),
  1977. messageSends: [],
  1978. referencedClasses: []
  1979. }),
  1980. smalltalk.Behavior);
  1981. smalltalk.addMethod(
  1982. unescape('_instanceVariableNames'),
  1983. smalltalk.method({
  1984. selector: unescape('instanceVariableNames'),
  1985. category: 'accessing',
  1986. fn: function (){
  1987. var self=this;
  1988. return self.iVarNames;
  1989. return self;},
  1990. args: [],
  1991. source: unescape('instanceVariableNames%0A%09%3Creturn%20self.iVarNames%3E'),
  1992. messageSends: [],
  1993. referencedClasses: []
  1994. }),
  1995. smalltalk.Behavior);
  1996. smalltalk.addMethod(
  1997. unescape('_comment'),
  1998. smalltalk.method({
  1999. selector: unescape('comment'),
  2000. category: 'accessing',
  2001. fn: function (){
  2002. var self=this;
  2003. return (($receiver = smalltalk.send(self, "_basicAt_", ["comment"])) == nil || $receiver == undefined) ? (function(){return "";})() : $receiver;
  2004. return self;},
  2005. args: [],
  2006. source: unescape('comment%0A%20%20%20%20%5E%28self%20basicAt%3A%20%27comment%27%29%20ifNil%3A%20%5B%27%27%5D'),
  2007. messageSends: ["ifNil:", "basicAt:"],
  2008. referencedClasses: []
  2009. }),
  2010. smalltalk.Behavior);
  2011. smalltalk.addMethod(
  2012. unescape('_comment_'),
  2013. smalltalk.method({
  2014. selector: unescape('comment%3A'),
  2015. category: 'accessing',
  2016. fn: function (aString){
  2017. var self=this;
  2018. smalltalk.send(self, "_basicAt_put_", ["comment", aString]);
  2019. return self;},
  2020. args: ["aString"],
  2021. source: unescape('comment%3A%20aString%0A%20%20%20%20self%20basicAt%3A%20%27comment%27%20put%3A%20aString'),
  2022. messageSends: ["basicAt:put:"],
  2023. referencedClasses: []
  2024. }),
  2025. smalltalk.Behavior);
  2026. smalltalk.addMethod(
  2027. unescape('_commentStamp'),
  2028. smalltalk.method({
  2029. selector: unescape('commentStamp'),
  2030. category: 'accessing',
  2031. fn: function (){
  2032. var self=this;
  2033. return (function($rec){smalltalk.send($rec, "_class_", [self]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.ClassCommentReader || ClassCommentReader), "_new", []));
  2034. return self;},
  2035. args: [],
  2036. source: unescape('commentStamp%0A%20%20%20%20%5EClassCommentReader%20new%0A%09class%3A%20self%3B%0A%09yourself'),
  2037. messageSends: ["class:", "yourself", "new"],
  2038. referencedClasses: [smalltalk.nil]
  2039. }),
  2040. smalltalk.Behavior);
  2041. smalltalk.addMethod(
  2042. unescape('_removeCompiledMethod_'),
  2043. smalltalk.method({
  2044. selector: unescape('removeCompiledMethod%3A'),
  2045. category: 'accessing',
  2046. fn: function (aMethod){
  2047. var self=this;
  2048. delete self.fn.prototype[aMethod.selector._asSelector()];
  2049. delete self.fn.prototype.methods[aMethod.selector];
  2050. smalltalk.init(self);;
  2051. return self;},
  2052. args: ["aMethod"],
  2053. source: unescape('removeCompiledMethod%3A%20aMethod%0A%09%3Cdelete%20self.fn.prototype%5BaMethod.selector._asSelector%28%29%5D%3B%0A%09delete%20self.fn.prototype.methods%5BaMethod.selector%5D%3B%0A%09smalltalk.init%28self%29%3B%3E'),
  2054. messageSends: [],
  2055. referencedClasses: []
  2056. }),
  2057. smalltalk.Behavior);
  2058. smalltalk.addMethod(
  2059. unescape('_inheritsFrom_'),
  2060. smalltalk.method({
  2061. selector: unescape('inheritsFrom%3A'),
  2062. category: 'instance creation',
  2063. fn: function (aClass){
  2064. var self=this;
  2065. return smalltalk.send(smalltalk.send(aClass, "_allSubclasses", []), "_includes_", [self]);
  2066. return self;},
  2067. args: ["aClass"],
  2068. source: unescape('inheritsFrom%3A%20aClass%0A%09%5EaClass%20allSubclasses%20includes%3A%20self'),
  2069. messageSends: ["includes:", "allSubclasses"],
  2070. referencedClasses: []
  2071. }),
  2072. smalltalk.Behavior);
  2073. smalltalk.addMethod(
  2074. unescape('_protocols'),
  2075. smalltalk.method({
  2076. selector: unescape('protocols'),
  2077. category: 'accessing',
  2078. fn: function (){
  2079. var self=this;
  2080. var protocols=nil;
  2081. protocols=smalltalk.send((smalltalk.Array || Array), "_new", []);
  2082. smalltalk.send(smalltalk.send(self, "_methodDictionary", []), "_do_", [(function(each){return ((($receiver = smalltalk.send(protocols, "_includes_", [smalltalk.send(each, "_category", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(protocols, "_add_", [smalltalk.send(each, "_category", [])]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(protocols, "_add_", [smalltalk.send(each, "_category", [])]);})]));})]);
  2083. return smalltalk.send(protocols, "_sort", []);
  2084. return self;},
  2085. args: [],
  2086. source: unescape('protocols%0A%20%20%20%20%7C%20protocols%20%7C%0A%20%20%20%20protocols%20%3A%3D%20Array%20new.%0A%20%20%20%20self%20methodDictionary%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20%28protocols%20includes%3A%20each%20category%29%20ifFalse%3A%20%5B%0A%09%09protocols%20add%3A%20each%20category%5D%5D.%0A%20%20%20%20%5Eprotocols%20sort'),
  2087. messageSends: ["new", "do:", "methodDictionary", "ifFalse:", "includes:", "category", "add:", "sort"],
  2088. referencedClasses: [smalltalk.Array]
  2089. }),
  2090. smalltalk.Behavior);
  2091. smalltalk.addMethod(
  2092. unescape('_protocolsDo_'),
  2093. smalltalk.method({
  2094. selector: unescape('protocolsDo%3A'),
  2095. category: 'accessing',
  2096. fn: function (aBlock){
  2097. var self=this;
  2098. var methodsByCategory=nil;
  2099. methodsByCategory=smalltalk.send((smalltalk.Dictionary || Dictionary), "_new", []);
  2100. smalltalk.send(smalltalk.send(smalltalk.send(self, "_methodDictionary", []), "_values", []), "_do_", [(function(m){return smalltalk.send(smalltalk.send(methodsByCategory, "_at_ifAbsentPut_", [smalltalk.send(m, "_category", []), (function(){return smalltalk.send((smalltalk.Array || Array), "_new", []);})]), "_add_", [m]);})]);
  2101. smalltalk.send(smalltalk.send(self, "_protocols", []), "_do_", [(function(category){return smalltalk.send(aBlock, "_value_value_", [category, smalltalk.send(methodsByCategory, "_at_", [category])]);})]);
  2102. return self;},
  2103. args: ["aBlock"],
  2104. source: unescape('protocolsDo%3A%20aBlock%0A%09%22Execute%20aBlock%20for%20each%20method%20category%20with%0A%09its%20collection%20of%20methods%20in%20the%20sort%20order%20of%20category%20name.%22%0A%0A%09%7C%20methodsByCategory%20%7C%0A%09methodsByCategory%20%3A%3D%20Dictionary%20new.%0A%09self%20methodDictionary%20values%20do%3A%20%5B%3Am%20%7C%0A%09%09%28methodsByCategory%20at%3A%20m%20category%20ifAbsentPut%3A%20%5BArray%20new%5D%29%0A%20%09%09%09add%3A%20m%5D.%20%0A%09self%20protocols%20do%3A%20%5B%3Acategory%20%7C%0A%09%09aBlock%20value%3A%20category%20value%3A%20%28methodsByCategory%20at%3A%20category%29%5D'),
  2105. messageSends: ["new", "do:", "values", "methodDictionary", "add:", "at:ifAbsentPut:", "category", "protocols", "value:value:", "at:"],
  2106. referencedClasses: [smalltalk.nil,smalltalk.Array]
  2107. }),
  2108. smalltalk.Behavior);
  2109. smalltalk.addMethod(
  2110. unescape('_allInstanceVariableNames'),
  2111. smalltalk.method({
  2112. selector: unescape('allInstanceVariableNames'),
  2113. category: 'accessing',
  2114. fn: function (){
  2115. var self=this;
  2116. var result=nil;
  2117. result=smalltalk.send(smalltalk.send(self, "_instanceVariableNames", []), "_copy", []);
  2118. (($receiver = smalltalk.send(self, "_superclass", [])) != nil && $receiver != undefined) ? (function(){return smalltalk.send(result, "_addAll_", [smalltalk.send(smalltalk.send(self, "_superclass", []), "_allInstanceVariableNames", [])]);})() : nil;
  2119. return result;
  2120. return self;},
  2121. args: [],
  2122. source: unescape('allInstanceVariableNames%0A%09%7C%20result%20%7C%0A%09result%20%3A%3D%20self%20instanceVariableNames%20copy.%0A%09self%20superclass%20ifNotNil%3A%20%5B%0A%09%20%20%20%20result%20addAll%3A%20self%20superclass%20allInstanceVariableNames%5D.%0A%09%5Eresult'),
  2123. messageSends: ["copy", "instanceVariableNames", "ifNotNil:", "superclass", "addAll:", "allInstanceVariableNames"],
  2124. referencedClasses: []
  2125. }),
  2126. smalltalk.Behavior);
  2127. smalltalk.addMethod(
  2128. unescape('_methodAt_'),
  2129. smalltalk.method({
  2130. selector: unescape('methodAt%3A'),
  2131. category: 'accessing',
  2132. fn: function (aString){
  2133. var self=this;
  2134. return smalltalk.methods(self)[aString];
  2135. return self;},
  2136. args: ["aString"],
  2137. source: unescape('methodAt%3A%20aString%0A%09%3Creturn%20smalltalk.methods%28self%29%5BaString%5D%3E'),
  2138. messageSends: [],
  2139. referencedClasses: []
  2140. }),
  2141. smalltalk.Behavior);
  2142. smalltalk.addMethod(
  2143. unescape('_methodsFor_stamp_'),
  2144. smalltalk.method({
  2145. selector: unescape('methodsFor%3Astamp%3A'),
  2146. category: 'accessing',
  2147. fn: function (aString, aStamp){
  2148. var self=this;
  2149. return smalltalk.send(self, "_methodsFor_", [aString]);
  2150. return self;},
  2151. args: ["aString", "aStamp"],
  2152. source: unescape('methodsFor%3A%20aString%20stamp%3A%20aStamp%0A%09%22Added%20for%20compatibility%2C%20right%20now%20ignores%20stamp.%22%0A%09%5Eself%20methodsFor%3A%20aString'),
  2153. messageSends: ["methodsFor:"],
  2154. referencedClasses: []
  2155. }),
  2156. smalltalk.Behavior);
  2157. smalltalk.addMethod(
  2158. unescape('_commentStamp_prior_'),
  2159. smalltalk.method({
  2160. selector: unescape('commentStamp%3Aprior%3A'),
  2161. category: 'accessing',
  2162. fn: function (aStamp, prior){
  2163. var self=this;
  2164. return smalltalk.send(self, "_commentStamp", []);
  2165. return self;},
  2166. args: ["aStamp", "prior"],
  2167. source: unescape('commentStamp%3A%20aStamp%20prior%3A%20prior%0A%20%20%20%20%20%20%20%20%5Eself%20commentStamp'),
  2168. messageSends: ["commentStamp"],
  2169. referencedClasses: []
  2170. }),
  2171. smalltalk.Behavior);
  2172. smalltalk.addMethod(
  2173. unescape('_compile_'),
  2174. smalltalk.method({
  2175. selector: unescape('compile%3A'),
  2176. category: 'compiling',
  2177. fn: function (aString){
  2178. var self=this;
  2179. smalltalk.send(self, "_compile_category_", [aString, ""]);
  2180. return self;},
  2181. args: ["aString"],
  2182. source: unescape('compile%3A%20aString%0A%09self%20compile%3A%20aString%20category%3A%20%27%27'),
  2183. messageSends: ["compile:category:"],
  2184. referencedClasses: []
  2185. }),
  2186. smalltalk.Behavior);
  2187. smalltalk.addMethod(
  2188. unescape('_compile_category_'),
  2189. smalltalk.method({
  2190. selector: unescape('compile%3Acategory%3A'),
  2191. category: 'compiling',
  2192. fn: function (aString, anotherString){
  2193. var self=this;
  2194. var method=nil;
  2195. method=smalltalk.send(smalltalk.send((smalltalk.Compiler || Compiler), "_new", []), "_load_forClass_", [aString, self]);
  2196. smalltalk.send(method, "_category_", [anotherString]);
  2197. smalltalk.send(self, "_addCompiledMethod_", [method]);
  2198. return self;},
  2199. args: ["aString", "anotherString"],
  2200. source: unescape('compile%3A%20aString%20category%3A%20anotherString%0A%09%7C%20method%20%7C%0A%09method%20%3A%3D%20Compiler%20new%20load%3A%20aString%20forClass%3A%20self.%0A%09method%20category%3A%20anotherString.%0A%09self%20addCompiledMethod%3A%20method'),
  2201. messageSends: ["load:forClass:", "new", "category:", "addCompiledMethod:"],
  2202. referencedClasses: [smalltalk.nil]
  2203. }),
  2204. smalltalk.Behavior);
  2205. smalltalk.addClass('Class', smalltalk.Behavior, [], 'Kernel');
  2206. smalltalk.addMethod(
  2207. unescape('_category'),
  2208. smalltalk.method({
  2209. selector: unescape('category'),
  2210. category: 'accessing',
  2211. fn: function (){
  2212. var self=this;
  2213. return (($receiver = smalltalk.send(self, "_package", [])) == nil || $receiver == undefined) ? (function(){return "Unclassified";})() : (function(){return smalltalk.send(smalltalk.send(self, "_package", []), "_name", []);})();
  2214. return self;},
  2215. args: [],
  2216. source: unescape('category%0A%09%5Eself%20package%20ifNil%3A%20%5B%27Unclassified%27%5D%20ifNotNil%3A%20%5Bself%20package%20name%5D'),
  2217. messageSends: ["ifNil:ifNotNil:", "package", "name"],
  2218. referencedClasses: []
  2219. }),
  2220. smalltalk.Class);
  2221. smalltalk.addMethod(
  2222. unescape('_subclass_instanceVariableNames_'),
  2223. smalltalk.method({
  2224. selector: unescape('subclass%3AinstanceVariableNames%3A'),
  2225. category: 'class creation',
  2226. fn: function (aString, anotherString){
  2227. var self=this;
  2228. return smalltalk.send(self, "_subclass_instanceVariableNames_package_", [aString, anotherString, nil]);
  2229. return self;},
  2230. args: ["aString", "anotherString"],
  2231. source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20anotherString%0A%09%22Kept%20for%20compatibility.%22%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20anotherString%20package%3A%20nil'),
  2232. messageSends: ["subclass:instanceVariableNames:package:"],
  2233. referencedClasses: []
  2234. }),
  2235. smalltalk.Class);
  2236. smalltalk.addMethod(
  2237. unescape('_subclass_instanceVariableNames_category_'),
  2238. smalltalk.method({
  2239. selector: unescape('subclass%3AinstanceVariableNames%3Acategory%3A'),
  2240. category: 'class creation',
  2241. fn: function (aString, aString2, aString3){
  2242. var self=this;
  2243. return smalltalk.send(self, "_subclass_instanceVariableNames_package_", [aString, aString2, aString3]);
  2244. return self;},
  2245. args: ["aString", "aString2", "aString3"],
  2246. source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20category%3A%20aString3%0A%09%22Kept%20for%20compatibility.%22%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20package%3A%20aString3'),
  2247. messageSends: ["subclass:instanceVariableNames:package:"],
  2248. referencedClasses: []
  2249. }),
  2250. smalltalk.Class);
  2251. smalltalk.addMethod(
  2252. unescape('_isClass'),
  2253. smalltalk.method({
  2254. selector: unescape('isClass'),
  2255. category: 'testing',
  2256. fn: function (){
  2257. var self=this;
  2258. return true;
  2259. return self;},
  2260. args: [],
  2261. source: unescape('isClass%0A%09%5Etrue'),
  2262. messageSends: [],
  2263. referencedClasses: []
  2264. }),
  2265. smalltalk.Class);
  2266. smalltalk.addMethod(
  2267. unescape('_printString'),
  2268. smalltalk.method({
  2269. selector: unescape('printString'),
  2270. category: 'printing',
  2271. fn: function (){
  2272. var self=this;
  2273. return smalltalk.send(self, "_name", []);
  2274. return self;},
  2275. args: [],
  2276. source: unescape('printString%0A%09%5Eself%20name'),
  2277. messageSends: ["name"],
  2278. referencedClasses: []
  2279. }),
  2280. smalltalk.Class);
  2281. smalltalk.addMethod(
  2282. unescape('_rename_'),
  2283. smalltalk.method({
  2284. selector: unescape('rename%3A'),
  2285. category: 'accessing',
  2286. fn: function (aString){
  2287. var self=this;
  2288. smalltalk[aString] = self;
  2289. delete smalltalk[self.className];
  2290. self.className = aString;
  2291. ;
  2292. return self;},
  2293. args: ["aString"],
  2294. source: unescape('rename%3A%20aString%0A%09%3C%0A%09%09smalltalk%5BaString%5D%20%3D%20self%3B%0A%09%09delete%20smalltalk%5Bself.className%5D%3B%0A%09%09self.className%20%3D%20aString%3B%0A%09%3E'),
  2295. messageSends: [],
  2296. referencedClasses: []
  2297. }),
  2298. smalltalk.Class);
  2299. smalltalk.addMethod(
  2300. unescape('_subclass_instanceVariableNames_classVariableNames_poolDictionaries_category_'),
  2301. smalltalk.method({
  2302. selector: unescape('subclass%3AinstanceVariableNames%3AclassVariableNames%3ApoolDictionaries%3Acategory%3A'),
  2303. category: 'class creation',
  2304. fn: function (aString, aString2, classVars, pools, aString3){
  2305. var self=this;
  2306. return smalltalk.send(self, "_subclass_instanceVariableNames_package_", [aString, aString2, aString3]);
  2307. return self;},
  2308. args: ["aString", "aString2", "classVars", "pools", "aString3"],
  2309. source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20classVariableNames%3A%20classVars%20poolDictionaries%3A%20pools%20category%3A%20aString3%0A%09%22Just%20ignore%20class%20variables%20and%20pools.%20Added%20for%20compatibility.%22%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20package%3A%20aString3'),
  2310. messageSends: ["subclass:instanceVariableNames:package:"],
  2311. referencedClasses: []
  2312. }),
  2313. smalltalk.Class);
  2314. smalltalk.addMethod(
  2315. unescape('_package'),
  2316. smalltalk.method({
  2317. selector: unescape('package'),
  2318. category: 'accessing',
  2319. fn: function (){
  2320. var self=this;
  2321. return self.pkg;
  2322. return self;},
  2323. args: [],
  2324. source: unescape('package%0A%09%3Creturn%20self.pkg%3E'),
  2325. messageSends: [],
  2326. referencedClasses: []
  2327. }),
  2328. smalltalk.Class);
  2329. smalltalk.addMethod(
  2330. unescape('_package_'),
  2331. smalltalk.method({
  2332. selector: unescape('package%3A'),
  2333. category: 'accessing',
  2334. fn: function (aPackage){
  2335. var self=this;
  2336. self.pkg = aPackage;
  2337. return self;},
  2338. args: ["aPackage"],
  2339. source: unescape('package%3A%20aPackage%0A%09%3Cself.pkg%20%3D%20aPackage%3E'),
  2340. messageSends: [],
  2341. referencedClasses: []
  2342. }),
  2343. smalltalk.Class);
  2344. smalltalk.addMethod(
  2345. unescape('_subclass_instanceVariableNames_package_'),
  2346. smalltalk.method({
  2347. selector: unescape('subclass%3AinstanceVariableNames%3Apackage%3A'),
  2348. category: 'class creation',
  2349. fn: function (aString, aString2, aString3){
  2350. var self=this;
  2351. return smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder), "_new", []), "_superclass_subclass_instanceVariableNames_package_", [self, aString, aString2, aString3]);
  2352. return self;},
  2353. args: ["aString", "aString2", "aString3"],
  2354. source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20package%3A%20aString3%0A%09%5EClassBuilder%20new%0A%09%20%20%20%20superclass%3A%20self%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20package%3A%20aString3'),
  2355. messageSends: ["superclass:subclass:instanceVariableNames:package:", "new"],
  2356. referencedClasses: [smalltalk.nil]
  2357. }),
  2358. smalltalk.Class);
  2359. smalltalk.addClass('Metaclass', smalltalk.Behavior, [], 'Kernel');
  2360. smalltalk.addMethod(
  2361. unescape('_instanceClass'),
  2362. smalltalk.method({
  2363. selector: unescape('instanceClass'),
  2364. category: 'accessing',
  2365. fn: function (){
  2366. var self=this;
  2367. return self.instanceClass;
  2368. return self;},
  2369. args: [],
  2370. source: unescape('instanceClass%0A%09%3Creturn%20self.instanceClass%3E'),
  2371. messageSends: [],
  2372. referencedClasses: []
  2373. }),
  2374. smalltalk.Metaclass);
  2375. smalltalk.addMethod(
  2376. unescape('_instanceVariableNames_'),
  2377. smalltalk.method({
  2378. selector: unescape('instanceVariableNames%3A'),
  2379. category: 'accessing',
  2380. fn: function (aCollection){
  2381. var self=this;
  2382. smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder), "_new", []), "_class_instanceVariableNames_", [self, aCollection]);
  2383. return self;},
  2384. args: ["aCollection"],
  2385. source: unescape('instanceVariableNames%3A%20aCollection%0A%09ClassBuilder%20new%0A%09%20%20%20%20class%3A%20self%20instanceVariableNames%3A%20aCollection'),
  2386. messageSends: ["class:instanceVariableNames:", "new"],
  2387. referencedClasses: [smalltalk.nil]
  2388. }),
  2389. smalltalk.Metaclass);
  2390. smalltalk.addMethod(
  2391. unescape('_isMetaclass'),
  2392. smalltalk.method({
  2393. selector: unescape('isMetaclass'),
  2394. category: 'testing',
  2395. fn: function (){
  2396. var self=this;
  2397. return true;
  2398. return self;},
  2399. args: [],
  2400. source: unescape('isMetaclass%0A%09%5Etrue'),
  2401. messageSends: [],
  2402. referencedClasses: []
  2403. }),
  2404. smalltalk.Metaclass);
  2405. smalltalk.addMethod(
  2406. unescape('_printString'),
  2407. smalltalk.method({
  2408. selector: unescape('printString'),
  2409. category: 'printing',
  2410. fn: function (){
  2411. var self=this;
  2412. return smalltalk.send(smalltalk.send(smalltalk.send(self, "_instanceClass", []), "_name", []), "__comma", [" class"]);
  2413. return self;},
  2414. args: [],
  2415. source: unescape('printString%0A%09%5Eself%20instanceClass%20name%2C%20%27%20class%27'),
  2416. messageSends: [unescape("%2C"), "name", "instanceClass"],
  2417. referencedClasses: []
  2418. }),
  2419. smalltalk.Metaclass);
  2420. smalltalk.addClass('CompiledMethod', smalltalk.Object, [], 'Kernel');
  2421. smalltalk.addMethod(
  2422. unescape('_source'),
  2423. smalltalk.method({
  2424. selector: unescape('source'),
  2425. category: 'accessing',
  2426. fn: function (){
  2427. var self=this;
  2428. return (($receiver = smalltalk.send(self, "_basicAt_", ["source"])) == nil || $receiver == undefined) ? (function(){return "";})() : $receiver;
  2429. return self;},
  2430. args: [],
  2431. source: unescape('source%0A%09%5E%28self%20basicAt%3A%20%27source%27%29%20ifNil%3A%20%5B%27%27%5D'),
  2432. messageSends: ["ifNil:", "basicAt:"],
  2433. referencedClasses: []
  2434. }),
  2435. smalltalk.CompiledMethod);
  2436. smalltalk.addMethod(
  2437. unescape('_source_'),
  2438. smalltalk.method({
  2439. selector: unescape('source%3A'),
  2440. category: 'accessing',
  2441. fn: function (aString){
  2442. var self=this;
  2443. smalltalk.send(self, "_basicAt_put_", ["source", aString]);
  2444. return self;},
  2445. args: ["aString"],
  2446. source: unescape('source%3A%20aString%0A%09self%20basicAt%3A%20%27source%27%20put%3A%20aString'),
  2447. messageSends: ["basicAt:put:"],
  2448. referencedClasses: []
  2449. }),
  2450. smalltalk.CompiledMethod);
  2451. smalltalk.addMethod(
  2452. unescape('_category'),
  2453. smalltalk.method({
  2454. selector: unescape('category'),
  2455. category: 'accessing',
  2456. fn: function (){
  2457. var self=this;
  2458. return (($receiver = smalltalk.send(self, "_basicAt_", ["category"])) == nil || $receiver == undefined) ? (function(){return "";})() : $receiver;
  2459. return self;},
  2460. args: [],
  2461. source: unescape('category%0A%09%5E%28self%20basicAt%3A%20%27category%27%29%20ifNil%3A%20%5B%27%27%5D'),
  2462. messageSends: ["ifNil:", "basicAt:"],
  2463. referencedClasses: []
  2464. }),
  2465. smalltalk.CompiledMethod);
  2466. smalltalk.addMethod(
  2467. unescape('_category_'),
  2468. smalltalk.method({
  2469. selector: unescape('category%3A'),
  2470. category: 'accessing',
  2471. fn: function (aString){
  2472. var self=this;
  2473. smalltalk.send(self, "_basicAt_put_", ["category", aString]);
  2474. return self;},
  2475. args: ["aString"],
  2476. source: unescape('category%3A%20aString%0A%09self%20basicAt%3A%20%27category%27%20put%3A%20aString'),
  2477. messageSends: ["basicAt:put:"],
  2478. referencedClasses: []
  2479. }),
  2480. smalltalk.CompiledMethod);
  2481. smalltalk.addMethod(
  2482. unescape('_selector'),
  2483. smalltalk.method({
  2484. selector: unescape('selector'),
  2485. category: 'accessing',
  2486. fn: function (){
  2487. var self=this;
  2488. return smalltalk.send(self, "_basicAt_", ["selector"]);
  2489. return self;},
  2490. args: [],
  2491. source: unescape('selector%0A%09%5Eself%20basicAt%3A%20%27selector%27'),
  2492. messageSends: ["basicAt:"],
  2493. referencedClasses: []
  2494. }),
  2495. smalltalk.CompiledMethod);
  2496. smalltalk.addMethod(
  2497. unescape('_selector_'),
  2498. smalltalk.method({
  2499. selector: unescape('selector%3A'),
  2500. category: 'accessing',
  2501. fn: function (aString){
  2502. var self=this;
  2503. smalltalk.send(self, "_basicAt_put_", ["selector", aString]);
  2504. return self;},
  2505. args: ["aString"],
  2506. source: unescape('selector%3A%20aString%0A%09self%20basicAt%3A%20%27selector%27%20put%3A%20aString'),
  2507. messageSends: ["basicAt:put:"],
  2508. referencedClasses: []
  2509. }),
  2510. smalltalk.CompiledMethod);
  2511. smalltalk.addMethod(
  2512. unescape('_fn'),
  2513. smalltalk.method({
  2514. selector: unescape('fn'),
  2515. category: 'accessing',
  2516. fn: function (){
  2517. var self=this;
  2518. return smalltalk.send(self, "_basicAt_", ["fn"]);
  2519. return self;},
  2520. args: [],
  2521. source: unescape('fn%0A%09%5Eself%20basicAt%3A%20%27fn%27'),
  2522. messageSends: ["basicAt:"],
  2523. referencedClasses: []
  2524. }),
  2525. smalltalk.CompiledMethod);
  2526. smalltalk.addMethod(
  2527. unescape('_fn_'),
  2528. smalltalk.method({
  2529. selector: unescape('fn%3A'),
  2530. category: 'accessing',
  2531. fn: function (aBlock){
  2532. var self=this;
  2533. smalltalk.send(self, "_basicAt_put_", ["fn", aBlock]);
  2534. return self;},
  2535. args: ["aBlock"],
  2536. source: unescape('fn%3A%20aBlock%0A%09self%20basicAt%3A%20%27fn%27%20put%3A%20aBlock'),
  2537. messageSends: ["basicAt:put:"],
  2538. referencedClasses: []
  2539. }),
  2540. smalltalk.CompiledMethod);
  2541. smalltalk.addMethod(
  2542. unescape('_messageSends'),
  2543. smalltalk.method({
  2544. selector: unescape('messageSends'),
  2545. category: 'accessing',
  2546. fn: function (){
  2547. var self=this;
  2548. return smalltalk.send(self, "_basicAt_", ["messageSends"]);
  2549. return self;},
  2550. args: [],
  2551. source: unescape('messageSends%0A%09%5Eself%20basicAt%3A%20%27messageSends%27'),
  2552. messageSends: ["basicAt:"],
  2553. referencedClasses: []
  2554. }),
  2555. smalltalk.CompiledMethod);
  2556. smalltalk.addMethod(
  2557. unescape('_methodClass'),
  2558. smalltalk.method({
  2559. selector: unescape('methodClass'),
  2560. category: 'accessing',
  2561. fn: function (){
  2562. var self=this;
  2563. return smalltalk.send(self, "_basicAt_", ["methodClass"]);
  2564. return self;},
  2565. args: [],
  2566. source: unescape('methodClass%0A%09%5Eself%20basicAt%3A%20%27methodClass%27'),
  2567. messageSends: ["basicAt:"],
  2568. referencedClasses: []
  2569. }),
  2570. smalltalk.CompiledMethod);
  2571. smalltalk.addMethod(
  2572. unescape('_referencedClasses'),
  2573. smalltalk.method({
  2574. selector: unescape('referencedClasses'),
  2575. category: 'accessing',
  2576. fn: function (){
  2577. var self=this;
  2578. return smalltalk.send(self, "_basicAt_", ["referencedClasses"]);
  2579. return self;},
  2580. args: [],
  2581. source: unescape('referencedClasses%0A%09%5Eself%20basicAt%3A%20%27referencedClasses%27'),
  2582. messageSends: ["basicAt:"],
  2583. referencedClasses: []
  2584. }),
  2585. smalltalk.CompiledMethod);
  2586. smalltalk.addMethod(
  2587. unescape('_arguments'),
  2588. smalltalk.method({
  2589. selector: unescape('arguments'),
  2590. category: 'accessing',
  2591. fn: function (){
  2592. var self=this;
  2593. return self.args || [];
  2594. return self;},
  2595. args: [],
  2596. source: unescape('arguments%0A%09%3Creturn%20self.args%20%7C%7C%20%5B%5D%3E'),
  2597. messageSends: [],
  2598. referencedClasses: []
  2599. }),
  2600. smalltalk.CompiledMethod);
  2601. smalltalk.addClass('Number', smalltalk.Object, [], 'Kernel');
  2602. smalltalk.addMethod(
  2603. unescape('__eq'),
  2604. smalltalk.method({
  2605. selector: unescape('%3D'),
  2606. category: 'comparing',
  2607. fn: function (aNumber){
  2608. var self=this;
  2609. try{((($receiver = smalltalk.send(smalltalk.send(aNumber, "_class", []), "__eq", [smalltalk.send(self, "_class", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})]));
  2610. return Number(self) == aNumber;
  2611. return self;
  2612. } catch(e) {if(e.name === 'stReturn' && e.selector === '__eq'){return e.fn()} throw(e)}},
  2613. args: ["aNumber"],
  2614. source: unescape('%3D%20aNumber%0A%09aNumber%20class%20%3D%20self%20class%20ifFalse%3A%20%5B%5Efalse%5D.%20%0A%09%3Creturn%20Number%28self%29%20%3D%3D%20aNumber%3E'),
  2615. messageSends: ["ifFalse:", unescape("%3D"), "class"],
  2616. referencedClasses: []
  2617. }),
  2618. smalltalk.Number);
  2619. smalltalk.addMethod(
  2620. unescape('__gt'),
  2621. smalltalk.method({
  2622. selector: unescape('%3E'),
  2623. category: 'comparing',
  2624. fn: function (aNumber){
  2625. var self=this;
  2626. return self > aNumber;
  2627. return self;},
  2628. args: ["aNumber"],
  2629. source: unescape('%3E%20aNumber%0A%09%22Inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%20%3E%3E%20aNumber%3E'),
  2630. messageSends: [],
  2631. referencedClasses: []
  2632. }),
  2633. smalltalk.Number);
  2634. smalltalk.addMethod(
  2635. unescape('__lt'),
  2636. smalltalk.method({
  2637. selector: unescape('%3C'),
  2638. category: 'comparing',
  2639. fn: function (aNumber){
  2640. var self=this;
  2641. return self < aNumber;
  2642. return self;},
  2643. args: ["aNumber"],
  2644. source: unescape('%3C%20aNumber%0A%09%22Inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%20%3C%20aNumber%3E'),
  2645. messageSends: [],
  2646. referencedClasses: []
  2647. }),
  2648. smalltalk.Number);
  2649. smalltalk.addMethod(
  2650. unescape('__gt_eq'),
  2651. smalltalk.method({
  2652. selector: unescape('%3E%3D'),
  2653. category: 'comparing',
  2654. fn: function (aNumber){
  2655. var self=this;
  2656. return self >= aNumber;
  2657. return self;},
  2658. args: ["aNumber"],
  2659. source: unescape('%3E%3D%20aNumber%0A%09%22Inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%20%3E%3E%3D%20aNumber%3E'),
  2660. messageSends: [],
  2661. referencedClasses: []
  2662. }),
  2663. smalltalk.Number);
  2664. smalltalk.addMethod(
  2665. unescape('__lt_eq'),
  2666. smalltalk.method({
  2667. selector: unescape('%3C%3D'),
  2668. category: 'comparing',
  2669. fn: function (aNumber){
  2670. var self=this;
  2671. return self <= aNumber;
  2672. return self;},
  2673. args: ["aNumber"],
  2674. source: unescape('%3C%3D%20aNumber%0A%09%22Inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%20%3C%3D%20aNumber%3E'),
  2675. messageSends: [],
  2676. referencedClasses: []
  2677. }),
  2678. smalltalk.Number);
  2679. smalltalk.addMethod(
  2680. unescape('__plus'),
  2681. smalltalk.method({
  2682. selector: unescape('+'),
  2683. category: 'arithmetic',
  2684. fn: function (aNumber){
  2685. var self=this;
  2686. return self + aNumber;
  2687. return self;},
  2688. args: ["aNumber"],
  2689. source: unescape('+%20aNumber%0A%09%22Inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%20+%20aNumber%3E'),
  2690. messageSends: [],
  2691. referencedClasses: []
  2692. }),
  2693. smalltalk.Number);
  2694. smalltalk.addMethod(
  2695. unescape('__minus'),
  2696. smalltalk.method({
  2697. selector: unescape('-'),
  2698. category: 'arithmetic',
  2699. fn: function (aNumber){
  2700. var self=this;
  2701. return self - aNumber;
  2702. return self;},
  2703. args: ["aNumber"],
  2704. source: unescape('-%20aNumber%0A%09%22Inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%20-%20aNumber%3E'),
  2705. messageSends: [],
  2706. referencedClasses: []
  2707. }),
  2708. smalltalk.Number);
  2709. smalltalk.addMethod(
  2710. unescape('__star'),
  2711. smalltalk.method({
  2712. selector: unescape('*'),
  2713. category: 'arithmetic',
  2714. fn: function (aNumber){
  2715. var self=this;
  2716. return self * aNumber;
  2717. return self;},
  2718. args: ["aNumber"],
  2719. source: unescape('*%20aNumber%0A%09%22Inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%20*%20aNumber%3E'),
  2720. messageSends: [],
  2721. referencedClasses: []
  2722. }),
  2723. smalltalk.Number);
  2724. smalltalk.addMethod(
  2725. unescape('__slash'),
  2726. smalltalk.method({
  2727. selector: unescape('/'),
  2728. category: 'arithmetic',
  2729. fn: function (aNumber){
  2730. var self=this;
  2731. return self / aNumber;
  2732. return self;},
  2733. args: ["aNumber"],
  2734. source: unescape('/%20aNumber%0A%09%22Inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%20/%20aNumber%3E'),
  2735. messageSends: [],
  2736. referencedClasses: []
  2737. }),
  2738. smalltalk.Number);
  2739. smalltalk.addMethod(
  2740. unescape('_max_'),
  2741. smalltalk.method({
  2742. selector: unescape('max%3A'),
  2743. category: 'arithmetic',
  2744. fn: function (aNumber){
  2745. var self=this;
  2746. return Math.max(self, aNumber);;
  2747. return self;},
  2748. args: ["aNumber"],
  2749. source: unescape('max%3A%20aNumber%0A%09%3Creturn%20Math.max%28self%2C%20aNumber%29%3B%3E'),
  2750. messageSends: [],
  2751. referencedClasses: []
  2752. }),
  2753. smalltalk.Number);
  2754. smalltalk.addMethod(
  2755. unescape('_min_'),
  2756. smalltalk.method({
  2757. selector: unescape('min%3A'),
  2758. category: 'arithmetic',
  2759. fn: function (aNumber){
  2760. var self=this;
  2761. return Math.min(self, aNumber);;
  2762. return self;},
  2763. args: ["aNumber"],
  2764. source: unescape('min%3A%20aNumber%0A%09%3Creturn%20Math.min%28self%2C%20aNumber%29%3B%3E'),
  2765. messageSends: [],
  2766. referencedClasses: []
  2767. }),
  2768. smalltalk.Number);
  2769. smalltalk.addMethod(
  2770. unescape('_rounded'),
  2771. smalltalk.method({
  2772. selector: unescape('rounded'),
  2773. category: 'converting',
  2774. fn: function (){
  2775. var self=this;
  2776. return Math.round(self);;
  2777. return self;},
  2778. args: [],
  2779. source: unescape('rounded%0A%09%3Creturn%20Math.round%28self%29%3B%3E'),
  2780. messageSends: [],
  2781. referencedClasses: []
  2782. }),
  2783. smalltalk.Number);
  2784. smalltalk.addMethod(
  2785. unescape('_truncated'),
  2786. smalltalk.method({
  2787. selector: unescape('truncated'),
  2788. category: 'converting',
  2789. fn: function (){
  2790. var self=this;
  2791. var result=nil;
  2792. ((($receiver = self >= (0)).klass === smalltalk.Boolean) ? ($receiver ? (function(){return result = Math.floor(self);;})() : (function(){return result = (Math.floor(self * (-1)) * (-1));;})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return result = Math.floor(self);;}), (function(){return result = (Math.floor(self * (-1)) * (-1));;})]));
  2793. return result;
  2794. return self;},
  2795. args: [],
  2796. source: unescape('truncated%0A%7Cresult%7C%0A%0A%20%20%20%20self%20%3E%3D%200%20%0A%20%20%20%20%20%20%20%20ifTrue%3A%20%5B%3Cresult%20%3D%20Math.floor%28self%29%3B%3E%5D%0A%20%20%20%20%20%20%20%20ifFalse%3A%20%5B%3Cresult%20%3D%20%28Math.floor%28self%20*%20%28-1%29%29%20*%20%28-1%29%29%3B%3E%5D.%0A%0A%20%20%20%20%5E%20result'),
  2797. messageSends: ["ifTrue:ifFalse:", unescape("%3E%3D")],
  2798. referencedClasses: []
  2799. }),
  2800. smalltalk.Number);
  2801. smalltalk.addMethod(
  2802. unescape('_to_'),
  2803. smalltalk.method({
  2804. selector: unescape('to%3A'),
  2805. category: 'converting',
  2806. fn: function (aNumber){
  2807. var self=this;
  2808. var array=nil;
  2809. var first=nil;
  2810. var last=nil;
  2811. var count=nil;
  2812. first=smalltalk.send(self, "_truncated", []);
  2813. last=((($receiver = smalltalk.send(aNumber, "_truncated", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]));
  2814. count=(1);
  2815. array=smalltalk.send((smalltalk.Array || Array), "_new", []);
  2816. smalltalk.send(((($receiver = last).klass === smalltalk.Number) ? $receiver -first : smalltalk.send($receiver, "__minus", [first])), "_timesRepeat_", [(function(){smalltalk.send(array, "_at_put_", [count, first]);count=((($receiver = count).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]));return first=((($receiver = first).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]));})]);
  2817. return array;
  2818. return self;},
  2819. args: ["aNumber"],
  2820. source: unescape('to%3A%20aNumber%0A%09%7C%20array%20first%20last%20count%20%7C%0A%09first%20%3A%3D%20self%20truncated.%0A%09last%20%3A%3D%20aNumber%20truncated%20+%201.%0A%09count%20%3A%3D%201.%0A%09array%20%3A%3D%20Array%20new.%0A%09%28last%20-%20first%29%20timesRepeat%3A%20%5B%0A%09%20%20%20%20array%20at%3A%20count%20put%3A%20first.%0A%09%20%20%20%20count%20%3A%3D%20count%20+%201.%0A%09%20%20%20%20first%20%3A%3D%20first%20+%201%5D.%0A%09%5Earray'),
  2821. messageSends: ["truncated", unescape("+"), "new", "timesRepeat:", unescape("-"), "at:put:"],
  2822. referencedClasses: [smalltalk.Array]
  2823. }),
  2824. smalltalk.Number);
  2825. smalltalk.addMethod(
  2826. unescape('_timesRepeat_'),
  2827. smalltalk.method({
  2828. selector: unescape('timesRepeat%3A'),
  2829. category: 'enumerating',
  2830. fn: function (aBlock){
  2831. var self=this;
  2832. var integer=nil;
  2833. var count=nil;
  2834. integer=smalltalk.send(self, "_truncated", []);
  2835. count=(1);
  2836. (function(){while(!(function(){return ((($receiver = count).klass === smalltalk.Number) ? $receiver >self : smalltalk.send($receiver, "__gt", [self]));})()) {(function(){smalltalk.send(aBlock, "_value", []);return count=((($receiver = count).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]));})()}})();
  2837. return self;},
  2838. args: ["aBlock"],
  2839. source: unescape('timesRepeat%3A%20aBlock%0A%09%7C%20integer%20count%20%7C%0A%09integer%20%3A%3D%20self%20truncated.%0A%09count%20%3A%3D%201.%0A%09%5Bcount%20%3E%20self%5D%20whileFalse%3A%20%5B%0A%09%20%20%20%20aBlock%20value.%0A%09%20%20%20%20count%20%3A%3D%20count%20+%201%5D'),
  2840. messageSends: ["truncated", "whileFalse:", unescape("%3E"), "value", unescape("+")],
  2841. referencedClasses: []
  2842. }),
  2843. smalltalk.Number);
  2844. smalltalk.addMethod(
  2845. unescape('_to_do_'),
  2846. smalltalk.method({
  2847. selector: unescape('to%3Ado%3A'),
  2848. category: 'enumerating',
  2849. fn: function (stop, aBlock){
  2850. var self=this;
  2851. var nextValue=nil;
  2852. nextValue=self;
  2853. (function(){while((function(){return ((($receiver = nextValue).klass === smalltalk.Number) ? $receiver <=stop : smalltalk.send($receiver, "__lt_eq", [stop]));})()) {(function(){smalltalk.send(aBlock, "_value_", [nextValue]);return nextValue=((($receiver = nextValue).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]));})()}})();
  2854. return self;},
  2855. args: ["stop", "aBlock"],
  2856. source: unescape('to%3A%20stop%20do%3A%20aBlock%0A%09%22Evaluate%20aBlock%20for%20each%20number%20from%20self%20to%20aNumber.%22%0A%09%7C%20nextValue%20%7C%0A%09nextValue%20%3A%3D%20self.%0A%09%5BnextValue%20%3C%3D%20stop%5D%0A%09%09whileTrue%3A%20%0A%09%09%09%5BaBlock%20value%3A%20nextValue.%0A%09%09%09nextValue%20%3A%3D%20nextValue%20+%201%5D'),
  2857. messageSends: ["whileTrue:", unescape("%3C%3D"), "value:", unescape("+")],
  2858. referencedClasses: []
  2859. }),
  2860. smalltalk.Number);
  2861. smalltalk.addMethod(
  2862. unescape('_asString'),
  2863. smalltalk.method({
  2864. selector: unescape('asString'),
  2865. category: 'converting',
  2866. fn: function (){
  2867. var self=this;
  2868. return smalltalk.send(self, "_printString", []);
  2869. return self;},
  2870. args: [],
  2871. source: unescape('asString%0A%09%5Eself%20printString'),
  2872. messageSends: ["printString"],
  2873. referencedClasses: []
  2874. }),
  2875. smalltalk.Number);
  2876. smalltalk.addMethod(
  2877. unescape('_asJavascript'),
  2878. smalltalk.method({
  2879. selector: unescape('asJavascript'),
  2880. category: 'converting',
  2881. fn: function (){
  2882. var self=this;
  2883. return smalltalk.send(smalltalk.send(unescape("%28"), "__comma", [smalltalk.send(self, "_printString", [])]), "__comma", [unescape("%29")]);
  2884. return self;},
  2885. args: [],
  2886. source: unescape('asJavascript%0A%09%5E%27%28%27%2C%20self%20printString%2C%20%27%29%27'),
  2887. messageSends: [unescape("%2C"), "printString"],
  2888. referencedClasses: []
  2889. }),
  2890. smalltalk.Number);
  2891. smalltalk.addMethod(
  2892. unescape('_printString'),
  2893. smalltalk.method({
  2894. selector: unescape('printString'),
  2895. category: 'printing',
  2896. fn: function (){
  2897. var self=this;
  2898. return String(self);
  2899. return self;},
  2900. args: [],
  2901. source: unescape('printString%0A%09%3Creturn%20String%28self%29%3E'),
  2902. messageSends: [],
  2903. referencedClasses: []
  2904. }),
  2905. smalltalk.Number);
  2906. smalltalk.addMethod(
  2907. unescape('_isNumber'),
  2908. smalltalk.method({
  2909. selector: unescape('isNumber'),
  2910. category: 'testing',
  2911. fn: function (){
  2912. var self=this;
  2913. return true;
  2914. return self;},
  2915. args: [],
  2916. source: unescape('isNumber%0A%09%5Etrue'),
  2917. messageSends: [],
  2918. referencedClasses: []
  2919. }),
  2920. smalltalk.Number);
  2921. smalltalk.addMethod(
  2922. unescape('_atRandom'),
  2923. smalltalk.method({
  2924. selector: unescape('atRandom'),
  2925. category: 'converting',
  2926. fn: function (){
  2927. var self=this;
  2928. return ((($receiver = smalltalk.send(((($receiver = smalltalk.send(smalltalk.send((smalltalk.Random || Random), "_new", []), "_next", [])).klass === smalltalk.Number) ? $receiver *self : smalltalk.send($receiver, "__star", [self])), "_truncated", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]));
  2929. return self;},
  2930. args: [],
  2931. source: unescape('atRandom%0A%20%20%20%20%5E%28Random%20new%20next%20*%20self%29%20truncated%20+%201'),
  2932. messageSends: [unescape("+"), "truncated", unescape("*"), "next", "new"],
  2933. referencedClasses: [smalltalk.nil]
  2934. }),
  2935. smalltalk.Number);
  2936. smalltalk.addMethod(
  2937. unescape('__at'),
  2938. smalltalk.method({
  2939. selector: unescape('@'),
  2940. category: 'converting',
  2941. fn: function (aNumber){
  2942. var self=this;
  2943. return smalltalk.send((smalltalk.Point || Point), "_x_y_", [self, aNumber]);
  2944. return self;},
  2945. args: ["aNumber"],
  2946. source: unescape('@%20aNumber%0A%09%5EPoint%20x%3A%20self%20y%3A%20aNumber'),
  2947. messageSends: ["x:y:"],
  2948. referencedClasses: [smalltalk.nil]
  2949. }),
  2950. smalltalk.Number);
  2951. smalltalk.addMethod(
  2952. unescape('_asPoint'),
  2953. smalltalk.method({
  2954. selector: unescape('asPoint'),
  2955. category: 'converting',
  2956. fn: function (){
  2957. var self=this;
  2958. return smalltalk.send((smalltalk.Point || Point), "_x_y_", [self, self]);
  2959. return self;},
  2960. args: [],
  2961. source: unescape('asPoint%0A%09%5EPoint%20x%3A%20self%20y%3A%20self'),
  2962. messageSends: ["x:y:"],
  2963. referencedClasses: [smalltalk.nil]
  2964. }),
  2965. smalltalk.Number);
  2966. smalltalk.addMethod(
  2967. unescape('_clearInterval'),
  2968. smalltalk.method({
  2969. selector: unescape('clearInterval'),
  2970. category: 'timeouts/intervals',
  2971. fn: function (){
  2972. var self=this;
  2973. clearInterval(Number(self));
  2974. return self;},
  2975. args: [],
  2976. source: unescape('clearInterval%0A%09%3CclearInterval%28Number%28self%29%29%3E'),
  2977. messageSends: [],
  2978. referencedClasses: []
  2979. }),
  2980. smalltalk.Number);
  2981. smalltalk.addMethod(
  2982. unescape('_asJSONObject'),
  2983. smalltalk.method({
  2984. selector: unescape('asJSONObject'),
  2985. category: 'converting',
  2986. fn: function (){
  2987. var self=this;
  2988. return self;
  2989. return self;},
  2990. args: [],
  2991. source: unescape('asJSONObject%0A%09%5Eself'),
  2992. messageSends: [],
  2993. referencedClasses: []
  2994. }),
  2995. smalltalk.Number);
  2996. smalltalk.addMethod(
  2997. unescape('_clearTimeout'),
  2998. smalltalk.method({
  2999. selector: unescape('clearTimeout'),
  3000. category: 'timeouts/intervals',
  3001. fn: function (){
  3002. var self=this;
  3003. clearTimeout(Number(self));
  3004. return self;},
  3005. args: [],
  3006. source: unescape('clearTimeout%0A%09%3CclearTimeout%28Number%28self%29%29%3E'),
  3007. messageSends: [],
  3008. referencedClasses: []
  3009. }),
  3010. smalltalk.Number);
  3011. smalltalk.addMethod(
  3012. unescape('_even'),
  3013. smalltalk.method({
  3014. selector: unescape('even'),
  3015. category: 'testing',
  3016. fn: function (){
  3017. var self=this;
  3018. return smalltalk.send((0), "__eq", [smalltalk.send(self, "_\\\\", [(2)])]);
  3019. return self;},
  3020. args: [],
  3021. source: unescape('even%0A%09%5E%200%20%3D%20%28self%20%5C%5C%202%29'),
  3022. messageSends: [unescape("%3D"), unescape("%5C%5C%5C%5C")],
  3023. referencedClasses: []
  3024. }),
  3025. smalltalk.Number);
  3026. smalltalk.addMethod(
  3027. unescape('_odd'),
  3028. smalltalk.method({
  3029. selector: unescape('odd'),
  3030. category: 'testing',
  3031. fn: function (){
  3032. var self=this;
  3033. return smalltalk.send(smalltalk.send(self, "_even", []), "_not", []);
  3034. return self;},
  3035. args: [],
  3036. source: unescape('odd%0A%09%5E%20self%20even%20not'),
  3037. messageSends: ["not", "even"],
  3038. referencedClasses: []
  3039. }),
  3040. smalltalk.Number);
  3041. smalltalk.addMethod(
  3042. unescape('_negated'),
  3043. smalltalk.method({
  3044. selector: unescape('negated'),
  3045. category: 'arithmetic',
  3046. fn: function (){
  3047. var self=this;
  3048. return (0) - self;
  3049. return self;},
  3050. args: [],
  3051. source: unescape('negated%0A%09%5E0%20-%20self'),
  3052. messageSends: [unescape("-")],
  3053. referencedClasses: []
  3054. }),
  3055. smalltalk.Number);
  3056. smalltalk.addMethod(
  3057. unescape('__eq_eq'),
  3058. smalltalk.method({
  3059. selector: unescape('%3D%3D'),
  3060. category: 'comparing',
  3061. fn: function (aNumber){
  3062. var self=this;
  3063. try{((($receiver = smalltalk.send(smalltalk.send(aNumber, "_class", []), "__eq", [smalltalk.send(self, "_class", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq_eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq_eq', fn: function(){return false}})})();})]));
  3064. return Number(self) === Number(aNumber);
  3065. return self;
  3066. } catch(e) {if(e.name === 'stReturn' && e.selector === '__eq_eq'){return e.fn()} throw(e)}},
  3067. args: ["aNumber"],
  3068. source: unescape('%3D%3D%20aNumber%0A%09aNumber%20class%20%3D%20self%20class%20ifFalse%3A%20%5B%5Efalse%5D.%20%0A%09%3Creturn%20Number%28self%29%20%3D%3D%3D%20Number%28aNumber%29%3E'),
  3069. messageSends: ["ifFalse:", unescape("%3D"), "class"],
  3070. referencedClasses: []
  3071. }),
  3072. smalltalk.Number);
  3073. smalltalk.addMethod(
  3074. unescape('_printShowingDecimalPlaces_'),
  3075. smalltalk.method({
  3076. selector: unescape('printShowingDecimalPlaces%3A'),
  3077. category: 'printing',
  3078. fn: function (placesDesired){
  3079. var self=this;
  3080. return self.toFixed(placesDesired);
  3081. return self;},
  3082. args: ["placesDesired"],
  3083. source: unescape('printShowingDecimalPlaces%3A%20placesDesired%0A%09%3Creturn%20self.toFixed%28placesDesired%29%3E'),
  3084. messageSends: [],
  3085. referencedClasses: []
  3086. }),
  3087. smalltalk.Number);
  3088. smalltalk.addMethod(
  3089. unescape('_%5C%5C'),
  3090. smalltalk.method({
  3091. selector: unescape('%5C%5C'),
  3092. category: 'arithmetic',
  3093. fn: function (aNumber){
  3094. var self=this;
  3095. return self % aNumber;
  3096. return self;},
  3097. args: ["aNumber"],
  3098. source: unescape('%5C%5C%20aNumber%0A%09%3Creturn%20self%20%25%20aNumber%3E'),
  3099. messageSends: [],
  3100. referencedClasses: []
  3101. }),
  3102. smalltalk.Number);
  3103. smalltalk.addMethod(
  3104. unescape('_to_by_'),
  3105. smalltalk.method({
  3106. selector: unescape('to%3Aby%3A'),
  3107. category: 'converting',
  3108. fn: function (stop, step){
  3109. var self=this;
  3110. var array=nil;
  3111. var value=nil;
  3112. var pos=nil;
  3113. value=self;
  3114. array=smalltalk.send((smalltalk.Array || Array), "_new", []);
  3115. pos=(1);
  3116. ((($receiver = smalltalk.send(step, "__eq", [(0)])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_error_", [unescape("step%20must%20be%20non-zero")]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(self, "_error_", [unescape("step%20must%20be%20non-zero")]);})]));
  3117. ((($receiver = ((($receiver = step).klass === smalltalk.Number) ? $receiver <(0) : smalltalk.send($receiver, "__lt", [(0)]))).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (function(){while((function(){return ((($receiver = value).klass === smalltalk.Number) ? $receiver >=stop : smalltalk.send($receiver, "__gt_eq", [stop]));})()) {(function(){smalltalk.send(array, "_at_put_", [pos, value]);pos=((($receiver = pos).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]));return value=((($receiver = value).klass === smalltalk.Number) ? $receiver +step : smalltalk.send($receiver, "__plus", [step]));})()}})();})() : (function(){return (function(){while((function(){return ((($receiver = value).klass === smalltalk.Number) ? $receiver <=stop : smalltalk.send($receiver, "__lt_eq", [stop]));})()) {(function(){smalltalk.send(array, "_at_put_", [pos, value]);pos=((($receiver = pos).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]));return value=((($receiver = value).klass === smalltalk.Number) ? $receiver +step : smalltalk.send($receiver, "__plus", [step]));})()}})();})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return (function(){while((function(){return ((($receiver = value).klass === smalltalk.Number) ? $receiver >=stop : smalltalk.send($receiver, "__gt_eq", [stop]));})()) {(function(){smalltalk.send(array, "_at_put_", [pos, value]);pos=((($receiver = pos).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]));return value=((($receiver = value).klass === smalltalk.Number) ? $receiver +step : smalltalk.send($receiver, "__plus", [step]));})()}})();}), (function(){return (function(){while((function(){return ((($receiver = value).klass === smalltalk.Number) ? $receiver <=stop : smalltalk.send($receiver, "__lt_eq", [stop]));})()) {(function(){smalltalk.send(array, "_at_put_", [pos, value]);pos=((($receiver = pos).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]));return value=((($receiver = value).klass === smalltalk.Number) ? $receiver +step : smalltalk.send($receiver, "__plus", [step]));})()}})();})]));
  3118. return array;
  3119. return self;},
  3120. args: ["stop", "step"],
  3121. source: unescape('to%3A%20stop%20by%3A%20step%0A%09%7C%20array%20value%20pos%20%7C%0A%09value%20%3A%3D%20self.%0A%09array%20%3A%3D%20Array%20new.%0A%09pos%20%3A%3D%201.%0A%09step%20%3D%200%20ifTrue%3A%20%5Bself%20error%3A%20%27step%20must%20be%20non-zero%27%5D.%0A%09step%20%3C%200%0A%09%09ifTrue%3A%20%5B%5B%20value%20%3E%3D%20stop%20%5D%20whileTrue%3A%20%5B%0A%09%20%20%20%20%09%09%09array%20at%3A%20pos%20put%3A%20value.%0A%09%20%20%20%20%09%09%09pos%20%3A%3D%20pos%20+%201.%0A%09%20%20%20%20%09%09%09value%20%3A%3D%20value%20+%20step%5D%5D%0A%09%09ifFalse%3A%20%5B%5B%20value%20%3C%3D%20stop%20%5D%20whileTrue%3A%20%5B%0A%09%20%20%20%20%09%09%09array%20at%3A%20pos%20put%3A%20value.%0A%09%20%20%09%09%09pos%20%3A%3D%20pos%20+%201.%0A%09%20%20%20%20%09%09%09value%20%3A%3D%20value%20+%20step%5D%5D.%0A%09%5Earray'),
  3122. messageSends: ["new", "ifTrue:", unescape("%3D"), "error:", "ifTrue:ifFalse:", unescape("%3C"), "whileTrue:", unescape("%3E%3D"), "at:put:", unescape("+"), unescape("%3C%3D")],
  3123. referencedClasses: [smalltalk.Array]
  3124. }),
  3125. smalltalk.Number);
  3126. smalltalk.addMethod(
  3127. unescape('_to_by_do_'),
  3128. smalltalk.method({
  3129. selector: unescape('to%3Aby%3Ado%3A'),
  3130. category: 'enumerating',
  3131. fn: function (stop, step, aBlock){
  3132. var self=this;
  3133. var value=nil;
  3134. value=self;
  3135. ((($receiver = smalltalk.send(step, "__eq", [(0)])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_error_", [unescape("step%20must%20be%20non-zero")]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(self, "_error_", [unescape("step%20must%20be%20non-zero")]);})]));
  3136. ((($receiver = ((($receiver = step).klass === smalltalk.Number) ? $receiver <(0) : smalltalk.send($receiver, "__lt", [(0)]))).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (function(){while((function(){return ((($receiver = value).klass === smalltalk.Number) ? $receiver >=stop : smalltalk.send($receiver, "__gt_eq", [stop]));})()) {(function(){smalltalk.send(aBlock, "_value_", [value]);return value=((($receiver = value).klass === smalltalk.Number) ? $receiver +step : smalltalk.send($receiver, "__plus", [step]));})()}})();})() : (function(){return (function(){while((function(){return ((($receiver = value).klass === smalltalk.Number) ? $receiver <=stop : smalltalk.send($receiver, "__lt_eq", [stop]));})()) {(function(){smalltalk.send(aBlock, "_value_", [value]);return value=((($receiver = value).klass === smalltalk.Number) ? $receiver +step : smalltalk.send($receiver, "__plus", [step]));})()}})();})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return (function(){while((function(){return ((($receiver = value).klass === smalltalk.Number) ? $receiver >=stop : smalltalk.send($receiver, "__gt_eq", [stop]));})()) {(function(){smalltalk.send(aBlock, "_value_", [value]);return value=((($receiver = value).klass === smalltalk.Number) ? $receiver +step : smalltalk.send($receiver, "__plus", [step]));})()}})();}), (function(){return (function(){while((function(){return ((($receiver = value).klass === smalltalk.Number) ? $receiver <=stop : smalltalk.send($receiver, "__lt_eq", [stop]));})()) {(function(){smalltalk.send(aBlock, "_value_", [value]);return value=((($receiver = value).klass === smalltalk.Number) ? $receiver +step : smalltalk.send($receiver, "__plus", [step]));})()}})();})]));
  3137. return self;},
  3138. args: ["stop", "step", "aBlock"],
  3139. source: unescape('to%3A%20stop%20by%3A%20step%20do%3A%20aBlock%0A%09%7C%20value%20%7C%0A%09value%20%3A%3D%20self.%0A%09step%20%3D%200%20ifTrue%3A%20%5Bself%20error%3A%20%27step%20must%20be%20non-zero%27%5D.%0A%09step%20%3C%200%0A%09%09ifTrue%3A%20%5B%5B%20value%20%3E%3D%20stop%20%5D%20whileTrue%3A%20%5B%0A%09%20%20%20%20%09%09%09aBlock%20value%3A%20value.%0A%09%20%20%20%20%09%09%09value%20%3A%3D%20value%20+%20step%5D%5D%0A%09%09ifFalse%3A%20%5B%5B%20value%20%3C%3D%20stop%20%5D%20whileTrue%3A%20%5B%0A%09%20%20%20%20%09%09%09aBlock%20value%3A%20value.%0A%09%20%20%20%20%09%09%09value%20%3A%3D%20value%20+%20step%5D%5D'),
  3140. messageSends: ["ifTrue:", unescape("%3D"), "error:", "ifTrue:ifFalse:", unescape("%3C"), "whileTrue:", unescape("%3E%3D"), "value:", unescape("+"), unescape("%3C%3D")],
  3141. referencedClasses: []
  3142. }),
  3143. smalltalk.Number);
  3144. smalltalk.addMethod(
  3145. unescape('_pi'),
  3146. smalltalk.method({
  3147. selector: unescape('pi'),
  3148. category: 'instance creation',
  3149. fn: function (){
  3150. var self=this;
  3151. return Math.PI;
  3152. return self;},
  3153. args: [],
  3154. source: unescape('pi%0A%09%3Creturn%20Math.PI%3E'),
  3155. messageSends: [],
  3156. referencedClasses: []
  3157. }),
  3158. smalltalk.Number.klass);
  3159. smalltalk.addClass('BlockClosure', smalltalk.Object, [], 'Kernel');
  3160. smalltalk.addMethod(
  3161. unescape('_compiledSource'),
  3162. smalltalk.method({
  3163. selector: unescape('compiledSource'),
  3164. category: 'accessing',
  3165. fn: function (){
  3166. var self=this;
  3167. return self.toString();
  3168. return self;},
  3169. args: [],
  3170. source: unescape('compiledSource%0A%09%3Creturn%20self.toString%28%29%3E'),
  3171. messageSends: [],
  3172. referencedClasses: []
  3173. }),
  3174. smalltalk.BlockClosure);
  3175. smalltalk.addMethod(
  3176. unescape('_whileTrue_'),
  3177. smalltalk.method({
  3178. selector: unescape('whileTrue%3A'),
  3179. category: 'controlling',
  3180. fn: function (aBlock){
  3181. var self=this;
  3182. while(self()) {aBlock()};
  3183. return self;},
  3184. args: ["aBlock"],
  3185. source: unescape('whileTrue%3A%20aBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%3Cwhile%28self%28%29%29%20%7BaBlock%28%29%7D%3E'),
  3186. messageSends: [],
  3187. referencedClasses: []
  3188. }),
  3189. smalltalk.BlockClosure);
  3190. smalltalk.addMethod(
  3191. unescape('_whileFalse_'),
  3192. smalltalk.method({
  3193. selector: unescape('whileFalse%3A'),
  3194. category: 'controlling',
  3195. fn: function (aBlock){
  3196. var self=this;
  3197. while(!self()) {aBlock()};
  3198. return self;},
  3199. args: ["aBlock"],
  3200. source: unescape('whileFalse%3A%20aBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%3Cwhile%28%21self%28%29%29%20%7BaBlock%28%29%7D%3E'),
  3201. messageSends: [],
  3202. referencedClasses: []
  3203. }),
  3204. smalltalk.BlockClosure);
  3205. smalltalk.addMethod(
  3206. unescape('_value'),
  3207. smalltalk.method({
  3208. selector: unescape('value'),
  3209. category: 'evaluating',
  3210. fn: function (){
  3211. var self=this;
  3212. return self();;
  3213. return self;},
  3214. args: [],
  3215. source: unescape('value%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%28%29%3B%3E'),
  3216. messageSends: [],
  3217. referencedClasses: []
  3218. }),
  3219. smalltalk.BlockClosure);
  3220. smalltalk.addMethod(
  3221. unescape('_value_'),
  3222. smalltalk.method({
  3223. selector: unescape('value%3A'),
  3224. category: 'evaluating',
  3225. fn: function (anArg){
  3226. var self=this;
  3227. return self(anArg);;
  3228. return self;},
  3229. args: ["anArg"],
  3230. source: unescape('value%3A%20anArg%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%28anArg%29%3B%3E'),
  3231. messageSends: [],
  3232. referencedClasses: []
  3233. }),
  3234. smalltalk.BlockClosure);
  3235. smalltalk.addMethod(
  3236. unescape('_value_value_'),
  3237. smalltalk.method({
  3238. selector: unescape('value%3Avalue%3A'),
  3239. category: 'evaluating',
  3240. fn: function (firstArg, secondArg){
  3241. var self=this;
  3242. return self(firstArg, secondArg);;
  3243. return self;},
  3244. args: ["firstArg", "secondArg"],
  3245. source: unescape('value%3A%20firstArg%20value%3A%20secondArg%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%28firstArg%2C%20secondArg%29%3B%3E'),
  3246. messageSends: [],
  3247. referencedClasses: []
  3248. }),
  3249. smalltalk.BlockClosure);
  3250. smalltalk.addMethod(
  3251. unescape('_value_value_value_'),
  3252. smalltalk.method({
  3253. selector: unescape('value%3Avalue%3Avalue%3A'),
  3254. category: 'evaluating',
  3255. fn: function (firstArg, secondArg, thirdArg){
  3256. var self=this;
  3257. return self(firstArg, secondArg, thirdArg);;
  3258. return self;},
  3259. args: ["firstArg", "secondArg", "thirdArg"],
  3260. source: unescape('value%3A%20firstArg%20value%3A%20secondArg%20value%3A%20thirdArg%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%28firstArg%2C%20secondArg%2C%20thirdArg%29%3B%3E'),
  3261. messageSends: [],
  3262. referencedClasses: []
  3263. }),
  3264. smalltalk.BlockClosure);
  3265. smalltalk.addMethod(
  3266. unescape('_valueWithPossibleArguments_'),
  3267. smalltalk.method({
  3268. selector: unescape('valueWithPossibleArguments%3A'),
  3269. category: 'evaluating',
  3270. fn: function (aCollection){
  3271. var self=this;
  3272. return self.apply(null, aCollection);;
  3273. return self;},
  3274. args: ["aCollection"],
  3275. source: unescape('valueWithPossibleArguments%3A%20aCollection%0A%09%3Creturn%20self.apply%28null%2C%20aCollection%29%3B%3E'),
  3276. messageSends: [],
  3277. referencedClasses: []
  3278. }),
  3279. smalltalk.BlockClosure);
  3280. smalltalk.addMethod(
  3281. unescape('_on_do_'),
  3282. smalltalk.method({
  3283. selector: unescape('on%3Ado%3A'),
  3284. category: 'error handling',
  3285. fn: function (anErrorClass, aBlock){
  3286. var self=this;
  3287. smalltalk.send(self, "_try_catch_", [self, (function(error){return ((($receiver = smalltalk.send(error, "_isKindOf_", [anErrorClass])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(aBlock, "_value_", [error]);})() : (function(){return smalltalk.send(error, "_signal", []);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(aBlock, "_value_", [error]);}), (function(){return smalltalk.send(error, "_signal", []);})]));})]);
  3288. return self;},
  3289. args: ["anErrorClass", "aBlock"],
  3290. source: unescape('on%3A%20anErrorClass%20do%3A%20aBlock%0A%09self%20try%3A%20self%20catch%3A%20%5B%3Aerror%20%7C%0A%09%20%20%20%20%28error%20isKindOf%3A%20anErrorClass%29%20%0A%09%20%20%20%20%20ifTrue%3A%20%5BaBlock%20value%3A%20error%5D%0A%09%20%20%20%20%20ifFalse%3A%20%5Berror%20signal%5D%5D'),
  3291. messageSends: ["try:catch:", "ifTrue:ifFalse:", "isKindOf:", "value:", "signal"],
  3292. referencedClasses: []
  3293. }),
  3294. smalltalk.BlockClosure);
  3295. smalltalk.addMethod(
  3296. unescape('_valueWithTimeout_'),
  3297. smalltalk.method({
  3298. selector: unescape('valueWithTimeout%3A'),
  3299. category: 'timeout/interval',
  3300. fn: function (aNumber){
  3301. var self=this;
  3302. return setTimeout(self, aNumber);
  3303. return self;},
  3304. args: ["aNumber"],
  3305. source: unescape('valueWithTimeout%3A%20aNumber%0A%09%3Creturn%20setTimeout%28self%2C%20aNumber%29%3E'),
  3306. messageSends: [],
  3307. referencedClasses: []
  3308. }),
  3309. smalltalk.BlockClosure);
  3310. smalltalk.addMethod(
  3311. unescape('_valueWithInterval_'),
  3312. smalltalk.method({
  3313. selector: unescape('valueWithInterval%3A'),
  3314. category: 'timeout/interval',
  3315. fn: function (aNumber){
  3316. var self=this;
  3317. return setInterval(self, aNumber);
  3318. return self;},
  3319. args: ["aNumber"],
  3320. source: unescape('valueWithInterval%3A%20aNumber%0A%09%3Creturn%20setInterval%28self%2C%20aNumber%29%3E'),
  3321. messageSends: [],
  3322. referencedClasses: []
  3323. }),
  3324. smalltalk.BlockClosure);
  3325. smalltalk.addMethod(
  3326. unescape('_whileFalse'),
  3327. smalltalk.method({
  3328. selector: unescape('whileFalse'),
  3329. category: 'controlling',
  3330. fn: function (){
  3331. var self=this;
  3332. smalltalk.send(self, "_whileFalse_", [(function(){return nil;})]);
  3333. return self;},
  3334. args: [],
  3335. source: unescape('whileFalse%0A%09%22inlined%20in%20the%20Compiler%22%0A%09self%20whileFalse%3A%20%5B%5D'),
  3336. messageSends: ["whileFalse:"],
  3337. referencedClasses: []
  3338. }),
  3339. smalltalk.BlockClosure);
  3340. smalltalk.addMethod(
  3341. unescape('_whileTrue'),
  3342. smalltalk.method({
  3343. selector: unescape('whileTrue'),
  3344. category: 'controlling',
  3345. fn: function (){
  3346. var self=this;
  3347. smalltalk.send(self, "_whileTrue_", [(function(){return nil;})]);
  3348. return self;},
  3349. args: [],
  3350. source: unescape('whileTrue%0A%09%22inlined%20in%20the%20Compiler%22%0A%09self%20whileTrue%3A%20%5B%5D'),
  3351. messageSends: ["whileTrue:"],
  3352. referencedClasses: []
  3353. }),
  3354. smalltalk.BlockClosure);
  3355. smalltalk.addMethod(
  3356. unescape('_new'),
  3357. smalltalk.method({
  3358. selector: unescape('new'),
  3359. category: 'evaluating',
  3360. fn: function (){
  3361. var self=this;
  3362. return new self();
  3363. return self;},
  3364. args: [],
  3365. source: unescape('new%0A%09%22Use%20the%20receiver%20as%20a%20JS%20constructor.%20%0A%09*Do%20not*%20use%20this%20method%20to%20instanciate%20Smalltalk%20objects%21%22%0A%09%3Creturn%20new%20self%28%29%3E'),
  3366. messageSends: [],
  3367. referencedClasses: []
  3368. }),
  3369. smalltalk.BlockClosure);
  3370. smalltalk.addMethod(
  3371. unescape('_applyTo_arguments_'),
  3372. smalltalk.method({
  3373. selector: unescape('applyTo%3Aarguments%3A'),
  3374. category: 'evaluating',
  3375. fn: function (anObject, aCollection){
  3376. var self=this;
  3377. return self.apply(anObject, aCollection);
  3378. return self;},
  3379. args: ["anObject", "aCollection"],
  3380. source: unescape('applyTo%3A%20anObject%20arguments%3A%20aCollection%0A%09%3Creturn%20self.apply%28anObject%2C%20aCollection%29%3E'),
  3381. messageSends: [],
  3382. referencedClasses: []
  3383. }),
  3384. smalltalk.BlockClosure);
  3385. smalltalk.addMethod(
  3386. unescape('_timeToRun'),
  3387. smalltalk.method({
  3388. selector: unescape('timeToRun'),
  3389. category: 'evaluating',
  3390. fn: function (){
  3391. var self=this;
  3392. return smalltalk.send((smalltalk.Date || Date), "_millisecondsToRun_", [self]);
  3393. return self;},
  3394. args: [],
  3395. source: unescape('timeToRun%0A%09%22Answer%20the%20number%20of%20milliseconds%20taken%20to%20execute%20this%20block.%22%0A%0A%09%5E%20Date%20millisecondsToRun%3A%20self'),
  3396. messageSends: ["millisecondsToRun:"],
  3397. referencedClasses: [smalltalk.Date]
  3398. }),
  3399. smalltalk.BlockClosure);
  3400. smalltalk.addClass('Boolean', smalltalk.Object, [], 'Kernel');
  3401. smalltalk.addMethod(
  3402. unescape('__eq'),
  3403. smalltalk.method({
  3404. selector: unescape('%3D'),
  3405. category: 'comparing',
  3406. fn: function (aBoolean){
  3407. var self=this;
  3408. try{((($receiver = smalltalk.send(smalltalk.send(aBoolean, "_class", []), "__eq", [smalltalk.send(self, "_class", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})]));
  3409. return Boolean(self == true) == aBoolean;
  3410. return self;
  3411. } catch(e) {if(e.name === 'stReturn' && e.selector === '__eq'){return e.fn()} throw(e)}},
  3412. args: ["aBoolean"],
  3413. source: unescape('%3D%20aBoolean%0A%09aBoolean%20class%20%3D%20self%20class%20ifFalse%3A%20%5B%5Efalse%5D.%0A%09%3Creturn%20Boolean%28self%20%3D%3D%20true%29%20%3D%3D%20aBoolean%3E'),
  3414. messageSends: ["ifFalse:", unescape("%3D"), "class"],
  3415. referencedClasses: []
  3416. }),
  3417. smalltalk.Boolean);
  3418. smalltalk.addMethod(
  3419. unescape('_shallowCopy'),
  3420. smalltalk.method({
  3421. selector: unescape('shallowCopy'),
  3422. category: 'copying',
  3423. fn: function (){
  3424. var self=this;
  3425. return self;
  3426. return self;},
  3427. args: [],
  3428. source: unescape('shallowCopy%0A%09%5Eself'),
  3429. messageSends: [],
  3430. referencedClasses: []
  3431. }),
  3432. smalltalk.Boolean);
  3433. smalltalk.addMethod(
  3434. unescape('_deepCopy'),
  3435. smalltalk.method({
  3436. selector: unescape('deepCopy'),
  3437. category: 'copying',
  3438. fn: function (){
  3439. var self=this;
  3440. return self;
  3441. return self;},
  3442. args: [],
  3443. source: unescape('deepCopy%0A%09%5Eself'),
  3444. messageSends: [],
  3445. referencedClasses: []
  3446. }),
  3447. smalltalk.Boolean);
  3448. smalltalk.addMethod(
  3449. unescape('_ifTrue_'),
  3450. smalltalk.method({
  3451. selector: unescape('ifTrue%3A'),
  3452. category: 'controlling',
  3453. fn: function (aBlock){
  3454. var self=this;
  3455. return smalltalk.send(self, "_ifTrue_ifFalse_", [aBlock, (function(){return nil;})]);
  3456. return self;},
  3457. args: ["aBlock"],
  3458. source: unescape('ifTrue%3A%20aBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5Eself%20ifTrue%3A%20aBlock%20ifFalse%3A%20%5B%5D'),
  3459. messageSends: ["ifTrue:ifFalse:"],
  3460. referencedClasses: []
  3461. }),
  3462. smalltalk.Boolean);
  3463. smalltalk.addMethod(
  3464. unescape('_ifFalse_'),
  3465. smalltalk.method({
  3466. selector: unescape('ifFalse%3A'),
  3467. category: 'controlling',
  3468. fn: function (aBlock){
  3469. var self=this;
  3470. return smalltalk.send(self, "_ifTrue_ifFalse_", [(function(){return nil;}), aBlock]);
  3471. return self;},
  3472. args: ["aBlock"],
  3473. source: unescape('ifFalse%3A%20aBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5Eself%20ifTrue%3A%20%5B%5D%20ifFalse%3A%20aBlock'),
  3474. messageSends: ["ifTrue:ifFalse:"],
  3475. referencedClasses: []
  3476. }),
  3477. smalltalk.Boolean);
  3478. smalltalk.addMethod(
  3479. unescape('_ifFalse_ifTrue_'),
  3480. smalltalk.method({
  3481. selector: unescape('ifFalse%3AifTrue%3A'),
  3482. category: 'controlling',
  3483. fn: function (aBlock, anotherBlock){
  3484. var self=this;
  3485. return smalltalk.send(self, "_ifTrue_ifFalse_", [anotherBlock, aBlock]);
  3486. return self;},
  3487. args: ["aBlock", "anotherBlock"],
  3488. source: unescape('ifFalse%3A%20aBlock%20ifTrue%3A%20anotherBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5Eself%20ifTrue%3A%20anotherBlock%20ifFalse%3A%20aBlock'),
  3489. messageSends: ["ifTrue:ifFalse:"],
  3490. referencedClasses: []
  3491. }),
  3492. smalltalk.Boolean);
  3493. smalltalk.addMethod(
  3494. unescape('_ifTrue_ifFalse_'),
  3495. smalltalk.method({
  3496. selector: unescape('ifTrue%3AifFalse%3A'),
  3497. category: 'controlling',
  3498. fn: function (aBlock, anotherBlock){
  3499. var self=this;
  3500. if(self == true) {
  3501. return aBlock();
  3502. } else {
  3503. return anotherBlock();
  3504. }
  3505. ;
  3506. return self;},
  3507. args: ["aBlock", "anotherBlock"],
  3508. source: unescape('ifTrue%3A%20aBlock%20ifFalse%3A%20anotherBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%3C%0A%09%20%20%20%20if%28self%20%3D%3D%20true%29%20%7B%0A%09%09return%20aBlock%28%29%3B%0A%09%20%20%20%20%7D%20else%20%7B%0A%09%09return%20anotherBlock%28%29%3B%0A%09%20%20%20%20%7D%0A%09%3E'),
  3509. messageSends: [],
  3510. referencedClasses: []
  3511. }),
  3512. smalltalk.Boolean);
  3513. smalltalk.addMethod(
  3514. unescape('_and_'),
  3515. smalltalk.method({
  3516. selector: unescape('and%3A'),
  3517. category: 'controlling',
  3518. fn: function (aBlock){
  3519. var self=this;
  3520. return smalltalk.send(smalltalk.send(self, "__eq", [true]), "_ifTrue_ifFalse_", [aBlock, (function(){return false;})]);
  3521. return self;},
  3522. args: ["aBlock"],
  3523. source: unescape('and%3A%20aBlock%0A%09%5Eself%20%3D%20true%0A%09%20%20%20%20ifTrue%3A%20aBlock%0A%09%20%20%20%20ifFalse%3A%20%5Bfalse%5D'),
  3524. messageSends: ["ifTrue:ifFalse:", unescape("%3D")],
  3525. referencedClasses: []
  3526. }),
  3527. smalltalk.Boolean);
  3528. smalltalk.addMethod(
  3529. unescape('_or_'),
  3530. smalltalk.method({
  3531. selector: unescape('or%3A'),
  3532. category: 'controlling',
  3533. fn: function (aBlock){
  3534. var self=this;
  3535. return smalltalk.send(smalltalk.send(self, "__eq", [true]), "_ifTrue_ifFalse_", [(function(){return true;}), aBlock]);
  3536. return self;},
  3537. args: ["aBlock"],
  3538. source: unescape('or%3A%20aBlock%0A%09%5Eself%20%3D%20true%0A%09%20%20%20%20ifTrue%3A%20%5Btrue%5D%0A%09%20%20%20%20ifFalse%3A%20aBlock'),
  3539. messageSends: ["ifTrue:ifFalse:", unescape("%3D")],
  3540. referencedClasses: []
  3541. }),
  3542. smalltalk.Boolean);
  3543. smalltalk.addMethod(
  3544. unescape('_not'),
  3545. smalltalk.method({
  3546. selector: unescape('not'),
  3547. category: 'controlling',
  3548. fn: function (){
  3549. var self=this;
  3550. return smalltalk.send(self, "__eq", [false]);
  3551. return self;},
  3552. args: [],
  3553. source: unescape('not%0A%09%5Eself%20%3D%20false'),
  3554. messageSends: [unescape("%3D")],
  3555. referencedClasses: []
  3556. }),
  3557. smalltalk.Boolean);
  3558. smalltalk.addMethod(
  3559. unescape('_printString'),
  3560. smalltalk.method({
  3561. selector: unescape('printString'),
  3562. category: 'printing',
  3563. fn: function (){
  3564. var self=this;
  3565. return self.toString();
  3566. return self;},
  3567. args: [],
  3568. source: unescape('printString%0A%09%3Creturn%20self.toString%28%29%3E'),
  3569. messageSends: [],
  3570. referencedClasses: []
  3571. }),
  3572. smalltalk.Boolean);
  3573. smalltalk.addMethod(
  3574. unescape('_asJSONObject'),
  3575. smalltalk.method({
  3576. selector: unescape('asJSONObject'),
  3577. category: 'converting',
  3578. fn: function (){
  3579. var self=this;
  3580. return self;
  3581. return self;},
  3582. args: [],
  3583. source: unescape('asJSONObject%0A%09%5Eself'),
  3584. messageSends: [],
  3585. referencedClasses: []
  3586. }),
  3587. smalltalk.Boolean);
  3588. smalltalk.addMethod(
  3589. unescape('_%26'),
  3590. smalltalk.method({
  3591. selector: unescape('%26'),
  3592. category: 'controlling',
  3593. fn: function (aBoolean){
  3594. var self=this;
  3595. if(self == true) {
  3596. return aBoolean;
  3597. } else {
  3598. return false;
  3599. }
  3600. ;
  3601. return self;},
  3602. args: ["aBoolean"],
  3603. source: unescape('%26%20aBoolean%0A%09%3C%0A%09%20%20%20%20if%28self%20%3D%3D%20true%29%20%7B%0A%09%09return%20aBoolean%3B%0A%09%20%20%20%20%7D%20else%20%7B%0A%09%09return%20false%3B%0A%09%20%20%20%20%7D%0A%09%3E'),
  3604. messageSends: [],
  3605. referencedClasses: []
  3606. }),
  3607. smalltalk.Boolean);
  3608. smalltalk.addMethod(
  3609. unescape('_%7C'),
  3610. smalltalk.method({
  3611. selector: unescape('%7C'),
  3612. category: 'controlling',
  3613. fn: function (aBoolean){
  3614. var self=this;
  3615. if(self == true) {
  3616. return true;
  3617. } else {
  3618. return aBoolean;
  3619. }
  3620. ;
  3621. return self;},
  3622. args: ["aBoolean"],
  3623. source: unescape('%7C%20aBoolean%0A%09%3C%0A%09%20%20%20%20if%28self%20%3D%3D%20true%29%20%7B%0A%09%09return%20true%3B%0A%09%20%20%20%20%7D%20else%20%7B%0A%09%09return%20aBoolean%3B%0A%09%20%20%20%20%7D%0A%09%3E'),
  3624. messageSends: [],
  3625. referencedClasses: []
  3626. }),
  3627. smalltalk.Boolean);
  3628. smalltalk.addMethod(
  3629. unescape('__eq_eq'),
  3630. smalltalk.method({
  3631. selector: unescape('%3D%3D'),
  3632. category: 'comparing',
  3633. fn: function (aBoolean){
  3634. var self=this;
  3635. try{((($receiver = smalltalk.send(smalltalk.send(aBoolean, "_class", []), "__eq", [smalltalk.send(self, "_class", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq_eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq_eq', fn: function(){return false}})})();})]));
  3636. return Boolean(self == true) === Boolean(aBoolean == true);
  3637. return self;
  3638. } catch(e) {if(e.name === 'stReturn' && e.selector === '__eq_eq'){return e.fn()} throw(e)}},
  3639. args: ["aBoolean"],
  3640. source: unescape('%3D%3D%20aBoolean%0A%09aBoolean%20class%20%3D%20self%20class%20ifFalse%3A%20%5B%5Efalse%5D.%0A%09%3Creturn%20Boolean%28self%20%3D%3D%20true%29%20%3D%3D%3D%20Boolean%28aBoolean%20%3D%3D%20true%29%3E'),
  3641. messageSends: ["ifFalse:", unescape("%3D"), "class"],
  3642. referencedClasses: []
  3643. }),
  3644. smalltalk.Boolean);
  3645. smalltalk.addClass('Date', smalltalk.Object, [], 'Kernel');
  3646. smalltalk.Date.comment=unescape('The%20Date%20class%20is%20used%20to%20work%20with%20dates%20and%20times.')
  3647. smalltalk.addMethod(
  3648. unescape('_year'),
  3649. smalltalk.method({
  3650. selector: unescape('year'),
  3651. category: 'accessing',
  3652. fn: function (){
  3653. var self=this;
  3654. return self.getFullYear();
  3655. return self;},
  3656. args: [],
  3657. source: unescape('year%0A%09%3Creturn%20self.getFullYear%28%29%3E'),
  3658. messageSends: [],
  3659. referencedClasses: []
  3660. }),
  3661. smalltalk.Date);
  3662. smalltalk.addMethod(
  3663. unescape('_month'),
  3664. smalltalk.method({
  3665. selector: unescape('month'),
  3666. category: 'accessing',
  3667. fn: function (){
  3668. var self=this;
  3669. return self.getMonth() + 1;
  3670. return self;},
  3671. args: [],
  3672. source: unescape('month%0A%09%3Creturn%20self.getMonth%28%29%20+%201%3E'),
  3673. messageSends: [],
  3674. referencedClasses: []
  3675. }),
  3676. smalltalk.Date);
  3677. smalltalk.addMethod(
  3678. unescape('_month_'),
  3679. smalltalk.method({
  3680. selector: unescape('month%3A'),
  3681. category: 'accessing',
  3682. fn: function (aNumber){
  3683. var self=this;
  3684. self.setMonth(aNumber - 1);
  3685. return self;},
  3686. args: ["aNumber"],
  3687. source: unescape('month%3A%20aNumber%0A%09%3Cself.setMonth%28aNumber%20-%201%29%3E'),
  3688. messageSends: [],
  3689. referencedClasses: []
  3690. }),
  3691. smalltalk.Date);
  3692. smalltalk.addMethod(
  3693. unescape('_day'),
  3694. smalltalk.method({
  3695. selector: unescape('day'),
  3696. category: 'accessing',
  3697. fn: function (){
  3698. var self=this;
  3699. return smalltalk.send(self, "_dayOfWeek", []);
  3700. return self;},
  3701. args: [],
  3702. source: unescape('day%0A%09%5Eself%20dayOfWeek'),
  3703. messageSends: ["dayOfWeek"],
  3704. referencedClasses: []
  3705. }),
  3706. smalltalk.Date);
  3707. smalltalk.addMethod(
  3708. unescape('_dayOfWeek'),
  3709. smalltalk.method({
  3710. selector: unescape('dayOfWeek'),
  3711. category: 'accessing',
  3712. fn: function (){
  3713. var self=this;
  3714. return self.getDay() + 1;
  3715. return self;},
  3716. args: [],
  3717. source: unescape('dayOfWeek%0A%09%3Creturn%20self.getDay%28%29%20+%201%3E'),
  3718. messageSends: [],
  3719. referencedClasses: []
  3720. }),
  3721. smalltalk.Date);
  3722. smalltalk.addMethod(
  3723. unescape('_dayOfWeek_'),
  3724. smalltalk.method({
  3725. selector: unescape('dayOfWeek%3A'),
  3726. category: 'accessing',
  3727. fn: function (aNumber){
  3728. var self=this;
  3729. return self.setDay(aNumber - 1);
  3730. return self;},
  3731. args: ["aNumber"],
  3732. source: unescape('dayOfWeek%3A%20aNumber%0A%09%3Creturn%20self.setDay%28aNumber%20-%201%29%3E'),
  3733. messageSends: [],
  3734. referencedClasses: []
  3735. }),
  3736. smalltalk.Date);
  3737. smalltalk.addMethod(
  3738. unescape('_day_'),
  3739. smalltalk.method({
  3740. selector: unescape('day%3A'),
  3741. category: 'accessing',
  3742. fn: function (aNumber){
  3743. var self=this;
  3744. smalltalk.send(self, "_day_", [aNumber]);
  3745. return self;},
  3746. args: ["aNumber"],
  3747. source: unescape('day%3A%20aNumber%0A%09self%20day%3A%20aNumber'),
  3748. messageSends: ["day:"],
  3749. referencedClasses: []
  3750. }),
  3751. smalltalk.Date);
  3752. smalltalk.addMethod(
  3753. unescape('_year_'),
  3754. smalltalk.method({
  3755. selector: unescape('year%3A'),
  3756. category: 'accessing',
  3757. fn: function (aNumber){
  3758. var self=this;
  3759. self.setFullYear(aNumber);
  3760. return self;},
  3761. args: ["aNumber"],
  3762. source: unescape('year%3A%20aNumber%0A%09%3Cself.setFullYear%28aNumber%29%3E'),
  3763. messageSends: [],
  3764. referencedClasses: []
  3765. }),
  3766. smalltalk.Date);
  3767. smalltalk.addMethod(
  3768. unescape('_dayOfMonth'),
  3769. smalltalk.method({
  3770. selector: unescape('dayOfMonth'),
  3771. category: 'accessing',
  3772. fn: function (){
  3773. var self=this;
  3774. return self.getDate();
  3775. return self;},
  3776. args: [],
  3777. source: unescape('dayOfMonth%0A%09%3Creturn%20self.getDate%28%29%3E'),
  3778. messageSends: [],
  3779. referencedClasses: []
  3780. }),
  3781. smalltalk.Date);
  3782. smalltalk.addMethod(
  3783. unescape('_dayOfMonth_'),
  3784. smalltalk.method({
  3785. selector: unescape('dayOfMonth%3A'),
  3786. category: 'accessing',
  3787. fn: function (aNumber){
  3788. var self=this;
  3789. self.setDate(aNumber);
  3790. return self;},
  3791. args: ["aNumber"],
  3792. source: unescape('dayOfMonth%3A%20aNumber%0A%09%3Cself.setDate%28aNumber%29%3E'),
  3793. messageSends: [],
  3794. referencedClasses: []
  3795. }),
  3796. smalltalk.Date);
  3797. smalltalk.addMethod(
  3798. unescape('_asString'),
  3799. smalltalk.method({
  3800. selector: unescape('asString'),
  3801. category: 'converting',
  3802. fn: function (){
  3803. var self=this;
  3804. return self.toString();
  3805. return self;},
  3806. args: [],
  3807. source: unescape('asString%0A%09%3Creturn%20self.toString%28%29%3E'),
  3808. messageSends: [],
  3809. referencedClasses: []
  3810. }),
  3811. smalltalk.Date);
  3812. smalltalk.addMethod(
  3813. unescape('_printString'),
  3814. smalltalk.method({
  3815. selector: unescape('printString'),
  3816. category: 'printing',
  3817. fn: function (){
  3818. var self=this;
  3819. return smalltalk.send(self, "_asString", []);
  3820. return self;},
  3821. args: [],
  3822. source: unescape('printString%0A%09%5Eself%20asString'),
  3823. messageSends: ["asString"],
  3824. referencedClasses: []
  3825. }),
  3826. smalltalk.Date);
  3827. smalltalk.addMethod(
  3828. unescape('_asMilliseconds'),
  3829. smalltalk.method({
  3830. selector: unescape('asMilliseconds'),
  3831. category: 'converting',
  3832. fn: function (){
  3833. var self=this;
  3834. return smalltalk.send(self, "_time", []);
  3835. return self;},
  3836. args: [],
  3837. source: unescape('asMilliseconds%0A%09%5Eself%20time'),
  3838. messageSends: ["time"],
  3839. referencedClasses: []
  3840. }),
  3841. smalltalk.Date);
  3842. smalltalk.addMethod(
  3843. unescape('_time'),
  3844. smalltalk.method({
  3845. selector: unescape('time'),
  3846. category: 'accessing',
  3847. fn: function (){
  3848. var self=this;
  3849. return self.getTime();
  3850. return self;},
  3851. args: [],
  3852. source: unescape('time%0A%09%3Creturn%20self.getTime%28%29%3E'),
  3853. messageSends: [],
  3854. referencedClasses: []
  3855. }),
  3856. smalltalk.Date);
  3857. smalltalk.addMethod(
  3858. unescape('_time_'),
  3859. smalltalk.method({
  3860. selector: unescape('time%3A'),
  3861. category: 'accessing',
  3862. fn: function (aNumber){
  3863. var self=this;
  3864. self.setTime(aNumber);
  3865. return self;},
  3866. args: ["aNumber"],
  3867. source: unescape('time%3A%20aNumber%0A%09%3Cself.setTime%28aNumber%29%3E'),
  3868. messageSends: [],
  3869. referencedClasses: []
  3870. }),
  3871. smalltalk.Date);
  3872. smalltalk.addMethod(
  3873. unescape('_asDateString'),
  3874. smalltalk.method({
  3875. selector: unescape('asDateString'),
  3876. category: 'converting',
  3877. fn: function (){
  3878. var self=this;
  3879. return self.toDateString();
  3880. return self;},
  3881. args: [],
  3882. source: unescape('asDateString%0A%09%3Creturn%20self.toDateString%28%29%3E'),
  3883. messageSends: [],
  3884. referencedClasses: []
  3885. }),
  3886. smalltalk.Date);
  3887. smalltalk.addMethod(
  3888. unescape('_asTimeString'),
  3889. smalltalk.method({
  3890. selector: unescape('asTimeString'),
  3891. category: 'converting',
  3892. fn: function (){
  3893. var self=this;
  3894. return self.toTimeString();
  3895. return self;},
  3896. args: [],
  3897. source: unescape('asTimeString%0A%09%3Creturn%20self.toTimeString%28%29%3E'),
  3898. messageSends: [],
  3899. referencedClasses: []
  3900. }),
  3901. smalltalk.Date);
  3902. smalltalk.addMethod(
  3903. unescape('_asLocaleString'),
  3904. smalltalk.method({
  3905. selector: unescape('asLocaleString'),
  3906. category: 'converting',
  3907. fn: function (){
  3908. var self=this;
  3909. return self.toLocaleString();
  3910. return self;},
  3911. args: [],
  3912. source: unescape('asLocaleString%0A%09%3Creturn%20self.toLocaleString%28%29%3E'),
  3913. messageSends: [],
  3914. referencedClasses: []
  3915. }),
  3916. smalltalk.Date);
  3917. smalltalk.addMethod(
  3918. unescape('_asNumber'),
  3919. smalltalk.method({
  3920. selector: unescape('asNumber'),
  3921. category: 'converting',
  3922. fn: function (){
  3923. var self=this;
  3924. return smalltalk.send(self, "_asMilliseconds", []);
  3925. return self;},
  3926. args: [],
  3927. source: unescape('asNumber%0A%09%5Eself%20asMilliseconds'),
  3928. messageSends: ["asMilliseconds"],
  3929. referencedClasses: []
  3930. }),
  3931. smalltalk.Date);
  3932. smalltalk.addMethod(
  3933. unescape('_hours_'),
  3934. smalltalk.method({
  3935. selector: unescape('hours%3A'),
  3936. category: 'accessing',
  3937. fn: function (aNumber){
  3938. var self=this;
  3939. self.setHours(aNumber);
  3940. return self;},
  3941. args: ["aNumber"],
  3942. source: unescape('hours%3A%20aNumber%0A%09%3Cself.setHours%28aNumber%29%3E'),
  3943. messageSends: [],
  3944. referencedClasses: []
  3945. }),
  3946. smalltalk.Date);
  3947. smalltalk.addMethod(
  3948. unescape('_minutes_'),
  3949. smalltalk.method({
  3950. selector: unescape('minutes%3A'),
  3951. category: 'accessing',
  3952. fn: function (aNumber){
  3953. var self=this;
  3954. self.setMinutes(aNumber);
  3955. return self;},
  3956. args: ["aNumber"],
  3957. source: unescape('minutes%3A%20aNumber%0A%09%3Cself.setMinutes%28aNumber%29%3E'),
  3958. messageSends: [],
  3959. referencedClasses: []
  3960. }),
  3961. smalltalk.Date);
  3962. smalltalk.addMethod(
  3963. unescape('_seconds_'),
  3964. smalltalk.method({
  3965. selector: unescape('seconds%3A'),
  3966. category: 'accessing',
  3967. fn: function (aNumber){
  3968. var self=this;
  3969. self.setSeconds(aNumber);
  3970. return self;},
  3971. args: ["aNumber"],
  3972. source: unescape('seconds%3A%20aNumber%0A%09%3Cself.setSeconds%28aNumber%29%3E'),
  3973. messageSends: [],
  3974. referencedClasses: []
  3975. }),
  3976. smalltalk.Date);
  3977. smalltalk.addMethod(
  3978. unescape('_milliseconds_'),
  3979. smalltalk.method({
  3980. selector: unescape('milliseconds%3A'),
  3981. category: 'accessing',
  3982. fn: function (aNumber){
  3983. var self=this;
  3984. self.setMilliseconds(aNumber);
  3985. return self;},
  3986. args: ["aNumber"],
  3987. source: unescape('milliseconds%3A%20aNumber%0A%09%3Cself.setMilliseconds%28aNumber%29%3E'),
  3988. messageSends: [],
  3989. referencedClasses: []
  3990. }),
  3991. smalltalk.Date);
  3992. smalltalk.addMethod(
  3993. unescape('_hours'),
  3994. smalltalk.method({
  3995. selector: unescape('hours'),
  3996. category: 'accessing',
  3997. fn: function (){
  3998. var self=this;
  3999. return self.getHours();
  4000. return self;},
  4001. args: [],
  4002. source: unescape('hours%0A%09%3Creturn%20self.getHours%28%29%3E'),
  4003. messageSends: [],
  4004. referencedClasses: []
  4005. }),
  4006. smalltalk.Date);
  4007. smalltalk.addMethod(
  4008. unescape('_minutes'),
  4009. smalltalk.method({
  4010. selector: unescape('minutes'),
  4011. category: 'accessing',
  4012. fn: function (){
  4013. var self=this;
  4014. return self.getMinutes();
  4015. return self;},
  4016. args: [],
  4017. source: unescape('minutes%0A%09%3Creturn%20self.getMinutes%28%29%3E'),
  4018. messageSends: [],
  4019. referencedClasses: []
  4020. }),
  4021. smalltalk.Date);
  4022. smalltalk.addMethod(
  4023. unescape('_seconds'),
  4024. smalltalk.method({
  4025. selector: unescape('seconds'),
  4026. category: 'accessing',
  4027. fn: function (){
  4028. var self=this;
  4029. return self.getSeconds();
  4030. return self;},
  4031. args: [],
  4032. source: unescape('seconds%0A%09%3Creturn%20self.getSeconds%28%29%3E'),
  4033. messageSends: [],
  4034. referencedClasses: []
  4035. }),
  4036. smalltalk.Date);
  4037. smalltalk.addMethod(
  4038. unescape('_milliseconds'),
  4039. smalltalk.method({
  4040. selector: unescape('milliseconds'),
  4041. category: 'accessing',
  4042. fn: function (){
  4043. var self=this;
  4044. return self.getMilliseconds();
  4045. return self;},
  4046. args: [],
  4047. source: unescape('milliseconds%0A%09%3Creturn%20self.getMilliseconds%28%29%3E'),
  4048. messageSends: [],
  4049. referencedClasses: []
  4050. }),
  4051. smalltalk.Date);
  4052. smalltalk.addMethod(
  4053. unescape('__lt'),
  4054. smalltalk.method({
  4055. selector: unescape('%3C'),
  4056. category: 'comparing',
  4057. fn: function (aDate){
  4058. var self=this;
  4059. return self < aDate;
  4060. return self;},
  4061. args: ["aDate"],
  4062. source: unescape('%3C%20aDate%0A%09%3Creturn%20self%20%3C%20aDate%3E'),
  4063. messageSends: [],
  4064. referencedClasses: []
  4065. }),
  4066. smalltalk.Date);
  4067. smalltalk.addMethod(
  4068. unescape('__gt'),
  4069. smalltalk.method({
  4070. selector: unescape('%3E'),
  4071. category: 'comparing',
  4072. fn: function (aDate){
  4073. var self=this;
  4074. return self > aDate;
  4075. return self;},
  4076. args: ["aDate"],
  4077. source: unescape('%3E%20aDate%0A%09%3Creturn%20self%20%3E%3E%20aDate%3E'),
  4078. messageSends: [],
  4079. referencedClasses: []
  4080. }),
  4081. smalltalk.Date);
  4082. smalltalk.addMethod(
  4083. unescape('__lt_eq'),
  4084. smalltalk.method({
  4085. selector: unescape('%3C%3D'),
  4086. category: 'comparing',
  4087. fn: function (aDate){
  4088. var self=this;
  4089. return self <= aDate;
  4090. return self;},
  4091. args: ["aDate"],
  4092. source: unescape('%3C%3D%20aDate%0A%09%3Creturn%20self%20%3C%3D%20aDate%3E'),
  4093. messageSends: [],
  4094. referencedClasses: []
  4095. }),
  4096. smalltalk.Date);
  4097. smalltalk.addMethod(
  4098. unescape('__gt_eq'),
  4099. smalltalk.method({
  4100. selector: unescape('%3E%3D'),
  4101. category: 'comparing',
  4102. fn: function (aDate){
  4103. var self=this;
  4104. return self >= aDate;
  4105. return self;},
  4106. args: ["aDate"],
  4107. source: unescape('%3E%3D%20aDate%0A%09%3Creturn%20self%20%3E%3E%3D%20aDate%3E'),
  4108. messageSends: [],
  4109. referencedClasses: []
  4110. }),
  4111. smalltalk.Date);
  4112. smalltalk.addMethod(
  4113. unescape('__minus'),
  4114. smalltalk.method({
  4115. selector: unescape('-'),
  4116. category: 'arithmetic',
  4117. fn: function (aDate){
  4118. var self=this;
  4119. return self - aDate;
  4120. return self;},
  4121. args: ["aDate"],
  4122. source: unescape('-%20aDate%0A%09%3Creturn%20self%20-%20aDate%3E'),
  4123. messageSends: [],
  4124. referencedClasses: []
  4125. }),
  4126. smalltalk.Date);
  4127. smalltalk.addMethod(
  4128. unescape('__plus'),
  4129. smalltalk.method({
  4130. selector: unescape('+'),
  4131. category: 'arithmetic',
  4132. fn: function (aDate){
  4133. var self=this;
  4134. return self + aDate;
  4135. return self;},
  4136. args: ["aDate"],
  4137. source: unescape('+%20aDate%0A%09%3Creturn%20self%20+%20aDate%3E'),
  4138. messageSends: [],
  4139. referencedClasses: []
  4140. }),
  4141. smalltalk.Date);
  4142. smalltalk.addMethod(
  4143. unescape('_asJSONObject'),
  4144. smalltalk.method({
  4145. selector: unescape('asJSONObject'),
  4146. category: 'converting',
  4147. fn: function (){
  4148. var self=this;
  4149. return self;
  4150. return self;},
  4151. args: [],
  4152. source: unescape('asJSONObject%0A%09%5Eself'),
  4153. messageSends: [],
  4154. referencedClasses: []
  4155. }),
  4156. smalltalk.Date);
  4157. smalltalk.addMethod(
  4158. unescape('_new_'),
  4159. smalltalk.method({
  4160. selector: unescape('new%3A'),
  4161. category: 'instance creation',
  4162. fn: function (anObject){
  4163. var self=this;
  4164. return new Date(anObject);
  4165. return self;},
  4166. args: ["anObject"],
  4167. source: unescape('new%3A%20anObject%0A%09%3Creturn%20new%20Date%28anObject%29%3E'),
  4168. messageSends: [],
  4169. referencedClasses: []
  4170. }),
  4171. smalltalk.Date.klass);
  4172. smalltalk.addMethod(
  4173. unescape('_fromString_'),
  4174. smalltalk.method({
  4175. selector: unescape('fromString%3A'),
  4176. category: 'instance creation',
  4177. fn: function (aString){
  4178. var self=this;
  4179. return smalltalk.send(self, "_new_", [aString]);
  4180. return self;},
  4181. args: ["aString"],
  4182. source: unescape('fromString%3A%20aString%0A%09%22Example%3A%20Date%20fromString%28%272011/04/15%2000%3A00%3A00%27%29%22%0A%09%5Eself%20new%3A%20aString'),
  4183. messageSends: ["new:"],
  4184. referencedClasses: []
  4185. }),
  4186. smalltalk.Date.klass);
  4187. smalltalk.addMethod(
  4188. unescape('_fromSeconds_'),
  4189. smalltalk.method({
  4190. selector: unescape('fromSeconds%3A'),
  4191. category: 'instance creation',
  4192. fn: function (aNumber){
  4193. var self=this;
  4194. return smalltalk.send(self, "_fromMilliseconds_", [((($receiver = aNumber).klass === smalltalk.Number) ? $receiver *(1000) : smalltalk.send($receiver, "__star", [(1000)]))]);
  4195. return self;},
  4196. args: ["aNumber"],
  4197. source: unescape('fromSeconds%3A%20aNumber%0A%09%5Eself%20fromMilliseconds%3A%20aNumber%20*%201000'),
  4198. messageSends: ["fromMilliseconds:", unescape("*")],
  4199. referencedClasses: []
  4200. }),
  4201. smalltalk.Date.klass);
  4202. smalltalk.addMethod(
  4203. unescape('_fromMilliseconds_'),
  4204. smalltalk.method({
  4205. selector: unescape('fromMilliseconds%3A'),
  4206. category: 'instance creation',
  4207. fn: function (aNumber){
  4208. var self=this;
  4209. return smalltalk.send(self, "_new_", [aNumber]);
  4210. return self;},
  4211. args: ["aNumber"],
  4212. source: unescape('fromMilliseconds%3A%20aNumber%0A%09%5Eself%20new%3A%20aNumber'),
  4213. messageSends: ["new:"],
  4214. referencedClasses: []
  4215. }),
  4216. smalltalk.Date.klass);
  4217. smalltalk.addMethod(
  4218. unescape('_today'),
  4219. smalltalk.method({
  4220. selector: unescape('today'),
  4221. category: 'instance creation',
  4222. fn: function (){
  4223. var self=this;
  4224. return smalltalk.send(self, "_new", []);
  4225. return self;},
  4226. args: [],
  4227. source: unescape('today%0A%09%5Eself%20new'),
  4228. messageSends: ["new"],
  4229. referencedClasses: []
  4230. }),
  4231. smalltalk.Date.klass);
  4232. smalltalk.addMethod(
  4233. unescape('_now'),
  4234. smalltalk.method({
  4235. selector: unescape('now'),
  4236. category: 'instance creation',
  4237. fn: function (){
  4238. var self=this;
  4239. return smalltalk.send(self, "_today", []);
  4240. return self;},
  4241. args: [],
  4242. source: unescape('now%0A%09%5Eself%20today'),
  4243. messageSends: ["today"],
  4244. referencedClasses: []
  4245. }),
  4246. smalltalk.Date.klass);
  4247. smalltalk.addMethod(
  4248. unescape('_millisecondsToRun_'),
  4249. smalltalk.method({
  4250. selector: unescape('millisecondsToRun%3A'),
  4251. category: 'instance creation',
  4252. fn: function (aBlock){
  4253. var self=this;
  4254. var t=nil;
  4255. t=smalltalk.send((smalltalk.Date || Date), "_now", []);
  4256. smalltalk.send(aBlock, "_value", []);
  4257. return ((($receiver = smalltalk.send((smalltalk.Date || Date), "_now", [])).klass === smalltalk.Number) ? $receiver -t : smalltalk.send($receiver, "__minus", [t]));
  4258. return self;},
  4259. args: ["aBlock"],
  4260. source: unescape('millisecondsToRun%3A%20aBlock%0A%09%7C%20t%20%7C%0A%09t%20%3A%3D%20Date%20now.%0A%09aBlock%20value.%0A%09%5EDate%20now%20-%20t'),
  4261. messageSends: ["now", "value", unescape("-")],
  4262. referencedClasses: [smalltalk.Date]
  4263. }),
  4264. smalltalk.Date.klass);
  4265. smalltalk.addClass('UndefinedObject', smalltalk.Object, [], 'Kernel');
  4266. smalltalk.addMethod(
  4267. unescape('_subclass_instanceVariableNames_'),
  4268. smalltalk.method({
  4269. selector: unescape('subclass%3AinstanceVariableNames%3A'),
  4270. category: 'class creation',
  4271. fn: function (aString, anotherString){
  4272. var self=this;
  4273. return smalltalk.send(self, "_subclass_instanceVariableNames_package_", [aString, anotherString, nil]);
  4274. return self;},
  4275. args: ["aString", "anotherString"],
  4276. source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20anotherString%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20anotherString%20package%3A%20nil'),
  4277. messageSends: ["subclass:instanceVariableNames:package:"],
  4278. referencedClasses: []
  4279. }),
  4280. smalltalk.UndefinedObject);
  4281. smalltalk.addMethod(
  4282. unescape('_subclass_instanceVariableNames_category_'),
  4283. smalltalk.method({
  4284. selector: unescape('subclass%3AinstanceVariableNames%3Acategory%3A'),
  4285. category: 'class creation',
  4286. fn: function (aString, aString2, aString3){
  4287. var self=this;
  4288. return smalltalk.send(self, "_subclass_instanceVariableNames_package_", [aString, aString2, aString3]);
  4289. return self;},
  4290. args: ["aString", "aString2", "aString3"],
  4291. source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20category%3A%20aString3%0A%09%22Kept%20for%20compatibility.%22%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20package%3A%20aString3'),
  4292. messageSends: ["subclass:instanceVariableNames:package:"],
  4293. referencedClasses: []
  4294. }),
  4295. smalltalk.UndefinedObject);
  4296. smalltalk.addMethod(
  4297. unescape('_shallowCopy'),
  4298. smalltalk.method({
  4299. selector: unescape('shallowCopy'),
  4300. category: 'copying',
  4301. fn: function (){
  4302. var self=this;
  4303. return self;
  4304. return self;},
  4305. args: [],
  4306. source: unescape('shallowCopy%0A%09%5Eself'),
  4307. messageSends: [],
  4308. referencedClasses: []
  4309. }),
  4310. smalltalk.UndefinedObject);
  4311. smalltalk.addMethod(
  4312. unescape('_deepCopy'),
  4313. smalltalk.method({
  4314. selector: unescape('deepCopy'),
  4315. category: 'copying',
  4316. fn: function (){
  4317. var self=this;
  4318. return self;
  4319. return self;},
  4320. args: [],
  4321. source: unescape('deepCopy%0A%09%5Eself'),
  4322. messageSends: [],
  4323. referencedClasses: []
  4324. }),
  4325. smalltalk.UndefinedObject);
  4326. smalltalk.addMethod(
  4327. unescape('_ifNil_'),
  4328. smalltalk.method({
  4329. selector: unescape('ifNil%3A'),
  4330. category: 'testing',
  4331. fn: function (aBlock){
  4332. var self=this;
  4333. return smalltalk.send(self, "_ifNil_ifNotNil_", [aBlock, (function(){return nil;})]);
  4334. return self;},
  4335. args: ["aBlock"],
  4336. source: unescape('ifNil%3A%20aBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5Eself%20ifNil%3A%20aBlock%20ifNotNil%3A%20%5B%5D'),
  4337. messageSends: ["ifNil:ifNotNil:"],
  4338. referencedClasses: []
  4339. }),
  4340. smalltalk.UndefinedObject);
  4341. smalltalk.addMethod(
  4342. unescape('_ifNotNil_'),
  4343. smalltalk.method({
  4344. selector: unescape('ifNotNil%3A'),
  4345. category: 'testing',
  4346. fn: function (aBlock){
  4347. var self=this;
  4348. return self;
  4349. return self;},
  4350. args: ["aBlock"],
  4351. source: unescape('ifNotNil%3A%20aBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5Eself'),
  4352. messageSends: [],
  4353. referencedClasses: []
  4354. }),
  4355. smalltalk.UndefinedObject);
  4356. smalltalk.addMethod(
  4357. unescape('_ifNil_ifNotNil_'),
  4358. smalltalk.method({
  4359. selector: unescape('ifNil%3AifNotNil%3A'),
  4360. category: 'testing',
  4361. fn: function (aBlock, anotherBlock){
  4362. var self=this;
  4363. return smalltalk.send(aBlock, "_value", []);
  4364. return self;},
  4365. args: ["aBlock", "anotherBlock"],
  4366. source: unescape('ifNil%3A%20aBlock%20ifNotNil%3A%20anotherBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5EaBlock%20value'),
  4367. messageSends: ["value"],
  4368. referencedClasses: []
  4369. }),
  4370. smalltalk.UndefinedObject);
  4371. smalltalk.addMethod(
  4372. unescape('_ifNotNil_ifNil_'),
  4373. smalltalk.method({
  4374. selector: unescape('ifNotNil%3AifNil%3A'),
  4375. category: 'testing',
  4376. fn: function (aBlock, anotherBlock){
  4377. var self=this;
  4378. return smalltalk.send(anotherBlock, "_value", []);
  4379. return self;},
  4380. args: ["aBlock", "anotherBlock"],
  4381. source: unescape('ifNotNil%3A%20aBlock%20ifNil%3A%20anotherBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5EanotherBlock%20value'),
  4382. messageSends: ["value"],
  4383. referencedClasses: []
  4384. }),
  4385. smalltalk.UndefinedObject);
  4386. smalltalk.addMethod(
  4387. unescape('_isNil'),
  4388. smalltalk.method({
  4389. selector: unescape('isNil'),
  4390. category: 'testing',
  4391. fn: function (){
  4392. var self=this;
  4393. return true;
  4394. return self;},
  4395. args: [],
  4396. source: unescape('isNil%0A%09%5Etrue'),
  4397. messageSends: [],
  4398. referencedClasses: []
  4399. }),
  4400. smalltalk.UndefinedObject);
  4401. smalltalk.addMethod(
  4402. unescape('_notNil'),
  4403. smalltalk.method({
  4404. selector: unescape('notNil'),
  4405. category: 'testing',
  4406. fn: function (){
  4407. var self=this;
  4408. return false;
  4409. return self;},
  4410. args: [],
  4411. source: unescape('notNil%0A%09%5Efalse'),
  4412. messageSends: [],
  4413. referencedClasses: []
  4414. }),
  4415. smalltalk.UndefinedObject);
  4416. smalltalk.addMethod(
  4417. unescape('_printString'),
  4418. smalltalk.method({
  4419. selector: unescape('printString'),
  4420. category: 'printing',
  4421. fn: function (){
  4422. var self=this;
  4423. return "nil";
  4424. return self;},
  4425. args: [],
  4426. source: unescape('printString%0A%20%20%20%20%5E%27nil%27'),
  4427. messageSends: [],
  4428. referencedClasses: []
  4429. }),
  4430. smalltalk.UndefinedObject);
  4431. smalltalk.addMethod(
  4432. unescape('_subclass_instanceVariableNames_package_'),
  4433. smalltalk.method({
  4434. selector: unescape('subclass%3AinstanceVariableNames%3Apackage%3A'),
  4435. category: 'class creation',
  4436. fn: function (aString, aString2, aString3){
  4437. var self=this;
  4438. return smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder), "_new", []), "_superclass_subclass_instanceVariableNames_package_", [self, aString, aString2, aString3]);
  4439. return self;},
  4440. args: ["aString", "aString2", "aString3"],
  4441. source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20package%3A%20aString3%0A%09%5EClassBuilder%20new%0A%09%20%20%20%20superclass%3A%20self%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20package%3A%20aString3'),
  4442. messageSends: ["superclass:subclass:instanceVariableNames:package:", "new"],
  4443. referencedClasses: [smalltalk.nil]
  4444. }),
  4445. smalltalk.UndefinedObject);
  4446. smalltalk.addMethod(
  4447. unescape('_new'),
  4448. smalltalk.method({
  4449. selector: unescape('new'),
  4450. category: 'instance creation',
  4451. fn: function (){
  4452. var self=this;
  4453. smalltalk.send(self, "_error_", ["You cannot create new instances of UndefinedObject. Use nil"]);
  4454. return self;},
  4455. args: [],
  4456. source: unescape('new%0A%09%20%20%20%20self%20error%3A%20%27You%20cannot%20create%20new%20instances%20of%20UndefinedObject.%20Use%20nil%27'),
  4457. messageSends: ["error:"],
  4458. referencedClasses: []
  4459. }),
  4460. smalltalk.UndefinedObject.klass);
  4461. smalltalk.addClass('Collection', smalltalk.Object, [], 'Kernel');
  4462. smalltalk.addMethod(
  4463. unescape('_size'),
  4464. smalltalk.method({
  4465. selector: unescape('size'),
  4466. category: 'accessing',
  4467. fn: function (){
  4468. var self=this;
  4469. smalltalk.send(self, "_subclassResponsibility", []);
  4470. return self;},
  4471. args: [],
  4472. source: unescape('size%0A%09self%20subclassResponsibility'),
  4473. messageSends: ["subclassResponsibility"],
  4474. referencedClasses: []
  4475. }),
  4476. smalltalk.Collection);
  4477. smalltalk.addMethod(
  4478. unescape('_readStream'),
  4479. smalltalk.method({
  4480. selector: unescape('readStream'),
  4481. category: 'accessing',
  4482. fn: function (){
  4483. var self=this;
  4484. return smalltalk.send(self, "_stream", []);
  4485. return self;},
  4486. args: [],
  4487. source: unescape('readStream%0A%09%5Eself%20stream'),
  4488. messageSends: ["stream"],
  4489. referencedClasses: []
  4490. }),
  4491. smalltalk.Collection);
  4492. smalltalk.addMethod(
  4493. unescape('_writeStream'),
  4494. smalltalk.method({
  4495. selector: unescape('writeStream'),
  4496. category: 'accessing',
  4497. fn: function (){
  4498. var self=this;
  4499. return smalltalk.send(self, "_stream", []);
  4500. return self;},
  4501. args: [],
  4502. source: unescape('writeStream%0A%09%5Eself%20stream'),
  4503. messageSends: ["stream"],
  4504. referencedClasses: []
  4505. }),
  4506. smalltalk.Collection);
  4507. smalltalk.addMethod(
  4508. unescape('_stream'),
  4509. smalltalk.method({
  4510. selector: unescape('stream'),
  4511. category: 'accessing',
  4512. fn: function (){
  4513. var self=this;
  4514. return smalltalk.send(smalltalk.send(self, "_streamClass", []), "_on_", [self]);
  4515. return self;},
  4516. args: [],
  4517. source: unescape('stream%0A%09%5Eself%20streamClass%20on%3A%20self'),
  4518. messageSends: ["on:", "streamClass"],
  4519. referencedClasses: []
  4520. }),
  4521. smalltalk.Collection);
  4522. smalltalk.addMethod(
  4523. unescape('_streamClass'),
  4524. smalltalk.method({
  4525. selector: unescape('streamClass'),
  4526. category: 'accessing',
  4527. fn: function (){
  4528. var self=this;
  4529. return smalltalk.send(smalltalk.send(self, "_class", []), "_streamClass", []);
  4530. return self;},
  4531. args: [],
  4532. source: unescape('streamClass%0A%09%5Eself%20class%20streamClass'),
  4533. messageSends: ["streamClass", "class"],
  4534. referencedClasses: []
  4535. }),
  4536. smalltalk.Collection);
  4537. smalltalk.addMethod(
  4538. unescape('_add_'),
  4539. smalltalk.method({
  4540. selector: unescape('add%3A'),
  4541. category: 'adding/removing',
  4542. fn: function (anObject){
  4543. var self=this;
  4544. smalltalk.send(self, "_subclassResponsibility", []);
  4545. return self;},
  4546. args: ["anObject"],
  4547. source: unescape('add%3A%20anObject%0A%09self%20subclassResponsibility'),
  4548. messageSends: ["subclassResponsibility"],
  4549. referencedClasses: []
  4550. }),
  4551. smalltalk.Collection);
  4552. smalltalk.addMethod(
  4553. unescape('_addAll_'),
  4554. smalltalk.method({
  4555. selector: unescape('addAll%3A'),
  4556. category: 'adding/removing',
  4557. fn: function (aCollection){
  4558. var self=this;
  4559. smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send(self, "_add_", [each]);})]);
  4560. return aCollection;
  4561. return self;},
  4562. args: ["aCollection"],
  4563. source: unescape('addAll%3A%20aCollection%0A%09aCollection%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20self%20add%3A%20each%5D.%0A%09%5EaCollection'),
  4564. messageSends: ["do:", "add:"],
  4565. referencedClasses: []
  4566. }),
  4567. smalltalk.Collection);
  4568. smalltalk.addMethod(
  4569. unescape('__comma'),
  4570. smalltalk.method({
  4571. selector: unescape('%2C'),
  4572. category: 'copying',
  4573. fn: function (aCollection){
  4574. var self=this;
  4575. return (function($rec){smalltalk.send($rec, "_addAll_", [aCollection]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_copy", []));
  4576. return self;},
  4577. args: ["aCollection"],
  4578. source: unescape('%2C%20aCollection%0A%09%5Eself%20copy%20%0A%09%20%20%20%20addAll%3A%20aCollection%3B%20%0A%09%20%20%20%20yourself'),
  4579. messageSends: ["addAll:", "yourself", "copy"],
  4580. referencedClasses: []
  4581. }),
  4582. smalltalk.Collection);
  4583. smalltalk.addMethod(
  4584. unescape('_copyWith_'),
  4585. smalltalk.method({
  4586. selector: unescape('copyWith%3A'),
  4587. category: 'copying',
  4588. fn: function (anObject){
  4589. var self=this;
  4590. return (function($rec){smalltalk.send($rec, "_add_", [anObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_copy", []));
  4591. return self;},
  4592. args: ["anObject"],
  4593. source: unescape('copyWith%3A%20anObject%0A%09%5Eself%20copy%20add%3A%20anObject%3B%20yourself'),
  4594. messageSends: ["add:", "yourself", "copy"],
  4595. referencedClasses: []
  4596. }),
  4597. smalltalk.Collection);
  4598. smalltalk.addMethod(
  4599. unescape('_copyWithAll_'),
  4600. smalltalk.method({
  4601. selector: unescape('copyWithAll%3A'),
  4602. category: 'copying',
  4603. fn: function (aCollection){
  4604. var self=this;
  4605. return (function($rec){smalltalk.send($rec, "_addAll_", [aCollection]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_copy", []));
  4606. return self;},
  4607. args: ["aCollection"],
  4608. source: unescape('copyWithAll%3A%20aCollection%0A%09%5Eself%20copy%20addAll%3A%20aCollection%3B%20yourself'),
  4609. messageSends: ["addAll:", "yourself", "copy"],
  4610. referencedClasses: []
  4611. }),
  4612. smalltalk.Collection);
  4613. smalltalk.addMethod(
  4614. unescape('_asArray'),
  4615. smalltalk.method({
  4616. selector: unescape('asArray'),
  4617. category: 'converting',
  4618. fn: function (){
  4619. var self=this;
  4620. var array=nil;
  4621. var index=nil;
  4622. array=smalltalk.send((smalltalk.Array || Array), "_new", []);
  4623. index=(0);
  4624. smalltalk.send(self, "_do_", [(function(each){index=((($receiver = index).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]));return smalltalk.send(array, "_at_put_", [index, each]);})]);
  4625. return array;
  4626. return self;},
  4627. args: [],
  4628. source: unescape('asArray%0A%09%7C%20array%20index%20%7C%0A%09array%20%3A%3D%20Array%20new.%0A%09index%20%3A%3D%200.%0A%09self%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20index%20%3A%3D%20index%20+%201.%0A%09%20%20%20%20array%20at%3A%20index%20put%3A%20each%5D.%0A%09%5Earray'),
  4629. messageSends: ["new", "do:", unescape("+"), "at:put:"],
  4630. referencedClasses: [smalltalk.Array]
  4631. }),
  4632. smalltalk.Collection);
  4633. smalltalk.addMethod(
  4634. unescape('_do_'),
  4635. smalltalk.method({
  4636. selector: unescape('do%3A'),
  4637. category: 'enumerating',
  4638. fn: function (aBlock){
  4639. var self=this;
  4640. for(var i=0;i<self.length;i++){aBlock(self[i]);};
  4641. return self;},
  4642. args: ["aBlock"],
  4643. source: unescape('do%3A%20aBlock%0A%09%3Cfor%28var%20i%3D0%3Bi%3Cself.length%3Bi++%29%7BaBlock%28self%5Bi%5D%29%3B%7D%3E'),
  4644. messageSends: [],
  4645. referencedClasses: []
  4646. }),
  4647. smalltalk.Collection);
  4648. smalltalk.addMethod(
  4649. unescape('_collect_'),
  4650. smalltalk.method({
  4651. selector: unescape('collect%3A'),
  4652. category: 'enumerating',
  4653. fn: function (aBlock){
  4654. var self=this;
  4655. var newCollection=nil;
  4656. newCollection=smalltalk.send(smalltalk.send(self, "_class", []), "_new", []);
  4657. smalltalk.send(self, "_do_", [(function(each){return smalltalk.send(newCollection, "_add_", [smalltalk.send(aBlock, "_value_", [each])]);})]);
  4658. return newCollection;
  4659. return self;},
  4660. args: ["aBlock"],
  4661. source: unescape('collect%3A%20aBlock%0A%09%7C%20newCollection%20%7C%0A%09newCollection%20%3A%3D%20self%20class%20new.%0A%09self%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20newCollection%20add%3A%20%28aBlock%20value%3A%20each%29%5D.%0A%09%5EnewCollection'),
  4662. messageSends: ["new", "class", "do:", "add:", "value:"],
  4663. referencedClasses: []
  4664. }),
  4665. smalltalk.Collection);
  4666. smalltalk.addMethod(
  4667. unescape('_detect_'),
  4668. smalltalk.method({
  4669. selector: unescape('detect%3A'),
  4670. category: 'enumerating',
  4671. fn: function (aBlock){
  4672. var self=this;
  4673. return smalltalk.send(self, "_detect_ifNone_", [aBlock, (function(){return smalltalk.send(self, "_errorNotFound", []);})]);
  4674. return self;},
  4675. args: ["aBlock"],
  4676. source: unescape('detect%3A%20aBlock%0A%09%5Eself%20detect%3A%20aBlock%20ifNone%3A%20%5Bself%20errorNotFound%5D'),
  4677. messageSends: ["detect:ifNone:", "errorNotFound"],
  4678. referencedClasses: []
  4679. }),
  4680. smalltalk.Collection);
  4681. smalltalk.addMethod(
  4682. unescape('_detect_ifNone_'),
  4683. smalltalk.method({
  4684. selector: unescape('detect%3AifNone%3A'),
  4685. category: 'enumerating',
  4686. fn: function (aBlock, anotherBlock){
  4687. var self=this;
  4688. for(var i = 0; i < self.length; i++)
  4689. if(aBlock(self[i]))
  4690. return self[i];
  4691. return anotherBlock();
  4692. ;
  4693. return self;},
  4694. args: ["aBlock", "anotherBlock"],
  4695. source: unescape('detect%3A%20aBlock%20ifNone%3A%20anotherBlock%0A%09%3C%0A%09%09for%28var%20i%20%3D%200%3B%20i%20%3C%20self.length%3B%20i++%29%0A%09%09%09if%28aBlock%28self%5Bi%5D%29%29%0A%09%09%09%09return%20self%5Bi%5D%3B%0A%09%09return%20anotherBlock%28%29%3B%0A%09%3E'),
  4696. messageSends: [],
  4697. referencedClasses: []
  4698. }),
  4699. smalltalk.Collection);
  4700. smalltalk.addMethod(
  4701. unescape('_do_separatedBy_'),
  4702. smalltalk.method({
  4703. selector: unescape('do%3AseparatedBy%3A'),
  4704. category: 'enumerating',
  4705. fn: function (aBlock, anotherBlock){
  4706. var self=this;
  4707. var first=nil;
  4708. first=true;
  4709. smalltalk.send(self, "_do_", [(function(each){((($receiver = first).klass === smalltalk.Boolean) ? ($receiver ? (function(){return first=false;})() : (function(){return smalltalk.send(anotherBlock, "_value", []);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return first=false;}), (function(){return smalltalk.send(anotherBlock, "_value", []);})]));return smalltalk.send(aBlock, "_value_", [each]);})]);
  4710. return self;},
  4711. args: ["aBlock", "anotherBlock"],
  4712. source: unescape('do%3A%20aBlock%20separatedBy%3A%20anotherBlock%0A%20%20%20%20%09%7C%20first%20%7C%0A%20%20%20%20%09first%20%3A%3D%20true.%0A%20%20%20%20%09self%20do%3A%20%5B%3Aeach%20%7C%0A%20%20%20%20%09%20%20%20%20first%0A%20%20%20%20%09%09ifTrue%3A%20%5Bfirst%20%3A%3D%20false%5D%0A%20%20%20%20%09%09ifFalse%3A%20%5BanotherBlock%20value%5D.%0A%20%20%20%20%09%20%20%20%20aBlock%20value%3A%20each%5D'),
  4713. messageSends: ["do:", "ifTrue:ifFalse:", "value", "value:"],
  4714. referencedClasses: []
  4715. }),
  4716. smalltalk.Collection);
  4717. smalltalk.addMethod(
  4718. unescape('_inject_into_'),
  4719. smalltalk.method({
  4720. selector: unescape('inject%3Ainto%3A'),
  4721. category: 'enumerating',
  4722. fn: function (anObject, aBlock){
  4723. var self=this;
  4724. var result=nil;
  4725. result=anObject;
  4726. smalltalk.send(self, "_do_", [(function(each){return result=smalltalk.send(aBlock, "_value_value_", [result, each]);})]);
  4727. return result;
  4728. return self;},
  4729. args: ["anObject", "aBlock"],
  4730. source: unescape('inject%3A%20anObject%20into%3A%20aBlock%0A%09%7C%20result%20%7C%0A%09result%20%3A%3D%20anObject.%0A%09self%20do%3A%20%5B%3Aeach%20%7C%20%0A%09%20%20%20%20result%20%3A%3D%20aBlock%20value%3A%20result%20value%3A%20each%5D.%0A%09%5Eresult'),
  4731. messageSends: ["do:", "value:value:"],
  4732. referencedClasses: []
  4733. }),
  4734. smalltalk.Collection);
  4735. smalltalk.addMethod(
  4736. unescape('_reject_'),
  4737. smalltalk.method({
  4738. selector: unescape('reject%3A'),
  4739. category: 'enumerating',
  4740. fn: function (aBlock){
  4741. var self=this;
  4742. return smalltalk.send(self, "_select_", [(function(each){return smalltalk.send(smalltalk.send(aBlock, "_value_", [each]), "__eq", [false]);})]);
  4743. return self;},
  4744. args: ["aBlock"],
  4745. source: unescape('reject%3A%20aBlock%0A%09%5Eself%20select%3A%20%5B%3Aeach%20%7C%20%28aBlock%20value%3A%20each%29%20%3D%20false%5D'),
  4746. messageSends: ["select:", unescape("%3D"), "value:"],
  4747. referencedClasses: []
  4748. }),
  4749. smalltalk.Collection);
  4750. smalltalk.addMethod(
  4751. unescape('_select_'),
  4752. smalltalk.method({
  4753. selector: unescape('select%3A'),
  4754. category: 'enumerating',
  4755. fn: function (aBlock){
  4756. var self=this;
  4757. var stream=nil;
  4758. stream=smalltalk.send(smalltalk.send(smalltalk.send(self, "_class", []), "_new", []), "_writeStream", []);
  4759. smalltalk.send(self, "_do_", [(function(each){return ((($receiver = smalltalk.send(aBlock, "_value_", [each])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(stream, "_nextPut_", [each]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(stream, "_nextPut_", [each]);})]));})]);
  4760. return smalltalk.send(stream, "_contents", []);
  4761. return self;},
  4762. args: ["aBlock"],
  4763. source: unescape('select%3A%20aBlock%0A%09%7C%20stream%20%7C%0A%09stream%20%3A%3D%20self%20class%20new%20writeStream.%0A%09self%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20%28aBlock%20value%3A%20each%29%20ifTrue%3A%20%5B%0A%09%09stream%20nextPut%3A%20each%5D%5D.%0A%09%5Estream%20contents'),
  4764. messageSends: ["writeStream", "new", "class", "do:", "ifTrue:", "value:", "nextPut:", "contents"],
  4765. referencedClasses: []
  4766. }),
  4767. smalltalk.Collection);
  4768. smalltalk.addMethod(
  4769. unescape('_errorNotFound'),
  4770. smalltalk.method({
  4771. selector: unescape('errorNotFound'),
  4772. category: 'error handling',
  4773. fn: function (){
  4774. var self=this;
  4775. smalltalk.send(self, "_error_", ["Object is not in the collection"]);
  4776. return self;},
  4777. args: [],
  4778. source: unescape('errorNotFound%0A%09self%20error%3A%20%27Object%20is%20not%20in%20the%20collection%27'),
  4779. messageSends: ["error:"],
  4780. referencedClasses: []
  4781. }),
  4782. smalltalk.Collection);
  4783. smalltalk.addMethod(
  4784. unescape('_includes_'),
  4785. smalltalk.method({
  4786. selector: unescape('includes%3A'),
  4787. category: 'testing',
  4788. fn: function (anObject){
  4789. var self=this;
  4790. var i = self.length;
  4791. while (i--) {
  4792. if (smalltalk.send(self[i], "__eq", [anObject])) {return true;}
  4793. }
  4794. return false
  4795. ;
  4796. return self;},
  4797. args: ["anObject"],
  4798. source: unescape('includes%3A%20anObject%0A%09%3C%0A%09%09var%20i%20%3D%20self.length%3B%0A%09%09while%20%28i--%29%20%7B%0A%09%09%09if%20%28smalltalk.send%28self%5Bi%5D%2C%20%22__eq%22%2C%20%5BanObject%5D%29%29%20%7Breturn%20true%3B%7D%09%0A%09%09%7D%0A%09%09return%20false%0A%09%3E'),
  4799. messageSends: [],
  4800. referencedClasses: []
  4801. }),
  4802. smalltalk.Collection);
  4803. smalltalk.addMethod(
  4804. unescape('_notEmpty'),
  4805. smalltalk.method({
  4806. selector: unescape('notEmpty'),
  4807. category: 'testing',
  4808. fn: function (){
  4809. var self=this;
  4810. return smalltalk.send(smalltalk.send(self, "_isEmpty", []), "_not", []);
  4811. return self;},
  4812. args: [],
  4813. source: unescape('notEmpty%0A%09%5Eself%20isEmpty%20not'),
  4814. messageSends: ["not", "isEmpty"],
  4815. referencedClasses: []
  4816. }),
  4817. smalltalk.Collection);
  4818. smalltalk.addMethod(
  4819. unescape('_isEmpty'),
  4820. smalltalk.method({
  4821. selector: unescape('isEmpty'),
  4822. category: 'testing',
  4823. fn: function (){
  4824. var self=this;
  4825. return smalltalk.send(smalltalk.send(self, "_size", []), "__eq", [(0)]);
  4826. return self;},
  4827. args: [],
  4828. source: unescape('isEmpty%0A%09%5Eself%20size%20%3D%200'),
  4829. messageSends: [unescape("%3D"), "size"],
  4830. referencedClasses: []
  4831. }),
  4832. smalltalk.Collection);
  4833. smalltalk.addMethod(
  4834. unescape('_remove_'),
  4835. smalltalk.method({
  4836. selector: unescape('remove%3A'),
  4837. category: 'adding/removing',
  4838. fn: function (anObject){
  4839. var self=this;
  4840. smalltalk.send(self, "_subclassResponsibility", []);
  4841. return self;},
  4842. args: ["anObject"],
  4843. source: unescape('remove%3A%20anObject%0A%20%20%20%20self%20subclassResponsibility'),
  4844. messageSends: ["subclassResponsibility"],
  4845. referencedClasses: []
  4846. }),
  4847. smalltalk.Collection);
  4848. smalltalk.addMethod(
  4849. unescape('_asSet'),
  4850. smalltalk.method({
  4851. selector: unescape('asSet'),
  4852. category: 'converting',
  4853. fn: function (){
  4854. var self=this;
  4855. return smalltalk.send((smalltalk.Set || Set), "_withAll_", [self]);
  4856. return self;},
  4857. args: [],
  4858. source: unescape('asSet%0A%09%5ESet%20withAll%3A%20self'),
  4859. messageSends: ["withAll:"],
  4860. referencedClasses: [smalltalk.nil]
  4861. }),
  4862. smalltalk.Collection);
  4863. smalltalk.addMethod(
  4864. unescape('_ifNotEmpty_'),
  4865. smalltalk.method({
  4866. selector: unescape('ifNotEmpty%3A'),
  4867. category: 'testing',
  4868. fn: function (aBlock){
  4869. var self=this;
  4870. smalltalk.send(smalltalk.send(self, "_notEmpty", []), "_ifTrue_", [aBlock]);
  4871. return self;},
  4872. args: ["aBlock"],
  4873. source: unescape('ifNotEmpty%3A%20aBlock%0A%09self%20notEmpty%20ifTrue%3A%20aBlock.'),
  4874. messageSends: ["ifTrue:", "notEmpty"],
  4875. referencedClasses: []
  4876. }),
  4877. smalltalk.Collection);
  4878. smalltalk.addMethod(
  4879. unescape('_ifEmpty_'),
  4880. smalltalk.method({
  4881. selector: unescape('ifEmpty%3A'),
  4882. category: 'testing',
  4883. fn: function (aBlock){
  4884. var self=this;
  4885. smalltalk.send(smalltalk.send(self, "_isEmpty", []), "_ifTrue_", [aBlock]);
  4886. return self;},
  4887. args: ["aBlock"],
  4888. source: unescape('ifEmpty%3A%20aBlock%0A%09self%20isEmpty%20ifTrue%3A%20aBlock.'),
  4889. messageSends: ["ifTrue:", "isEmpty"],
  4890. referencedClasses: []
  4891. }),
  4892. smalltalk.Collection);
  4893. smalltalk.addMethod(
  4894. unescape('_copyWithoutAll_'),
  4895. smalltalk.method({
  4896. selector: unescape('copyWithoutAll%3A'),
  4897. category: 'copying',
  4898. fn: function (aCollection){
  4899. var self=this;
  4900. return smalltalk.send(self, "_reject_", [(function(each){return smalltalk.send(aCollection, "_includes_", [each]);})]);
  4901. return self;},
  4902. args: ["aCollection"],
  4903. source: unescape('copyWithoutAll%3A%20aCollection%0A%09%22Answer%20a%20copy%20of%20the%20receiver%20that%20does%20not%20contain%20any%20elements%20%0A%09equal%20to%20those%20in%20aCollection.%22%0A%0A%09%5E%20self%20reject%3A%20%5B%3Aeach%20%7C%20aCollection%20includes%3A%20each%5D'),
  4904. messageSends: ["reject:", "includes:"],
  4905. referencedClasses: []
  4906. }),
  4907. smalltalk.Collection);
  4908. smalltalk.addMethod(
  4909. unescape('_streamClass'),
  4910. smalltalk.method({
  4911. selector: unescape('streamClass'),
  4912. category: 'accessing',
  4913. fn: function (){
  4914. var self=this;
  4915. return (smalltalk.Stream || Stream);
  4916. return self;},
  4917. args: [],
  4918. source: unescape('streamClass%0A%09%20%20%20%20%5EStream'),
  4919. messageSends: [],
  4920. referencedClasses: [smalltalk.nil]
  4921. }),
  4922. smalltalk.Collection.klass);
  4923. smalltalk.addMethod(
  4924. unescape('_with_'),
  4925. smalltalk.method({
  4926. selector: unescape('with%3A'),
  4927. category: 'instance creation',
  4928. fn: function (anObject){
  4929. var self=this;
  4930. return (function($rec){smalltalk.send($rec, "_add_", [anObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", []));
  4931. return self;},
  4932. args: ["anObject"],
  4933. source: unescape('with%3A%20anObject%0A%09%20%20%20%20%5Eself%20new%0A%09%09add%3A%20anObject%3B%0A%09%09yourself'),
  4934. messageSends: ["add:", "yourself", "new"],
  4935. referencedClasses: []
  4936. }),
  4937. smalltalk.Collection.klass);
  4938. smalltalk.addMethod(
  4939. unescape('_with_with_'),
  4940. smalltalk.method({
  4941. selector: unescape('with%3Awith%3A'),
  4942. category: 'instance creation',
  4943. fn: function (anObject, anotherObject){
  4944. var self=this;
  4945. return (function($rec){smalltalk.send($rec, "_add_", [anObject]);smalltalk.send($rec, "_add_", [anotherObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", []));
  4946. return self;},
  4947. args: ["anObject", "anotherObject"],
  4948. source: unescape('with%3A%20anObject%20with%3A%20anotherObject%0A%09%20%20%20%20%5Eself%20new%0A%09%09add%3A%20anObject%3B%0A%09%09add%3A%20anotherObject%3B%0A%09%09yourself'),
  4949. messageSends: ["add:", "yourself", "new"],
  4950. referencedClasses: []
  4951. }),
  4952. smalltalk.Collection.klass);
  4953. smalltalk.addMethod(
  4954. unescape('_with_with_with_'),
  4955. smalltalk.method({
  4956. selector: unescape('with%3Awith%3Awith%3A'),
  4957. category: 'instance creation',
  4958. fn: function (firstObject, secondObject, thirdObject){
  4959. var self=this;
  4960. return (function($rec){smalltalk.send($rec, "_add_", [firstObject]);smalltalk.send($rec, "_add_", [secondObject]);smalltalk.send($rec, "_add_", [thirdObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", []));
  4961. return self;},
  4962. args: ["firstObject", "secondObject", "thirdObject"],
  4963. source: unescape('with%3A%20firstObject%20with%3A%20secondObject%20with%3A%20thirdObject%0A%09%20%20%20%20%5Eself%20new%0A%09%09add%3A%20firstObject%3B%0A%09%09add%3A%20secondObject%3B%0A%09%09add%3A%20thirdObject%3B%0A%09%09yourself'),
  4964. messageSends: ["add:", "yourself", "new"],
  4965. referencedClasses: []
  4966. }),
  4967. smalltalk.Collection.klass);
  4968. smalltalk.addMethod(
  4969. unescape('_withAll_'),
  4970. smalltalk.method({
  4971. selector: unescape('withAll%3A'),
  4972. category: 'instance creation',
  4973. fn: function (aCollection){
  4974. var self=this;
  4975. return (function($rec){smalltalk.send($rec, "_addAll_", [aCollection]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", []));
  4976. return self;},
  4977. args: ["aCollection"],
  4978. source: unescape('withAll%3A%20aCollection%0A%09%20%20%20%20%5Eself%20new%0A%09%09addAll%3A%20aCollection%3B%0A%09%09yourself'),
  4979. messageSends: ["addAll:", "yourself", "new"],
  4980. referencedClasses: []
  4981. }),
  4982. smalltalk.Collection.klass);
  4983. smalltalk.addClass('SequenceableCollection', smalltalk.Collection, [], 'Kernel');
  4984. smalltalk.addMethod(
  4985. unescape('_at_'),
  4986. smalltalk.method({
  4987. selector: unescape('at%3A'),
  4988. category: 'accessing',
  4989. fn: function (anIndex){
  4990. var self=this;
  4991. return smalltalk.send(self, "_at_ifAbsent_", [anIndex, (function(){return smalltalk.send(self, "_errorNotFound", []);})]);
  4992. return self;},
  4993. args: ["anIndex"],
  4994. source: unescape('at%3A%20anIndex%0A%09%5Eself%20at%3A%20anIndex%20ifAbsent%3A%20%5B%0A%09%20%20%20%20self%20errorNotFound%5D'),
  4995. messageSends: ["at:ifAbsent:", "errorNotFound"],
  4996. referencedClasses: []
  4997. }),
  4998. smalltalk.SequenceableCollection);
  4999. smalltalk.addMethod(
  5000. unescape('_at_ifAbsent_'),
  5001. smalltalk.method({
  5002. selector: unescape('at%3AifAbsent%3A'),
  5003. category: 'accessing',
  5004. fn: function (anIndex, aBlock){
  5005. var self=this;
  5006. smalltalk.send(self, "_subclassResponsibility", []);
  5007. return self;},
  5008. args: ["anIndex", "aBlock"],
  5009. source: unescape('at%3A%20anIndex%20ifAbsent%3A%20aBlock%0A%09self%20subclassResponsibility'),
  5010. messageSends: ["subclassResponsibility"],
  5011. referencedClasses: []
  5012. }),
  5013. smalltalk.SequenceableCollection);
  5014. smalltalk.addMethod(
  5015. unescape('_at_put_'),
  5016. smalltalk.method({
  5017. selector: unescape('at%3Aput%3A'),
  5018. category: 'accessing',
  5019. fn: function (anIndex, anObject){
  5020. var self=this;
  5021. smalltalk.send(self, "_subclassResponsibility", []);
  5022. return self;},
  5023. args: ["anIndex", "anObject"],
  5024. source: unescape('at%3A%20anIndex%20put%3A%20anObject%0A%09self%20subclassResponsibility'),
  5025. messageSends: ["subclassResponsibility"],
  5026. referencedClasses: []
  5027. }),
  5028. smalltalk.SequenceableCollection);
  5029. smalltalk.addMethod(
  5030. unescape('_copyFrom_to_'),
  5031. smalltalk.method({
  5032. selector: unescape('copyFrom%3Ato%3A'),
  5033. category: 'copying',
  5034. fn: function (anIndex, anotherIndex){
  5035. var self=this;
  5036. smalltalk.send(self, "_subclassResponsibility", []);
  5037. return self;},
  5038. args: ["anIndex", "anotherIndex"],
  5039. source: unescape('copyFrom%3A%20anIndex%20to%3A%20anotherIndex%0A%09self%20subclassResponsibility'),
  5040. messageSends: ["subclassResponsibility"],
  5041. referencedClasses: []
  5042. }),
  5043. smalltalk.SequenceableCollection);
  5044. smalltalk.addMethod(
  5045. unescape('_first'),
  5046. smalltalk.method({
  5047. selector: unescape('first'),
  5048. category: 'accessing',
  5049. fn: function (){
  5050. var self=this;
  5051. return smalltalk.send(self, "_at_", [(1)]);
  5052. return self;},
  5053. args: [],
  5054. source: unescape('first%0A%09%5Eself%20at%3A%201'),
  5055. messageSends: ["at:"],
  5056. referencedClasses: []
  5057. }),
  5058. smalltalk.SequenceableCollection);
  5059. smalltalk.addMethod(
  5060. unescape('_fourth'),
  5061. smalltalk.method({
  5062. selector: unescape('fourth'),
  5063. category: 'accessing',
  5064. fn: function (){
  5065. var self=this;
  5066. return smalltalk.send(self, "_at_", [(4)]);
  5067. return self;},
  5068. args: [],
  5069. source: unescape('fourth%0A%09%5Eself%20at%3A%204'),
  5070. messageSends: ["at:"],
  5071. referencedClasses: []
  5072. }),
  5073. smalltalk.SequenceableCollection);
  5074. smalltalk.addMethod(
  5075. unescape('_last'),
  5076. smalltalk.method({
  5077. selector: unescape('last'),
  5078. category: 'accessing',
  5079. fn: function (){
  5080. var self=this;
  5081. return smalltalk.send(self, "_at_", [smalltalk.send(self, "_size", [])]);
  5082. return self;},
  5083. args: [],
  5084. source: unescape('last%0A%09%5Eself%20at%3A%20self%20size'),
  5085. messageSends: ["at:", "size"],
  5086. referencedClasses: []
  5087. }),
  5088. smalltalk.SequenceableCollection);
  5089. smalltalk.addMethod(
  5090. unescape('_second'),
  5091. smalltalk.method({
  5092. selector: unescape('second'),
  5093. category: 'accessing',
  5094. fn: function (){
  5095. var self=this;
  5096. return smalltalk.send(self, "_at_", [(2)]);
  5097. return self;},
  5098. args: [],
  5099. source: unescape('second%0A%09%5Eself%20at%3A%202'),
  5100. messageSends: ["at:"],
  5101. referencedClasses: []
  5102. }),
  5103. smalltalk.SequenceableCollection);
  5104. smalltalk.addMethod(
  5105. unescape('_third'),
  5106. smalltalk.method({
  5107. selector: unescape('third'),
  5108. category: 'accessing',
  5109. fn: function (){
  5110. var self=this;
  5111. return smalltalk.send(self, "_at_", [(3)]);
  5112. return self;},
  5113. args: [],
  5114. source: unescape('third%0A%09%5Eself%20at%3A%203'),
  5115. messageSends: ["at:"],
  5116. referencedClasses: []
  5117. }),
  5118. smalltalk.SequenceableCollection);
  5119. smalltalk.addMethod(
  5120. unescape('_removeLast'),
  5121. smalltalk.method({
  5122. selector: unescape('removeLast'),
  5123. category: 'adding',
  5124. fn: function (){
  5125. var self=this;
  5126. smalltalk.send(self, "_remove_", [smalltalk.send(self, "_last", [])]);
  5127. return self;},
  5128. args: [],
  5129. source: unescape('removeLast%0A%09self%20remove%3A%20self%20last'),
  5130. messageSends: ["remove:", "last"],
  5131. referencedClasses: []
  5132. }),
  5133. smalltalk.SequenceableCollection);
  5134. smalltalk.addMethod(
  5135. unescape('_addLast_'),
  5136. smalltalk.method({
  5137. selector: unescape('addLast%3A'),
  5138. category: 'adding',
  5139. fn: function (anObject){
  5140. var self=this;
  5141. smalltalk.send(self, "_add_", [anObject]);
  5142. return self;},
  5143. args: ["anObject"],
  5144. source: unescape('addLast%3A%20anObject%0A%09self%20add%3A%20anObject'),
  5145. messageSends: ["add:"],
  5146. referencedClasses: []
  5147. }),
  5148. smalltalk.SequenceableCollection);
  5149. smalltalk.addMethod(
  5150. unescape('_withIndexDo_'),
  5151. smalltalk.method({
  5152. selector: unescape('withIndexDo%3A'),
  5153. category: 'enumerating',
  5154. fn: function (aBlock){
  5155. var self=this;
  5156. for(var i=0;i<self.length;i++){aBlock(self[i], i+1);};
  5157. return self;},
  5158. args: ["aBlock"],
  5159. source: unescape('withIndexDo%3A%20aBlock%0A%09%3Cfor%28var%20i%3D0%3Bi%3Cself.length%3Bi++%29%7BaBlock%28self%5Bi%5D%2C%20i+1%29%3B%7D%3E'),
  5160. messageSends: [],
  5161. referencedClasses: []
  5162. }),
  5163. smalltalk.SequenceableCollection);
  5164. smalltalk.addMethod(
  5165. unescape('_allButFirst'),
  5166. smalltalk.method({
  5167. selector: unescape('allButFirst'),
  5168. category: 'accessing',
  5169. fn: function (){
  5170. var self=this;
  5171. return smalltalk.send(self, "_copyFrom_to_", [(2), smalltalk.send(self, "_size", [])]);
  5172. return self;},
  5173. args: [],
  5174. source: unescape('allButFirst%0A%09%5Eself%20copyFrom%3A%202%20to%3A%20self%20size'),
  5175. messageSends: ["copyFrom:to:", "size"],
  5176. referencedClasses: []
  5177. }),
  5178. smalltalk.SequenceableCollection);
  5179. smalltalk.addMethod(
  5180. unescape('_allButLast'),
  5181. smalltalk.method({
  5182. selector: unescape('allButLast'),
  5183. category: 'accessing',
  5184. fn: function (){
  5185. var self=this;
  5186. return smalltalk.send(self, "_copyFrom_to_", [(1), ((($receiver = smalltalk.send(self, "_size", [])).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)]))]);
  5187. return self;},
  5188. args: [],
  5189. source: unescape('allButLast%0A%09%5Eself%20copyFrom%3A%201%20to%3A%20self%20size%20-%201'),
  5190. messageSends: ["copyFrom:to:", unescape("-"), "size"],
  5191. referencedClasses: []
  5192. }),
  5193. smalltalk.SequenceableCollection);
  5194. smalltalk.addMethod(
  5195. unescape('_indexOf_'),
  5196. smalltalk.method({
  5197. selector: unescape('indexOf%3A'),
  5198. category: 'accessing',
  5199. fn: function (anObject){
  5200. var self=this;
  5201. return smalltalk.send(self, "_indexOf_ifAbsent_", [anObject, (function(){return smalltalk.send(self, "_errorNotFound", []);})]);
  5202. return self;},
  5203. args: ["anObject"],
  5204. source: unescape('indexOf%3A%20anObject%0A%09%5Eself%20indexOf%3A%20anObject%20ifAbsent%3A%20%5Bself%20errorNotFound%5D'),
  5205. messageSends: ["indexOf:ifAbsent:", "errorNotFound"],
  5206. referencedClasses: []
  5207. }),
  5208. smalltalk.SequenceableCollection);
  5209. smalltalk.addMethod(
  5210. unescape('_indexOf_ifAbsent_'),
  5211. smalltalk.method({
  5212. selector: unescape('indexOf%3AifAbsent%3A'),
  5213. category: 'accessing',
  5214. fn: function (anObject, aBlock){
  5215. var self=this;
  5216. for(var i=0;i<self.length;i++){
  5217. if(self[i].__eq(anObject)) {return i+1}
  5218. }
  5219. return aBlock();
  5220. ;
  5221. return self;},
  5222. args: ["anObject", "aBlock"],
  5223. source: unescape('indexOf%3A%20anObject%20ifAbsent%3A%20aBlock%0A%09%3C%0A%09%09for%28var%20i%3D0%3Bi%3Cself.length%3Bi++%29%7B%0A%09%09%09if%28self%5Bi%5D.__eq%28anObject%29%29%20%7Breturn%20i+1%7D%0A%09%09%7D%0A%09%09return%20aBlock%28%29%3B%0A%09%3E'),
  5224. messageSends: [],
  5225. referencedClasses: []
  5226. }),
  5227. smalltalk.SequenceableCollection);
  5228. smalltalk.addMethod(
  5229. unescape('_indexOf_startingAt_ifAbsent_'),
  5230. smalltalk.method({
  5231. selector: unescape('indexOf%3AstartingAt%3AifAbsent%3A'),
  5232. category: 'accessing',
  5233. fn: function (anObject, start, aBlock){
  5234. var self=this;
  5235. for(var i=start-1;i<self.length;i++){
  5236. if(self[i].__eq(anObject)) {return i+1}
  5237. }
  5238. return aBlock();
  5239. ;
  5240. return self;},
  5241. args: ["anObject", "start", "aBlock"],
  5242. source: unescape('indexOf%3A%20anObject%20startingAt%3A%20start%20ifAbsent%3A%20aBlock%0A%09%3C%0A%09%09for%28var%20i%3Dstart-1%3Bi%3Cself.length%3Bi++%29%7B%0A%09%09%09if%28self%5Bi%5D.__eq%28anObject%29%29%20%7Breturn%20i+1%7D%0A%09%09%7D%0A%09%09return%20aBlock%28%29%3B%0A%09%3E'),
  5243. messageSends: [],
  5244. referencedClasses: []
  5245. }),
  5246. smalltalk.SequenceableCollection);
  5247. smalltalk.addMethod(
  5248. unescape('_indexOf_startingAt_'),
  5249. smalltalk.method({
  5250. selector: unescape('indexOf%3AstartingAt%3A'),
  5251. category: 'accessing',
  5252. fn: function (anObject, start){
  5253. var self=this;
  5254. return smalltalk.send(self, "_indexOf_startingAt_ifAbsent_", [anObject, start, (function(){return (0);})]);
  5255. return self;},
  5256. args: ["anObject", "start"],
  5257. source: unescape('indexOf%3A%20anObject%20startingAt%3A%20start%0A%09%22Answer%20the%20index%20of%20the%20first%20occurence%20of%20anElement%20after%20start%0A%09within%20the%20receiver.%20If%20the%20receiver%20does%20not%20contain%20anElement%2C%20%0A%09answer%200.%22%0A%09%5Eself%20indexOf%3A%20anObject%20startingAt%3A%20start%20ifAbsent%3A%20%5B0%5D'),
  5258. messageSends: ["indexOf:startingAt:ifAbsent:"],
  5259. referencedClasses: []
  5260. }),
  5261. smalltalk.SequenceableCollection);
  5262. smalltalk.addMethod(
  5263. unescape('_reversed'),
  5264. smalltalk.method({
  5265. selector: unescape('reversed'),
  5266. category: 'converting',
  5267. fn: function (){
  5268. var self=this;
  5269. smalltalk.send(self, "_subclassResponsibility", []);
  5270. return self;},
  5271. args: [],
  5272. source: unescape('reversed%0A%09self%20subclassResponsibility'),
  5273. messageSends: ["subclassResponsibility"],
  5274. referencedClasses: []
  5275. }),
  5276. smalltalk.SequenceableCollection);
  5277. smalltalk.addClass('String', smalltalk.SequenceableCollection, [], 'Kernel');
  5278. smalltalk.addMethod(
  5279. unescape('__eq'),
  5280. smalltalk.method({
  5281. selector: unescape('%3D'),
  5282. category: 'comparing',
  5283. fn: function (aString){
  5284. var self=this;
  5285. try{((($receiver = smalltalk.send(smalltalk.send(aString, "_class", []), "__eq", [smalltalk.send(self, "_class", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})]));
  5286. return String(self) == aString;
  5287. return self;
  5288. } catch(e) {if(e.name === 'stReturn' && e.selector === '__eq'){return e.fn()} throw(e)}},
  5289. args: ["aString"],
  5290. source: unescape('%3D%20aString%0A%09aString%20class%20%3D%20self%20class%20ifFalse%3A%20%5B%5Efalse%5D.%0A%09%3Creturn%20String%28self%29%20%3D%3D%20aString%3E'),
  5291. messageSends: ["ifFalse:", unescape("%3D"), "class"],
  5292. referencedClasses: []
  5293. }),
  5294. smalltalk.String);
  5295. smalltalk.addMethod(
  5296. unescape('_size'),
  5297. smalltalk.method({
  5298. selector: unescape('size'),
  5299. category: 'accessing',
  5300. fn: function (){
  5301. var self=this;
  5302. return self.length;
  5303. return self;},
  5304. args: [],
  5305. source: unescape('size%0A%09%3Creturn%20self.length%3E'),
  5306. messageSends: [],
  5307. referencedClasses: []
  5308. }),
  5309. smalltalk.String);
  5310. smalltalk.addMethod(
  5311. unescape('_at_'),
  5312. smalltalk.method({
  5313. selector: unescape('at%3A'),
  5314. category: 'accessing',
  5315. fn: function (anIndex){
  5316. var self=this;
  5317. return self[anIndex - 1];
  5318. return self;},
  5319. args: ["anIndex"],
  5320. source: unescape('at%3A%20anIndex%0A%09%3Creturn%20self%5BanIndex%20-%201%5D%3E'),
  5321. messageSends: [],
  5322. referencedClasses: []
  5323. }),
  5324. smalltalk.String);
  5325. smalltalk.addMethod(
  5326. unescape('_at_put_'),
  5327. smalltalk.method({
  5328. selector: unescape('at%3Aput%3A'),
  5329. category: 'accessing',
  5330. fn: function (anIndex, anObject){
  5331. var self=this;
  5332. smalltalk.send(self, "_errorReadOnly", []);
  5333. return self;},
  5334. args: ["anIndex", "anObject"],
  5335. source: unescape('at%3A%20anIndex%20put%3A%20anObject%0A%20%20%20%20%09self%20errorReadOnly'),
  5336. messageSends: ["errorReadOnly"],
  5337. referencedClasses: []
  5338. }),
  5339. smalltalk.String);
  5340. smalltalk.addMethod(
  5341. unescape('_at_ifAbsent_'),
  5342. smalltalk.method({
  5343. selector: unescape('at%3AifAbsent%3A'),
  5344. category: 'accessing',
  5345. fn: function (anIndex, aBlock){
  5346. var self=this;
  5347. (($receiver = smalltalk.send(self, "_at_", [anIndex])) == nil || $receiver == undefined) ? (function(){return aBlock;})() : $receiver;
  5348. return self;},
  5349. args: ["anIndex", "aBlock"],
  5350. source: unescape('at%3A%20anIndex%20ifAbsent%3A%20aBlock%0A%20%20%20%20%09%28self%20at%3A%20anIndex%29%20ifNil%3A%20%5BaBlock%5D'),
  5351. messageSends: ["ifNil:", "at:"],
  5352. referencedClasses: []
  5353. }),
  5354. smalltalk.String);
  5355. smalltalk.addMethod(
  5356. unescape('_escaped'),
  5357. smalltalk.method({
  5358. selector: unescape('escaped'),
  5359. category: 'accessing',
  5360. fn: function (){
  5361. var self=this;
  5362. return escape(self);
  5363. return self;},
  5364. args: [],
  5365. source: unescape('escaped%0A%09%3Creturn%20escape%28self%29%3E'),
  5366. messageSends: [],
  5367. referencedClasses: []
  5368. }),
  5369. smalltalk.String);
  5370. smalltalk.addMethod(
  5371. unescape('_unescaped'),
  5372. smalltalk.method({
  5373. selector: unescape('unescaped'),
  5374. category: 'accessing',
  5375. fn: function (){
  5376. var self=this;
  5377. return unescape(self);
  5378. return self;},
  5379. args: [],
  5380. source: unescape('unescaped%0A%09%3Creturn%20unescape%28self%29%3E'),
  5381. messageSends: [],
  5382. referencedClasses: []
  5383. }),
  5384. smalltalk.String);
  5385. smalltalk.addMethod(
  5386. unescape('_add_'),
  5387. smalltalk.method({
  5388. selector: unescape('add%3A'),
  5389. category: 'adding',
  5390. fn: function (anObject){
  5391. var self=this;
  5392. smalltalk.send(self, "_errorReadOnly", []);
  5393. return self;},
  5394. args: ["anObject"],
  5395. source: unescape('add%3A%20anObject%0A%20%20%20%20%09self%20errorReadOnly'),
  5396. messageSends: ["errorReadOnly"],
  5397. referencedClasses: []
  5398. }),
  5399. smalltalk.String);
  5400. smalltalk.addMethod(
  5401. unescape('__comma'),
  5402. smalltalk.method({
  5403. selector: unescape('%2C'),
  5404. category: 'copying',
  5405. fn: function (aString){
  5406. var self=this;
  5407. return self + aString;
  5408. return self;},
  5409. args: ["aString"],
  5410. source: unescape('%2C%20aString%0A%09%3Creturn%20self%20+%20aString%3E'),
  5411. messageSends: [],
  5412. referencedClasses: []
  5413. }),
  5414. smalltalk.String);
  5415. smalltalk.addMethod(
  5416. unescape('_copyFrom_to_'),
  5417. smalltalk.method({
  5418. selector: unescape('copyFrom%3Ato%3A'),
  5419. category: 'copying',
  5420. fn: function (anIndex, anotherIndex){
  5421. var self=this;
  5422. return self.substring(anIndex - 1, anotherIndex);
  5423. return self;},
  5424. args: ["anIndex", "anotherIndex"],
  5425. source: unescape('copyFrom%3A%20anIndex%20to%3A%20anotherIndex%0A%09%3Creturn%20self.substring%28anIndex%20-%201%2C%20anotherIndex%29%3E'),
  5426. messageSends: [],
  5427. referencedClasses: []
  5428. }),
  5429. smalltalk.String);
  5430. smalltalk.addMethod(
  5431. unescape('_shallowCopy'),
  5432. smalltalk.method({
  5433. selector: unescape('shallowCopy'),
  5434. category: 'copying',
  5435. fn: function (){
  5436. var self=this;
  5437. return smalltalk.send(smalltalk.send(self, "_class", []), "_fromString_", [self]);
  5438. return self;},
  5439. args: [],
  5440. source: unescape('shallowCopy%0A%20%20%20%20%09%5Eself%20class%20fromString%3A%20self'),
  5441. messageSends: ["fromString:", "class"],
  5442. referencedClasses: []
  5443. }),
  5444. smalltalk.String);
  5445. smalltalk.addMethod(
  5446. unescape('_deepCopy'),
  5447. smalltalk.method({
  5448. selector: unescape('deepCopy'),
  5449. category: 'copying',
  5450. fn: function (){
  5451. var self=this;
  5452. return smalltalk.send(self, "_shallowCopy", []);
  5453. return self;},
  5454. args: [],
  5455. source: unescape('deepCopy%0A%20%20%20%20%09%5Eself%20shallowCopy'),
  5456. messageSends: ["shallowCopy"],
  5457. referencedClasses: []
  5458. }),
  5459. smalltalk.String);
  5460. smalltalk.addMethod(
  5461. unescape('_asSelector'),
  5462. smalltalk.method({
  5463. selector: unescape('asSelector'),
  5464. category: 'converting',
  5465. fn: function (){
  5466. var self=this;
  5467. var selector=nil;
  5468. selector=smalltalk.send("_", "__comma", [self]);
  5469. selector=smalltalk.send(selector, "_replace_with_", [":", "_"]);
  5470. selector=smalltalk.send(selector, "_replace_with_", [unescape("%5B+%5D"), "_plus"]);
  5471. selector=smalltalk.send(selector, "_replace_with_", [unescape("-"), "_minus"]);
  5472. selector=smalltalk.send(selector, "_replace_with_", [unescape("%5B*%5D"), "_star"]);
  5473. selector=smalltalk.send(selector, "_replace_with_", [unescape("%5B/%5D"), "_slash"]);
  5474. selector=smalltalk.send(selector, "_replace_with_", [unescape("%3E"), "_gt"]);
  5475. selector=smalltalk.send(selector, "_replace_with_", [unescape("%3C"), "_lt"]);
  5476. selector=smalltalk.send(selector, "_replace_with_", [unescape("%3D"), "_eq"]);
  5477. selector=smalltalk.send(selector, "_replace_with_", [unescape("%2C"), "_comma"]);
  5478. selector=smalltalk.send(selector, "_replace_with_", [unescape("%5B@%5D"), "_at"]);
  5479. return selector;
  5480. return self;},
  5481. args: [],
  5482. source: unescape('asSelector%0A%09%22If%20you%20change%20this%20method%2C%20change%20smalltalk.convertSelector%20too%20%28see%20js/boot.js%20file%29%22%0A%0A%09%7C%20selector%20%7C%0A%09selector%20%3A%3D%20%27_%27%2C%20self.%0A%20%20%20%20%09selector%20%3A%3D%20selector%20replace%3A%20%27%3A%27%20with%3A%20%27_%27.%0A%20%20%20%20%09selector%20%3A%3D%20selector%20replace%3A%20%27%5B+%5D%27%20with%3A%20%27_plus%27.%0A%20%20%20%20%09selector%20%3A%3D%20selector%20replace%3A%20%27-%27%20with%3A%20%27_minus%27.%0A%20%20%20%20%09selector%20%3A%3D%20selector%20replace%3A%20%27%5B*%5D%27%20with%3A%20%27_star%27.%0A%20%20%20%20%09selector%20%3A%3D%20selector%20replace%3A%20%27%5B/%5D%27%20with%3A%20%27_slash%27.%0A%20%20%20%20%09selector%20%3A%3D%20selector%20replace%3A%20%27%3E%27%20with%3A%20%27_gt%27.%0A%20%20%20%20%09selector%20%3A%3D%20selector%20replace%3A%20%27%3C%27%20with%3A%20%27_lt%27.%0A%20%20%20%20%09selector%20%3A%3D%20selector%20replace%3A%20%27%3D%27%20with%3A%20%27_eq%27.%0A%20%20%20%20%09selector%20%3A%3D%20selector%20replace%3A%20%27%2C%27%20with%3A%20%27_comma%27.%0A%20%20%20%20%09selector%20%3A%3D%20selector%20replace%3A%20%27%5B@%5D%27%20with%3A%20%27_at%27.%0A%09%5Eselector'),
  5483. messageSends: [unescape("%2C"), "replace:with:"],
  5484. referencedClasses: []
  5485. }),
  5486. smalltalk.String);
  5487. smalltalk.addMethod(
  5488. unescape('_asJavascript'),
  5489. smalltalk.method({
  5490. selector: unescape('asJavascript'),
  5491. category: 'converting',
  5492. fn: function (){
  5493. var self=this;
  5494. if(self.search(/^[a-zA-Z0-9_:.$ ]*$/) == -1)
  5495. return "unescape(\"" + escape(self) + "\")";
  5496. else
  5497. return "\"" + self + "\"";
  5498. ;
  5499. return self;},
  5500. args: [],
  5501. source: unescape('asJavascript%0A%09%3C%0A%09%09if%28self.search%28/%5E%5Ba-zA-Z0-9_%3A.%24%20%5D*%24/%29%20%3D%3D%20-1%29%0A%09%09%09return%20%22unescape%28%5C%22%22%20+%20escape%28self%29%20+%20%22%5C%22%29%22%3B%0A%09%09else%0A%09%09%09return%20%22%5C%22%22%20+%20self%20+%20%22%5C%22%22%3B%0A%09%3E'),
  5502. messageSends: [],
  5503. referencedClasses: []
  5504. }),
  5505. smalltalk.String);
  5506. smalltalk.addMethod(
  5507. unescape('_replace_with_'),
  5508. smalltalk.method({
  5509. selector: unescape('replace%3Awith%3A'),
  5510. category: 'regular expressions',
  5511. fn: function (aString, anotherString){
  5512. var self=this;
  5513. return smalltalk.send(self, "_replaceRegexp_with_", [smalltalk.send((smalltalk.RegularExpression || RegularExpression), "_fromString_flag_", [aString, "g"]), anotherString]);
  5514. return self;},
  5515. args: ["aString", "anotherString"],
  5516. source: unescape('replace%3A%20aString%20with%3A%20anotherString%0A%20%20%20%20%09%5Eself%20replaceRegexp%3A%20%28RegularExpression%20fromString%3A%20aString%20flag%3A%20%27g%27%29%20with%3A%20anotherString'),
  5517. messageSends: ["replaceRegexp:with:", "fromString:flag:"],
  5518. referencedClasses: [smalltalk.RegularExpression]
  5519. }),
  5520. smalltalk.String);
  5521. smalltalk.addMethod(
  5522. unescape('_replaceRegexp_with_'),
  5523. smalltalk.method({
  5524. selector: unescape('replaceRegexp%3Awith%3A'),
  5525. category: 'regular expressions',
  5526. fn: function (aRegexp, aString){
  5527. var self=this;
  5528. return self.replace(aRegexp, aString);
  5529. return self;},
  5530. args: ["aRegexp", "aString"],
  5531. source: unescape('replaceRegexp%3A%20aRegexp%20with%3A%20aString%0A%09%3Creturn%20self.replace%28aRegexp%2C%20aString%29%3E'),
  5532. messageSends: [],
  5533. referencedClasses: []
  5534. }),
  5535. smalltalk.String);
  5536. smalltalk.addMethod(
  5537. unescape('_tokenize_'),
  5538. smalltalk.method({
  5539. selector: unescape('tokenize%3A'),
  5540. category: 'converting',
  5541. fn: function (aString){
  5542. var self=this;
  5543. return self.split(aString);
  5544. return self;},
  5545. args: ["aString"],
  5546. source: unescape('tokenize%3A%20aString%0A%09%3Creturn%20self.split%28aString%29%3E'),
  5547. messageSends: [],
  5548. referencedClasses: []
  5549. }),
  5550. smalltalk.String);
  5551. smalltalk.addMethod(
  5552. unescape('_match_'),
  5553. smalltalk.method({
  5554. selector: unescape('match%3A'),
  5555. category: 'regular expressions',
  5556. fn: function (aRegexp){
  5557. var self=this;
  5558. return self.search(aRegexp) != -1;
  5559. return self;},
  5560. args: ["aRegexp"],
  5561. source: unescape('match%3A%20aRegexp%0A%09%3Creturn%20self.search%28aRegexp%29%20%21%3D%20-1%3E'),
  5562. messageSends: [],
  5563. referencedClasses: []
  5564. }),
  5565. smalltalk.String);
  5566. smalltalk.addMethod(
  5567. unescape('_asString'),
  5568. smalltalk.method({
  5569. selector: unescape('asString'),
  5570. category: 'converting',
  5571. fn: function (){
  5572. var self=this;
  5573. return self;
  5574. return self;},
  5575. args: [],
  5576. source: unescape('asString%0A%20%20%20%20%09%5Eself'),
  5577. messageSends: [],
  5578. referencedClasses: []
  5579. }),
  5580. smalltalk.String);
  5581. smalltalk.addMethod(
  5582. unescape('_asNumber'),
  5583. smalltalk.method({
  5584. selector: unescape('asNumber'),
  5585. category: 'converting',
  5586. fn: function (){
  5587. var self=this;
  5588. return Number(self);
  5589. return self;},
  5590. args: [],
  5591. source: unescape('asNumber%0A%09%3Creturn%20Number%28self%29%3E'),
  5592. messageSends: [],
  5593. referencedClasses: []
  5594. }),
  5595. smalltalk.String);
  5596. smalltalk.addMethod(
  5597. unescape('_errorReadOnly'),
  5598. smalltalk.method({
  5599. selector: unescape('errorReadOnly'),
  5600. category: 'error handling',
  5601. fn: function (){
  5602. var self=this;
  5603. smalltalk.send(self, "_error_", [unescape("Object%20is%20read-only")]);
  5604. return self;},
  5605. args: [],
  5606. source: unescape('errorReadOnly%0A%20%20%20%20%09self%20error%3A%20%27Object%20is%20read-only%27'),
  5607. messageSends: ["error:"],
  5608. referencedClasses: []
  5609. }),
  5610. smalltalk.String);
  5611. smalltalk.addMethod(
  5612. unescape('_printString'),
  5613. smalltalk.method({
  5614. selector: unescape('printString'),
  5615. category: 'printing',
  5616. fn: function (){
  5617. var self=this;
  5618. return smalltalk.send(smalltalk.send(unescape("%27"), "__comma", [self]), "__comma", [unescape("%27")]);
  5619. return self;},
  5620. args: [],
  5621. source: unescape('printString%0A%20%20%20%20%09%5E%27%27%27%27%2C%20self%2C%20%27%27%27%27'),
  5622. messageSends: [unescape("%2C")],
  5623. referencedClasses: []
  5624. }),
  5625. smalltalk.String);
  5626. smalltalk.addMethod(
  5627. unescape('_printNl'),
  5628. smalltalk.method({
  5629. selector: unescape('printNl'),
  5630. category: 'printing',
  5631. fn: function (){
  5632. var self=this;
  5633. console.log(self);
  5634. return self;},
  5635. args: [],
  5636. source: unescape('printNl%0A%09%3Cconsole.log%28self%29%3E'),
  5637. messageSends: [],
  5638. referencedClasses: []
  5639. }),
  5640. smalltalk.String);
  5641. smalltalk.addMethod(
  5642. unescape('_isString'),
  5643. smalltalk.method({
  5644. selector: unescape('isString'),
  5645. category: 'testing',
  5646. fn: function (){
  5647. var self=this;
  5648. return true;
  5649. return self;},
  5650. args: [],
  5651. source: unescape('isString%0A%20%20%20%20%09%5Etrue'),
  5652. messageSends: [],
  5653. referencedClasses: []
  5654. }),
  5655. smalltalk.String);
  5656. smalltalk.addMethod(
  5657. unescape('__gt'),
  5658. smalltalk.method({
  5659. selector: unescape('%3E'),
  5660. category: 'comparing',
  5661. fn: function (aString){
  5662. var self=this;
  5663. return String(self) > aString;
  5664. return self;},
  5665. args: ["aString"],
  5666. source: unescape('%3E%20aString%0A%09%3Creturn%20String%28self%29%20%3E%3E%20aString%3E'),
  5667. messageSends: [],
  5668. referencedClasses: []
  5669. }),
  5670. smalltalk.String);
  5671. smalltalk.addMethod(
  5672. unescape('__lt'),
  5673. smalltalk.method({
  5674. selector: unescape('%3C'),
  5675. category: 'comparing',
  5676. fn: function (aString){
  5677. var self=this;
  5678. return String(self) < aString;
  5679. return self;},
  5680. args: ["aString"],
  5681. source: unescape('%3C%20aString%0A%09%3Creturn%20String%28self%29%20%3C%20aString%3E'),
  5682. messageSends: [],
  5683. referencedClasses: []
  5684. }),
  5685. smalltalk.String);
  5686. smalltalk.addMethod(
  5687. unescape('__gt_eq'),
  5688. smalltalk.method({
  5689. selector: unescape('%3E%3D'),
  5690. category: 'comparing',
  5691. fn: function (aString){
  5692. var self=this;
  5693. return String(self) >= aString;
  5694. return self;},
  5695. args: ["aString"],
  5696. source: unescape('%3E%3D%20aString%0A%09%3Creturn%20String%28self%29%20%3E%3E%3D%20aString%3E'),
  5697. messageSends: [],
  5698. referencedClasses: []
  5699. }),
  5700. smalltalk.String);
  5701. smalltalk.addMethod(
  5702. unescape('__lt_eq'),
  5703. smalltalk.method({
  5704. selector: unescape('%3C%3D'),
  5705. category: 'comparing',
  5706. fn: function (aString){
  5707. var self=this;
  5708. return String(self) <= aString;
  5709. return self;},
  5710. args: ["aString"],
  5711. source: unescape('%3C%3D%20aString%0A%09%3Creturn%20String%28self%29%20%3C%3D%20aString%3E'),
  5712. messageSends: [],
  5713. referencedClasses: []
  5714. }),
  5715. smalltalk.String);
  5716. smalltalk.addMethod(
  5717. unescape('_remove_'),
  5718. smalltalk.method({
  5719. selector: unescape('remove%3A'),
  5720. category: 'adding',
  5721. fn: function (anObject){
  5722. var self=this;
  5723. smalltalk.send(self, "_errorReadOnly", []);
  5724. return self;},
  5725. args: ["anObject"],
  5726. source: unescape('remove%3A%20anObject%0A%09self%20errorReadOnly'),
  5727. messageSends: ["errorReadOnly"],
  5728. referencedClasses: []
  5729. }),
  5730. smalltalk.String);
  5731. smalltalk.addMethod(
  5732. unescape('_asJSONObject'),
  5733. smalltalk.method({
  5734. selector: unescape('asJSONObject'),
  5735. category: 'converting',
  5736. fn: function (){
  5737. var self=this;
  5738. return self;
  5739. return self;},
  5740. args: [],
  5741. source: unescape('asJSONObject%0A%09%5Eself'),
  5742. messageSends: [],
  5743. referencedClasses: []
  5744. }),
  5745. smalltalk.String);
  5746. smalltalk.addMethod(
  5747. unescape('_trimLeft_'),
  5748. smalltalk.method({
  5749. selector: unescape('trimLeft%3A'),
  5750. category: 'regular expressions',
  5751. fn: function (separators){
  5752. var self=this;
  5753. return smalltalk.send(self, "_replaceRegexp_with_", [smalltalk.send((smalltalk.RegularExpression || RegularExpression), "_fromString_flag_", [smalltalk.send(smalltalk.send(unescape("%5E%5B"), "__comma", [separators]), "__comma", [unescape("%5D+")]), "g"]), ""]);
  5754. return self;},
  5755. args: ["separators"],
  5756. source: unescape('trimLeft%3A%20separators%0A%0A%20%20%20%20%09%5Eself%20replaceRegexp%3A%20%28RegularExpression%20fromString%3A%20%27%5E%5B%27%2C%20separators%2C%20%27%5D+%27%20flag%3A%20%27g%27%29%20with%3A%20%27%27'),
  5757. messageSends: ["replaceRegexp:with:", "fromString:flag:", unescape("%2C")],
  5758. referencedClasses: [smalltalk.RegularExpression]
  5759. }),
  5760. smalltalk.String);
  5761. smalltalk.addMethod(
  5762. unescape('_trimRight_'),
  5763. smalltalk.method({
  5764. selector: unescape('trimRight%3A'),
  5765. category: 'regular expressions',
  5766. fn: function (separators){
  5767. var self=this;
  5768. return smalltalk.send(self, "_replaceRegexp_with_", [smalltalk.send((smalltalk.RegularExpression || RegularExpression), "_fromString_flag_", [smalltalk.send(smalltalk.send(unescape("%5B"), "__comma", [separators]), "__comma", [unescape("%5D+%24")]), "g"]), ""]);
  5769. return self;},
  5770. args: ["separators"],
  5771. source: unescape('trimRight%3A%20separators%0A%0A%20%20%20%20%09%5Eself%20replaceRegexp%3A%20%28RegularExpression%20fromString%3A%20%27%5B%27%2C%20separators%2C%20%27%5D+%24%27%20flag%3A%20%27g%27%29%20with%3A%20%27%27'),
  5772. messageSends: ["replaceRegexp:with:", "fromString:flag:", unescape("%2C")],
  5773. referencedClasses: [smalltalk.RegularExpression]
  5774. }),
  5775. smalltalk.String);
  5776. smalltalk.addMethod(
  5777. unescape('_trimLeft'),
  5778. smalltalk.method({
  5779. selector: unescape('trimLeft'),
  5780. category: 'regular expressions',
  5781. fn: function (){
  5782. var self=this;
  5783. return smalltalk.send(self, "_trimLeft_", [unescape("%5Cs")]);
  5784. return self;},
  5785. args: [],
  5786. source: unescape('trimLeft%0A%09%5Eself%20trimLeft%3A%20%27%5Cs%27'),
  5787. messageSends: ["trimLeft:"],
  5788. referencedClasses: []
  5789. }),
  5790. smalltalk.String);
  5791. smalltalk.addMethod(
  5792. unescape('_trimRight'),
  5793. smalltalk.method({
  5794. selector: unescape('trimRight'),
  5795. category: 'regular expressions',
  5796. fn: function (){
  5797. var self=this;
  5798. return smalltalk.send(self, "_trimRight_", [unescape("%5Cs")]);
  5799. return self;},
  5800. args: [],
  5801. source: unescape('trimRight%0A%09%5Eself%20trimRight%3A%20%27%5Cs%27'),
  5802. messageSends: ["trimRight:"],
  5803. referencedClasses: []
  5804. }),
  5805. smalltalk.String);
  5806. smalltalk.addMethod(
  5807. unescape('_trimBoth'),
  5808. smalltalk.method({
  5809. selector: unescape('trimBoth'),
  5810. category: 'regular expressions',
  5811. fn: function (){
  5812. var self=this;
  5813. return smalltalk.send(self, "_trimBoth_", [unescape("%5Cs")]);
  5814. return self;},
  5815. args: [],
  5816. source: unescape('trimBoth%0A%09%5Eself%20trimBoth%3A%20%27%5Cs%27'),
  5817. messageSends: ["trimBoth:"],
  5818. referencedClasses: []
  5819. }),
  5820. smalltalk.String);
  5821. smalltalk.addMethod(
  5822. unescape('_trimBoth_'),
  5823. smalltalk.method({
  5824. selector: unescape('trimBoth%3A'),
  5825. category: 'regular expressions',
  5826. fn: function (separators){
  5827. var self=this;
  5828. return smalltalk.send(smalltalk.send(self, "_trimLeft_", [separators]), "_trimRight_", [separators]);
  5829. return self;},
  5830. args: ["separators"],
  5831. source: unescape('trimBoth%3A%20separators%0A%0A%20%20%20%20%09%5E%28self%20trimLeft%3A%20separators%29%20trimRight%3A%20separators'),
  5832. messageSends: ["trimRight:", "trimLeft:"],
  5833. referencedClasses: []
  5834. }),
  5835. smalltalk.String);
  5836. smalltalk.addMethod(
  5837. unescape('_asLowercase'),
  5838. smalltalk.method({
  5839. selector: unescape('asLowercase'),
  5840. category: 'converting',
  5841. fn: function (){
  5842. var self=this;
  5843. return self.toLowerCase();
  5844. return self;},
  5845. args: [],
  5846. source: unescape('asLowercase%0A%09%3Creturn%20self.toLowerCase%28%29%3E'),
  5847. messageSends: [],
  5848. referencedClasses: []
  5849. }),
  5850. smalltalk.String);
  5851. smalltalk.addMethod(
  5852. unescape('_asUppercase'),
  5853. smalltalk.method({
  5854. selector: unescape('asUppercase'),
  5855. category: 'converting',
  5856. fn: function (){
  5857. var self=this;
  5858. return self.toUpperCase();
  5859. return self;},
  5860. args: [],
  5861. source: unescape('asUppercase%0A%09%3Creturn%20self.toUpperCase%28%29%3E'),
  5862. messageSends: [],
  5863. referencedClasses: []
  5864. }),
  5865. smalltalk.String);
  5866. smalltalk.addMethod(
  5867. unescape('_join_'),
  5868. smalltalk.method({
  5869. selector: unescape('join%3A'),
  5870. category: 'split join',
  5871. fn: function (aCollection){
  5872. var self=this;
  5873. return smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(stream){return smalltalk.send(aCollection, "_do_separatedBy_", [(function(each){return smalltalk.send(stream, "_nextPutAll_", [smalltalk.send(each, "_asString", [])]);}), (function(){return smalltalk.send(stream, "_nextPutAll_", [self]);})]);})]);
  5874. return self;},
  5875. args: ["aCollection"],
  5876. source: unescape('join%3A%20aCollection%20%0A%09%5E%20String%0A%09%09streamContents%3A%20%5B%3Astream%20%7C%20aCollection%0A%09%09%09%09do%3A%20%5B%3Aeach%20%7C%20stream%20nextPutAll%3A%20each%20asString%5D%20%0A%09%09%09%09separatedBy%3A%20%5Bstream%20nextPutAll%3A%20self%5D%5D'),
  5877. messageSends: ["streamContents:", "do:separatedBy:", "nextPutAll:", "asString"],
  5878. referencedClasses: [smalltalk.String]
  5879. }),
  5880. smalltalk.String);
  5881. smalltalk.addMethod(
  5882. unescape('_includesSubString_'),
  5883. smalltalk.method({
  5884. selector: unescape('includesSubString%3A'),
  5885. category: 'testing',
  5886. fn: function (subString){
  5887. var self=this;
  5888. return self.indexOf(subString) != -1 ;
  5889. return self;},
  5890. args: ["subString"],
  5891. source: unescape('includesSubString%3A%20subString%0A%09%3C%20return%20self.indexOf%28subString%29%20%21%3D%20-1%20%3E'),
  5892. messageSends: [],
  5893. referencedClasses: []
  5894. }),
  5895. smalltalk.String);
  5896. smalltalk.addMethod(
  5897. unescape('_asciiValue'),
  5898. smalltalk.method({
  5899. selector: unescape('asciiValue'),
  5900. category: 'accessing',
  5901. fn: function (){
  5902. var self=this;
  5903. return self.charCodeAt(0);;
  5904. return self;},
  5905. args: [],
  5906. source: unescape('asciiValue%0A%09%3Creturn%20self.charCodeAt%280%29%3B%3E'),
  5907. messageSends: [],
  5908. referencedClasses: []
  5909. }),
  5910. smalltalk.String);
  5911. smalltalk.addMethod(
  5912. unescape('_lineIndicesDo_'),
  5913. smalltalk.method({
  5914. selector: unescape('lineIndicesDo%3A'),
  5915. category: 'split join',
  5916. fn: function (aBlock){
  5917. var self=this;
  5918. try{var cr=nil;
  5919. var lf=nil;
  5920. var start=nil;
  5921. var sz=nil;
  5922. var nextLF=nil;
  5923. var nextCR=nil;
  5924. start=(1);
  5925. sz=smalltalk.send(self, "_size", []);
  5926. cr=smalltalk.send((smalltalk.String || String), "_cr", []);
  5927. nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, (1)]);
  5928. lf=smalltalk.send((smalltalk.String || String), "_lf", []);
  5929. nextLF=smalltalk.send(self, "_indexOf_startingAt_", [lf, (1)]);
  5930. (function(){while((function(){return ((($receiver = start).klass === smalltalk.Number) ? $receiver <=sz : smalltalk.send($receiver, "__lt_eq", [sz]));})()) {(function(){((($receiver = smalltalk.send(smalltalk.send(nextLF, "__eq", [(0)]), "_and_", [(function(){return smalltalk.send(nextCR, "__eq", [(0)]);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(aBlock, "_value_value_value_", [start, sz, sz]);return (function(){throw({name: 'stReturn', selector: '_lineIndicesDo_', fn: function(){return self}})})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(aBlock, "_value_value_value_", [start, sz, sz]);return (function(){throw({name: 'stReturn', selector: '_lineIndicesDo_', fn: function(){return self}})})();})]));return ((($receiver = smalltalk.send(smalltalk.send(nextCR, "__eq", [(0)]), "_or_", [(function(){return smalltalk.send((0) < nextLF, "_and_", [(function(){return ((($receiver = nextLF).klass === smalltalk.Number) ? $receiver <nextCR : smalltalk.send($receiver, "__lt", [nextCR]));})]);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextLF).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextLF]);start=(1) + nextLF;return nextLF=smalltalk.send(self, "_indexOf_startingAt_", [lf, start]);})() : (function(){return ((($receiver = smalltalk.send((1) + nextCR, "__eq", [nextLF])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextCR).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextLF]);start=(1) + nextLF;nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, start]);return nextLF=smalltalk.send(self, "_indexOf_startingAt_", [lf, start]);})() : (function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextCR).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextCR]);start=(1) + nextCR;return nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, start]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextCR).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextLF]);start=(1) + nextLF;nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, start]);return nextLF=smalltalk.send(self, "_indexOf_startingAt_", [lf, start]);}), (function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextCR).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextCR]);start=(1) + nextCR;return nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, start]);})]));})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextLF).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextLF]);start=(1) + nextLF;return nextLF=smalltalk.send(self, "_indexOf_startingAt_", [lf, start]);}), (function(){return ((($receiver = smalltalk.send((1) + nextCR, "__eq", [nextLF])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextCR).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextLF]);start=(1) + nextLF;nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, start]);return nextLF=smalltalk.send(self, "_indexOf_startingAt_", [lf, start]);})() : (function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextCR).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextCR]);start=(1) + nextCR;return nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, start]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextCR).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextLF]);start=(1) + nextLF;nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, start]);return nextLF=smalltalk.send(self, "_indexOf_startingAt_", [lf, start]);}), (function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextCR).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextCR]);start=(1) + nextCR;return nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, start]);})]));})]));})()}})();
  5931. return self;
  5932. } catch(e) {if(e.name === 'stReturn' && e.selector === '_lineIndicesDo_'){return e.fn()} throw(e)}},
  5933. args: ["aBlock"],
  5934. source: unescape('lineIndicesDo%3A%20aBlock%0A%09%22execute%20aBlock%20with%203%20arguments%20for%20each%20line%3A%0A%09-%20start%20index%20of%20line%0A%09-%20end%20index%20of%20line%20without%20line%20delimiter%0A%09-%20end%20index%20of%20line%20including%20line%20delimiter%28s%29%20CR%2C%20LF%20or%20CRLF%22%0A%09%0A%09%7C%20cr%20lf%20start%20sz%20nextLF%20nextCR%20%7C%0A%09start%20%3A%3D%201.%0A%09sz%20%3A%3D%20self%20size.%0A%09cr%20%3A%3D%20String%20cr.%0A%09nextCR%20%3A%3D%20self%20indexOf%3A%20cr%20startingAt%3A%201.%0A%09lf%20%3A%3D%20String%20lf.%0A%09nextLF%20%3A%3D%20self%20indexOf%3A%20lf%20startingAt%3A%201.%0A%09%5B%20start%20%3C%3D%20sz%20%5D%20whileTrue%3A%20%5B%0A%09%09%28nextLF%20%3D%200%20and%3A%20%5B%20nextCR%20%3D%200%20%5D%29%0A%09%09%09ifTrue%3A%20%5B%20%22No%20more%20CR%2C%20nor%20LF%2C%20the%20string%20is%20over%22%0A%09%09%09%09%09aBlock%20value%3A%20start%20value%3A%20sz%20value%3A%20sz.%0A%09%09%09%09%09%5Eself%20%5D.%0A%09%09%28nextCR%20%3D%200%20or%3A%20%5B%200%20%3C%20nextLF%20and%3A%20%5B%20nextLF%20%3C%20nextCR%20%5D%20%5D%29%0A%09%09%09ifTrue%3A%20%5B%20%22Found%20a%20LF%22%0A%09%09%09%09%09aBlock%20value%3A%20start%20value%3A%20nextLF%20-%201%20value%3A%20nextLF.%0A%09%09%09%09%09start%20%3A%3D%201%20+%20nextLF.%0A%09%09%09%09%09nextLF%20%3A%3D%20self%20indexOf%3A%20lf%20startingAt%3A%20start%20%5D%0A%09%09%09ifFalse%3A%20%5B%201%20+%20nextCR%20%3D%20nextLF%0A%09%09%09%09ifTrue%3A%20%5B%20%22Found%20a%20CR-LF%20pair%22%0A%09%09%09%09%09aBlock%20value%3A%20start%20value%3A%20nextCR%20-%201%20value%3A%20nextLF.%0A%09%09%09%09%09start%20%3A%3D%201%20+%20nextLF.%0A%09%09%09%09%09nextCR%20%3A%3D%20self%20indexOf%3A%20cr%20startingAt%3A%20start.%0A%09%09%09%09%09nextLF%20%3A%3D%20self%20indexOf%3A%20lf%20startingAt%3A%20start%20%5D%0A%09%09%09%09ifFalse%3A%20%5B%20%22Found%20a%20CR%22%0A%09%09%09%09%09aBlock%20value%3A%20start%20value%3A%20nextCR%20-%201%20value%3A%20nextCR.%0A%09%09%09%09%09start%20%3A%3D%201%20+%20nextCR.%0A%09%09%09%09%09nextCR%20%3A%3D%20self%20indexOf%3A%20cr%20startingAt%3A%20start%20%5D%5D%5D'),
  5935. messageSends: ["size", "cr", "indexOf:startingAt:", "lf", "whileTrue:", unescape("%3C%3D"), "ifTrue:", "and:", unescape("%3D"), "value:value:value:", "ifTrue:ifFalse:", "or:", unescape("%3C"), unescape("-"), unescape("+")],
  5936. referencedClasses: [smalltalk.String]
  5937. }),
  5938. smalltalk.String);
  5939. smalltalk.addMethod(
  5940. unescape('_linesDo_'),
  5941. smalltalk.method({
  5942. selector: unescape('linesDo%3A'),
  5943. category: 'split join',
  5944. fn: function (aBlock){
  5945. var self=this;
  5946. smalltalk.send(self, "_lineIndicesDo_", [(function(start, endWithoutDelimiters, end){return smalltalk.send(aBlock, "_value_", [smalltalk.send(self, "_copyFrom_to_", [start, endWithoutDelimiters])]);})]);
  5947. return self;},
  5948. args: ["aBlock"],
  5949. source: unescape('linesDo%3A%20aBlock%0A%09%22Execute%20aBlock%20with%20each%20line%20in%20this%20string.%20The%20terminating%20line%0A%09delimiters%20CR%2C%20LF%20or%20CRLF%20pairs%20are%20not%20included%20in%20what%20is%20passed%20to%20aBlock%22%0A%0A%09self%20lineIndicesDo%3A%20%5B%3Astart%20%3AendWithoutDelimiters%20%3Aend%20%7C%0A%09%09aBlock%20value%3A%20%28self%20copyFrom%3A%20start%20to%3A%20endWithoutDelimiters%29%5D'),
  5950. messageSends: ["lineIndicesDo:", "value:", "copyFrom:to:"],
  5951. referencedClasses: []
  5952. }),
  5953. smalltalk.String);
  5954. smalltalk.addMethod(
  5955. unescape('_lines'),
  5956. smalltalk.method({
  5957. selector: unescape('lines'),
  5958. category: 'split join',
  5959. fn: function (){
  5960. var self=this;
  5961. var lines=nil;
  5962. lines=smalltalk.send((smalltalk.Array || Array), "_new", []);
  5963. smalltalk.send(self, "_linesDo_", [(function(aLine){return smalltalk.send(lines, "_add_", [aLine]);})]);
  5964. return lines;
  5965. return self;},
  5966. args: [],
  5967. source: unescape('lines%0A%09%22Answer%20an%20array%20of%20lines%20composing%20this%20receiver%20without%20the%20line%20ending%20delimiters.%22%0A%0A%09%7C%20lines%20%7C%0A%09lines%20%3A%3D%20Array%20new.%0A%09self%20linesDo%3A%20%5B%3AaLine%20%7C%20lines%20add%3A%20aLine%5D.%0A%09%5Elines'),
  5968. messageSends: ["new", "linesDo:", "add:"],
  5969. referencedClasses: [smalltalk.Array]
  5970. }),
  5971. smalltalk.String);
  5972. smalltalk.addMethod(
  5973. unescape('_lineNumber_'),
  5974. smalltalk.method({
  5975. selector: unescape('lineNumber%3A'),
  5976. category: 'split join',
  5977. fn: function (anIndex){
  5978. var self=this;
  5979. try{var lineCount=nil;
  5980. lineCount=(0);
  5981. smalltalk.send(self, "_lineIndicesDo_", [(function(start, endWithoutDelimiters, end){return ((($receiver = smalltalk.send(lineCount=((($receiver = lineCount).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)])), "__eq", [anIndex])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '_lineNumber_', fn: function(){return smalltalk.send(self, "_copyFrom_to_", [start, endWithoutDelimiters])}})})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (function(){throw({name: 'stReturn', selector: '_lineNumber_', fn: function(){return smalltalk.send(self, "_copyFrom_to_", [start, endWithoutDelimiters])}})})();})]));})]);
  5982. (function(){throw({name: 'stReturn', selector: '_lineNumber_', fn: function(){return nil}})})();
  5983. return self;
  5984. } catch(e) {if(e.name === 'stReturn' && e.selector === '_lineNumber_'){return e.fn()} throw(e)}},
  5985. args: ["anIndex"],
  5986. source: unescape('lineNumber%3A%20anIndex%0A%09%22Answer%20a%20string%20containing%20the%20characters%20in%20the%20given%20line%20number.%22%0A%0A%09%7C%20lineCount%20%7C%0A%09lineCount%20%3A%3D%200.%0A%09self%20lineIndicesDo%3A%20%5B%3Astart%20%3AendWithoutDelimiters%20%3Aend%20%7C%0A%09%09%28lineCount%20%3A%3D%20lineCount%20+%201%29%20%3D%20anIndex%20ifTrue%3A%20%5B%5Eself%20copyFrom%3A%20start%20to%3A%20endWithoutDelimiters%5D%5D.%0A%09%5Enil'),
  5987. messageSends: ["lineIndicesDo:", "ifTrue:", unescape("%3D"), unescape("+"), "copyFrom:to:"],
  5988. referencedClasses: []
  5989. }),
  5990. smalltalk.String);
  5991. smalltalk.addMethod(
  5992. unescape('_reversed'),
  5993. smalltalk.method({
  5994. selector: unescape('reversed'),
  5995. category: 'converting',
  5996. fn: function (){
  5997. var self=this;
  5998. return self.split("").reverse().join("");
  5999. return self;},
  6000. args: [],
  6001. source: unescape('reversed%0A%09%3Creturn%20self.split%28%22%22%29.reverse%28%29.join%28%22%22%29%3E'),
  6002. messageSends: [],
  6003. referencedClasses: []
  6004. }),
  6005. smalltalk.String);
  6006. smalltalk.addMethod(
  6007. unescape('__eq_eq'),
  6008. smalltalk.method({
  6009. selector: unescape('%3D%3D'),
  6010. category: 'comparing',
  6011. fn: function (aString){
  6012. var self=this;
  6013. try{((($receiver = smalltalk.send(smalltalk.send(aString, "_class", []), "__eq", [smalltalk.send(self, "_class", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq_eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq_eq', fn: function(){return false}})})();})]));
  6014. return String(self) === String(aString);
  6015. return self;
  6016. } catch(e) {if(e.name === 'stReturn' && e.selector === '__eq_eq'){return e.fn()} throw(e)}},
  6017. args: ["aString"],
  6018. source: unescape('%3D%3D%20aString%0A%09aString%20class%20%3D%20self%20class%20ifFalse%3A%20%5B%5Efalse%5D.%0A%09%3Creturn%20String%28self%29%20%3D%3D%3D%20String%28aString%29%3E'),
  6019. messageSends: ["ifFalse:", unescape("%3D"), "class"],
  6020. referencedClasses: []
  6021. }),
  6022. smalltalk.String);
  6023. smalltalk.addMethod(
  6024. unescape('_asJavaScriptSelector'),
  6025. smalltalk.method({
  6026. selector: unescape('asJavaScriptSelector'),
  6027. category: 'converting',
  6028. fn: function (){
  6029. var self=this;
  6030. return smalltalk.send(smalltalk.send(smalltalk.send(self, "_asSelector", []), "_replace_with_", [unescape("%5E_"), ""]), "_replace_with_", [unescape("_.*"), ""]);
  6031. return self;},
  6032. args: [],
  6033. source: unescape('asJavaScriptSelector%0A%09%5E%28self%20asSelector%20replace%3A%20%27%5E_%27%20with%3A%20%27%27%29%20replace%3A%20%27_.*%27%20with%3A%20%27%27.'),
  6034. messageSends: ["replace:with:", "asSelector"],
  6035. referencedClasses: []
  6036. }),
  6037. smalltalk.String);
  6038. smalltalk.addMethod(
  6039. unescape('_streamClass'),
  6040. smalltalk.method({
  6041. selector: unescape('streamClass'),
  6042. category: 'accessing',
  6043. fn: function (){
  6044. var self=this;
  6045. return (smalltalk.StringStream || StringStream);
  6046. return self;},
  6047. args: [],
  6048. source: unescape('streamClass%0A%09%20%20%20%20%5EStringStream'),
  6049. messageSends: [],
  6050. referencedClasses: [smalltalk.nil]
  6051. }),
  6052. smalltalk.String.klass);
  6053. smalltalk.addMethod(
  6054. unescape('_fromString_'),
  6055. smalltalk.method({
  6056. selector: unescape('fromString%3A'),
  6057. category: 'instance creation',
  6058. fn: function (aString){
  6059. var self=this;
  6060. return new self.fn(aString);
  6061. return self;},
  6062. args: ["aString"],
  6063. source: unescape('fromString%3A%20aString%0A%09%20%20%20%20%3Creturn%20new%20self.fn%28aString%29%3E'),
  6064. messageSends: [],
  6065. referencedClasses: []
  6066. }),
  6067. smalltalk.String.klass);
  6068. smalltalk.addMethod(
  6069. unescape('_cr'),
  6070. smalltalk.method({
  6071. selector: unescape('cr'),
  6072. category: 'accessing',
  6073. fn: function (){
  6074. var self=this;
  6075. return '\r';
  6076. return self;},
  6077. args: [],
  6078. source: unescape('cr%0A%09%3Creturn%20%27%5Cr%27%3E'),
  6079. messageSends: [],
  6080. referencedClasses: []
  6081. }),
  6082. smalltalk.String.klass);
  6083. smalltalk.addMethod(
  6084. unescape('_lf'),
  6085. smalltalk.method({
  6086. selector: unescape('lf'),
  6087. category: 'accessing',
  6088. fn: function (){
  6089. var self=this;
  6090. return '\n';
  6091. return self;},
  6092. args: [],
  6093. source: unescape('lf%0A%09%3Creturn%20%27%5Cn%27%3E'),
  6094. messageSends: [],
  6095. referencedClasses: []
  6096. }),
  6097. smalltalk.String.klass);
  6098. smalltalk.addMethod(
  6099. unescape('_space'),
  6100. smalltalk.method({
  6101. selector: unescape('space'),
  6102. category: 'accessing',
  6103. fn: function (){
  6104. var self=this;
  6105. return ' ';
  6106. return self;},
  6107. args: [],
  6108. source: unescape('space%0A%09%3Creturn%20%27%20%27%3E'),
  6109. messageSends: [],
  6110. referencedClasses: []
  6111. }),
  6112. smalltalk.String.klass);
  6113. smalltalk.addMethod(
  6114. unescape('_tab'),
  6115. smalltalk.method({
  6116. selector: unescape('tab'),
  6117. category: 'accessing',
  6118. fn: function (){
  6119. var self=this;
  6120. return '\t';
  6121. return self;},
  6122. args: [],
  6123. source: unescape('tab%0A%09%3Creturn%20%27%5Ct%27%3E'),
  6124. messageSends: [],
  6125. referencedClasses: []
  6126. }),
  6127. smalltalk.String.klass);
  6128. smalltalk.addMethod(
  6129. unescape('_crlf'),
  6130. smalltalk.method({
  6131. selector: unescape('crlf'),
  6132. category: 'accessing',
  6133. fn: function (){
  6134. var self=this;
  6135. return '\r\n';
  6136. return self;},
  6137. args: [],
  6138. source: unescape('crlf%0A%09%3Creturn%20%27%5Cr%5Cn%27%3E'),
  6139. messageSends: [],
  6140. referencedClasses: []
  6141. }),
  6142. smalltalk.String.klass);
  6143. smalltalk.addMethod(
  6144. unescape('_streamContents_'),
  6145. smalltalk.method({
  6146. selector: unescape('streamContents%3A'),
  6147. category: 'instance creation',
  6148. fn: function (blockWithArg){
  6149. var self=this;
  6150. var stream=nil;
  6151. stream=smalltalk.send(smalltalk.send(self, "_streamClass", []), "_on_", [smalltalk.send((smalltalk.String || String), "_new", [])]);
  6152. smalltalk.send(blockWithArg, "_value_", [stream]);
  6153. return smalltalk.send(stream, "_contents", []);
  6154. return self;},
  6155. args: ["blockWithArg"],
  6156. source: unescape('streamContents%3A%20blockWithArg%0A%09%7Cstream%7C%0A%09stream%20%3A%3D%20%28self%20streamClass%20on%3A%20String%20new%29.%0A%09blockWithArg%20value%3A%20stream.%0A%09%5E%20stream%20contents'),
  6157. messageSends: ["on:", "streamClass", "new", "value:", "contents"],
  6158. referencedClasses: [smalltalk.String]
  6159. }),
  6160. smalltalk.String.klass);
  6161. smalltalk.addMethod(
  6162. unescape('_value_'),
  6163. smalltalk.method({
  6164. selector: unescape('value%3A'),
  6165. category: 'instance creation',
  6166. fn: function (aUTFCharCode){
  6167. var self=this;
  6168. return String.fromCharCode(aUTFCharCode);;
  6169. return self;},
  6170. args: ["aUTFCharCode"],
  6171. source: unescape('value%3A%20aUTFCharCode%0A%0A%09%3Creturn%20String.fromCharCode%28aUTFCharCode%29%3B%3E'),
  6172. messageSends: [],
  6173. referencedClasses: []
  6174. }),
  6175. smalltalk.String.klass);
  6176. smalltalk.addClass('Array', smalltalk.SequenceableCollection, [], 'Kernel');
  6177. smalltalk.addMethod(
  6178. unescape('_size'),
  6179. smalltalk.method({
  6180. selector: unescape('size'),
  6181. category: 'accessing',
  6182. fn: function (){
  6183. var self=this;
  6184. return self.length;
  6185. return self;},
  6186. args: [],
  6187. source: unescape('size%0A%09%3Creturn%20self.length%3E'),
  6188. messageSends: [],
  6189. referencedClasses: []
  6190. }),
  6191. smalltalk.Array);
  6192. smalltalk.addMethod(
  6193. unescape('_at_put_'),
  6194. smalltalk.method({
  6195. selector: unescape('at%3Aput%3A'),
  6196. category: 'accessing',
  6197. fn: function (anIndex, anObject){
  6198. var self=this;
  6199. return self[anIndex - 1] = anObject;
  6200. return self;},
  6201. args: ["anIndex", "anObject"],
  6202. source: unescape('at%3A%20anIndex%20put%3A%20anObject%0A%09%3Creturn%20self%5BanIndex%20-%201%5D%20%3D%20anObject%3E'),
  6203. messageSends: [],
  6204. referencedClasses: []
  6205. }),
  6206. smalltalk.Array);
  6207. smalltalk.addMethod(
  6208. unescape('_at_ifAbsent_'),
  6209. smalltalk.method({
  6210. selector: unescape('at%3AifAbsent%3A'),
  6211. category: 'accessing',
  6212. fn: function (anIndex, aBlock){
  6213. var self=this;
  6214. var value = self[anIndex - 1];
  6215. if(value === undefined) {
  6216. return aBlock();
  6217. } else {
  6218. return value;
  6219. }
  6220. ;
  6221. return self;},
  6222. args: ["anIndex", "aBlock"],
  6223. source: unescape('at%3A%20anIndex%20ifAbsent%3A%20aBlock%0A%09%3C%0A%09%20%20%20%20var%20value%20%3D%20self%5BanIndex%20-%201%5D%3B%0A%09%20%20%20%20if%28value%20%3D%3D%3D%20undefined%29%20%7B%0A%09%09return%20aBlock%28%29%3B%0A%09%20%20%20%20%7D%20else%20%7B%0A%09%09return%20value%3B%0A%09%20%20%20%20%7D%0A%09%3E'),
  6224. messageSends: [],
  6225. referencedClasses: []
  6226. }),
  6227. smalltalk.Array);
  6228. smalltalk.addMethod(
  6229. unescape('_add_'),
  6230. smalltalk.method({
  6231. selector: unescape('add%3A'),
  6232. category: 'adding/removing',
  6233. fn: function (anObject){
  6234. var self=this;
  6235. self.push(anObject); return anObject;;
  6236. return self;},
  6237. args: ["anObject"],
  6238. source: unescape('add%3A%20anObject%0A%09%3Cself.push%28anObject%29%3B%20return%20anObject%3B%3E'),
  6239. messageSends: [],
  6240. referencedClasses: []
  6241. }),
  6242. smalltalk.Array);
  6243. smalltalk.addMethod(
  6244. unescape('_shallowCopy'),
  6245. smalltalk.method({
  6246. selector: unescape('shallowCopy'),
  6247. category: 'copying',
  6248. fn: function (){
  6249. var self=this;
  6250. var newCollection=nil;
  6251. newCollection=smalltalk.send(smalltalk.send(self, "_class", []), "_new", []);
  6252. smalltalk.send(self, "_do_", [(function(each){return smalltalk.send(newCollection, "_add_", [each]);})]);
  6253. return newCollection;
  6254. return self;},
  6255. args: [],
  6256. source: unescape('shallowCopy%0A%09%7C%20newCollection%20%7C%0A%09newCollection%20%3A%3D%20self%20class%20new.%0A%09self%20do%3A%20%5B%3Aeach%20%7C%20newCollection%20add%3A%20each%5D.%0A%09%5EnewCollection'),
  6257. messageSends: ["new", "class", "do:", "add:"],
  6258. referencedClasses: []
  6259. }),
  6260. smalltalk.Array);
  6261. smalltalk.addMethod(
  6262. unescape('_deepCopy'),
  6263. smalltalk.method({
  6264. selector: unescape('deepCopy'),
  6265. category: 'copying',
  6266. fn: function (){
  6267. var self=this;
  6268. var newCollection=nil;
  6269. newCollection=smalltalk.send(smalltalk.send(self, "_class", []), "_new", []);
  6270. smalltalk.send(self, "_do_", [(function(each){return smalltalk.send(newCollection, "_add_", [smalltalk.send(each, "_deepCopy", [])]);})]);
  6271. return newCollection;
  6272. return self;},
  6273. args: [],
  6274. source: unescape('deepCopy%0A%09%7C%20newCollection%20%7C%0A%09newCollection%20%3A%3D%20self%20class%20new.%0A%09self%20do%3A%20%5B%3Aeach%20%7C%20newCollection%20add%3A%20each%20deepCopy%5D.%0A%09%5EnewCollection'),
  6275. messageSends: ["new", "class", "do:", "add:", "deepCopy"],
  6276. referencedClasses: []
  6277. }),
  6278. smalltalk.Array);
  6279. smalltalk.addMethod(
  6280. unescape('_copyFrom_to_'),
  6281. smalltalk.method({
  6282. selector: unescape('copyFrom%3Ato%3A'),
  6283. category: 'copying',
  6284. fn: function (anIndex, anotherIndex){
  6285. var self=this;
  6286. var array=nil;
  6287. array=smalltalk.send(smalltalk.send(self, "_class", []), "_new", []);
  6288. smalltalk.send(anIndex, "_to_do_", [anotherIndex, (function(each){return smalltalk.send(array, "_add_", [smalltalk.send(self, "_at_", [each])]);})]);
  6289. return array;
  6290. return self;},
  6291. args: ["anIndex", "anotherIndex"],
  6292. source: unescape('copyFrom%3A%20anIndex%20to%3A%20anotherIndex%0A%09%7C%20array%20%7C%0A%09array%20%3A%3D%20self%20class%20new.%0A%09anIndex%20to%3A%20anotherIndex%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20array%20add%3A%20%28self%20at%3A%20each%29%5D.%0A%09%5Earray'),
  6293. messageSends: ["new", "class", "to:do:", "add:", "at:"],
  6294. referencedClasses: []
  6295. }),
  6296. smalltalk.Array);
  6297. smalltalk.addMethod(
  6298. unescape('_join_'),
  6299. smalltalk.method({
  6300. selector: unescape('join%3A'),
  6301. category: 'enumerating',
  6302. fn: function (aString){
  6303. var self=this;
  6304. return self.join(aString);
  6305. return self;},
  6306. args: ["aString"],
  6307. source: unescape('join%3A%20aString%0A%09%3Creturn%20self.join%28aString%29%3E'),
  6308. messageSends: [],
  6309. referencedClasses: []
  6310. }),
  6311. smalltalk.Array);
  6312. smalltalk.addMethod(
  6313. unescape('_asJavascript'),
  6314. smalltalk.method({
  6315. selector: unescape('asJavascript'),
  6316. category: 'converting',
  6317. fn: function (){
  6318. var self=this;
  6319. return smalltalk.send(smalltalk.send(unescape("%5B"), "__comma", [smalltalk.send(smalltalk.send(self, "_collect_", [(function(each){return smalltalk.send(each, "_asJavascript", []);})]), "_join_", [unescape("%2C%20")])]), "__comma", [unescape("%5D")]);
  6320. return self;},
  6321. args: [],
  6322. source: unescape('asJavascript%0A%09%5E%27%5B%27%2C%20%28%28self%20collect%3A%20%5B%3Aeach%20%7C%20each%20asJavascript%5D%29%20join%3A%20%27%2C%20%27%29%2C%20%20%27%5D%27'),
  6323. messageSends: [unescape("%2C"), "join:", "collect:", "asJavascript"],
  6324. referencedClasses: []
  6325. }),
  6326. smalltalk.Array);
  6327. smalltalk.addMethod(
  6328. unescape('_sort'),
  6329. smalltalk.method({
  6330. selector: unescape('sort'),
  6331. category: 'enumerating',
  6332. fn: function (){
  6333. var self=this;
  6334. return smalltalk.send(self, "_basicPerform_", ["sort"]);
  6335. return self;},
  6336. args: [],
  6337. source: unescape('sort%0A%20%20%20%20%5Eself%20basicPerform%3A%20%27sort%27'),
  6338. messageSends: ["basicPerform:"],
  6339. referencedClasses: []
  6340. }),
  6341. smalltalk.Array);
  6342. smalltalk.addMethod(
  6343. unescape('_sort_'),
  6344. smalltalk.method({
  6345. selector: unescape('sort%3A'),
  6346. category: 'enumerating',
  6347. fn: function (aBlock){
  6348. var self=this;
  6349. return self.sort(function(a, b) {
  6350. if(aBlock(a,b)) {return -1} else {return 1}
  6351. })
  6352. ;
  6353. return self;},
  6354. args: ["aBlock"],
  6355. source: unescape('sort%3A%20aBlock%0A%09%3C%0A%09%09return%20self.sort%28function%28a%2C%20b%29%20%7B%0A%09%09%09if%28aBlock%28a%2Cb%29%29%20%7Breturn%20-1%7D%20else%20%7Breturn%201%7D%0A%09%09%7D%29%0A%09%3E'),
  6356. messageSends: [],
  6357. referencedClasses: []
  6358. }),
  6359. smalltalk.Array);
  6360. smalltalk.addMethod(
  6361. unescape('_remove_'),
  6362. smalltalk.method({
  6363. selector: unescape('remove%3A'),
  6364. category: 'adding/removing',
  6365. fn: function (anObject){
  6366. var self=this;
  6367. for(var i=0;i<self.length;i++) {
  6368. if(self[i] == anObject) {
  6369. self.splice(i,1);
  6370. break;
  6371. }
  6372. }
  6373. ;
  6374. return self;},
  6375. args: ["anObject"],
  6376. source: unescape('remove%3A%20anObject%0A%09%3C%0A%09%09for%28var%20i%3D0%3Bi%3Cself.length%3Bi++%29%20%7B%0A%09%09%09if%28self%5Bi%5D%20%3D%3D%20anObject%29%20%7B%0A%09%09%09%09self.splice%28i%2C1%29%3B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%3E'),
  6377. messageSends: [],
  6378. referencedClasses: []
  6379. }),
  6380. smalltalk.Array);
  6381. smalltalk.addMethod(
  6382. unescape('_sorted'),
  6383. smalltalk.method({
  6384. selector: unescape('sorted'),
  6385. category: 'enumerating',
  6386. fn: function (){
  6387. var self=this;
  6388. return smalltalk.send(smalltalk.send(self, "_copy", []), "_sort", []);
  6389. return self;},
  6390. args: [],
  6391. source: unescape('sorted%0A%09%5Eself%20copy%20sort'),
  6392. messageSends: ["sort", "copy"],
  6393. referencedClasses: []
  6394. }),
  6395. smalltalk.Array);
  6396. smalltalk.addMethod(
  6397. unescape('_sorted_'),
  6398. smalltalk.method({
  6399. selector: unescape('sorted%3A'),
  6400. category: 'enumerating',
  6401. fn: function (aBlock){
  6402. var self=this;
  6403. return smalltalk.send(smalltalk.send(self, "_copy", []), "_sort_", [aBlock]);
  6404. return self;},
  6405. args: ["aBlock"],
  6406. source: unescape('sorted%3A%20aBlock%0A%09%5Eself%20copy%20sort%3A%20aBlock'),
  6407. messageSends: ["sort:", "copy"],
  6408. referencedClasses: []
  6409. }),
  6410. smalltalk.Array);
  6411. smalltalk.addMethod(
  6412. unescape('_asJSONObject'),
  6413. smalltalk.method({
  6414. selector: unescape('asJSONObject'),
  6415. category: 'converting',
  6416. fn: function (){
  6417. var self=this;
  6418. return smalltalk.send(self, "_collect_", [(function(each){return smalltalk.send(each, "_asJSONObject", []);})]);
  6419. return self;},
  6420. args: [],
  6421. source: unescape('asJSONObject%0A%09%5Eself%20collect%3A%20%5B%3Aeach%20%7C%20each%20asJSONObject%5D'),
  6422. messageSends: ["collect:", "asJSONObject"],
  6423. referencedClasses: []
  6424. }),
  6425. smalltalk.Array);
  6426. smalltalk.addMethod(
  6427. unescape('_removeFrom_to_'),
  6428. smalltalk.method({
  6429. selector: unescape('removeFrom%3Ato%3A'),
  6430. category: 'adding/removing',
  6431. fn: function (aNumber, anotherNumber){
  6432. var self=this;
  6433. self.splice(aNumber - 1,anotherNumber - 1);
  6434. return self;},
  6435. args: ["aNumber", "anotherNumber"],
  6436. source: unescape('removeFrom%3A%20aNumber%20to%3A%20anotherNumber%0A%09%3Cself.splice%28aNumber%20-%201%2CanotherNumber%20-%201%29%3E'),
  6437. messageSends: [],
  6438. referencedClasses: []
  6439. }),
  6440. smalltalk.Array);
  6441. smalltalk.addMethod(
  6442. unescape('_printString'),
  6443. smalltalk.method({
  6444. selector: unescape('printString'),
  6445. category: 'enumerating',
  6446. fn: function (){
  6447. var self=this;
  6448. var str=nil;
  6449. str=smalltalk.send("", "_writeStream", []);
  6450. smalltalk.send(str, "_nextPutAll_", [smalltalk.send(smalltalk.send(self, "_printString", [], smalltalk.SequenceableCollection), "__comma", [unescape("%20%28")])]);
  6451. smalltalk.send(self, "_do_separatedBy_", [(function(each){return smalltalk.send(str, "_nextPutAll_", [smalltalk.send(each, "_printString", [])]);}), (function(){return smalltalk.send(str, "_nextPutAll_", [" "]);})]);
  6452. smalltalk.send(str, "_nextPutAll_", [unescape("%29")]);
  6453. return smalltalk.send(str, "_contents", []);
  6454. return self;},
  6455. args: [],
  6456. source: unescape('printString%0A%09%7C%20str%20%7C%0A%09str%20%3A%3D%20%27%27%20writeStream.%0A%09str%20nextPutAll%3A%20super%20printString%2C%20%27%20%28%27.%0A%09self%20%0A%09%09do%3A%20%5B%3Aeach%20%7C%20str%20nextPutAll%3A%20each%20printString%5D%0A%09%09separatedBy%3A%20%5Bstr%20nextPutAll%3A%20%27%20%27%5D.%0A%09str%20nextPutAll%3A%20%27%29%27.%0A%09%5Estr%20contents'),
  6457. messageSends: ["writeStream", "nextPutAll:", unescape("%2C"), "printString", "do:separatedBy:", "contents"],
  6458. referencedClasses: []
  6459. }),
  6460. smalltalk.Array);
  6461. smalltalk.addMethod(
  6462. unescape('_reversed'),
  6463. smalltalk.method({
  6464. selector: unescape('reversed'),
  6465. category: 'converting',
  6466. fn: function (){
  6467. var self=this;
  6468. return self._copy().reverse();
  6469. return self;},
  6470. args: [],
  6471. source: unescape('reversed%0A%09%3Creturn%20self._copy%28%29.reverse%28%29%3E'),
  6472. messageSends: [],
  6473. referencedClasses: []
  6474. }),
  6475. smalltalk.Array);
  6476. smalltalk.addMethod(
  6477. unescape('__eq'),
  6478. smalltalk.method({
  6479. selector: unescape('%3D'),
  6480. category: 'comparing',
  6481. fn: function (aCollection){
  6482. var self=this;
  6483. try{((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(self, "_class", []), "__eq", [smalltalk.send(aCollection, "_class", [])]), "_and_", [(function(){return smalltalk.send(smalltalk.send(self, "_size", []), "__eq", [smalltalk.send(aCollection, "_size", [])]);})])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})]));
  6484. smalltalk.send(self, "_withIndexDo_", [(function(each, i){return ((($receiver = smalltalk.send(smalltalk.send(aCollection, "_at_", [i]), "__eq", [each])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})]));})]);
  6485. (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return true}})})();
  6486. return self;
  6487. } catch(e) {if(e.name === 'stReturn' && e.selector === '__eq'){return e.fn()} throw(e)}},
  6488. args: ["aCollection"],
  6489. source: unescape('%3D%20aCollection%0A%09%28self%20class%20%3D%20aCollection%20class%20and%3A%20%5B%0A%20%20%20%20%20%20%20%20%09self%20size%20%3D%20aCollection%20size%5D%29%20ifFalse%3A%20%5B%5Efalse%5D.%0A%09self%20withIndexDo%3A%20%5B%3Aeach%20%3Ai%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28aCollection%20at%3A%20i%29%20%3D%20each%20ifFalse%3A%20%5B%5Efalse%5D%5D.%0A%09%5Etrue'),
  6490. messageSends: ["ifFalse:", "and:", unescape("%3D"), "class", "size", "withIndexDo:", "at:"],
  6491. referencedClasses: []
  6492. }),
  6493. smalltalk.Array);
  6494. smalltalk.addClass('RegularExpression', smalltalk.Object, [], 'Kernel');
  6495. smalltalk.addMethod(
  6496. unescape('_compile_'),
  6497. smalltalk.method({
  6498. selector: unescape('compile%3A'),
  6499. category: 'evaluating',
  6500. fn: function (aString){
  6501. var self=this;
  6502. return self.compile(aString);
  6503. return self;},
  6504. args: ["aString"],
  6505. source: unescape('compile%3A%20aString%0A%09%3Creturn%20self.compile%28aString%29%3E'),
  6506. messageSends: [],
  6507. referencedClasses: []
  6508. }),
  6509. smalltalk.RegularExpression);
  6510. smalltalk.addMethod(
  6511. unescape('_exec_'),
  6512. smalltalk.method({
  6513. selector: unescape('exec%3A'),
  6514. category: 'evaluating',
  6515. fn: function (aString){
  6516. var self=this;
  6517. return self.exec(aString) || nil;
  6518. return self;},
  6519. args: ["aString"],
  6520. source: unescape('exec%3A%20aString%0A%09%3Creturn%20self.exec%28aString%29%20%7C%7C%20nil%3E'),
  6521. messageSends: [],
  6522. referencedClasses: []
  6523. }),
  6524. smalltalk.RegularExpression);
  6525. smalltalk.addMethod(
  6526. unescape('_test_'),
  6527. smalltalk.method({
  6528. selector: unescape('test%3A'),
  6529. category: 'evaluating',
  6530. fn: function (aString){
  6531. var self=this;
  6532. return self.test(aString);
  6533. return self;},
  6534. args: ["aString"],
  6535. source: unescape('test%3A%20aString%0A%09%3Creturn%20self.test%28aString%29%3E'),
  6536. messageSends: [],
  6537. referencedClasses: []
  6538. }),
  6539. smalltalk.RegularExpression);
  6540. smalltalk.addMethod(
  6541. unescape('_fromString_flag_'),
  6542. smalltalk.method({
  6543. selector: unescape('fromString%3Aflag%3A'),
  6544. category: 'instance creation',
  6545. fn: function (aString, anotherString){
  6546. var self=this;
  6547. return new RegExp(aString, anotherString);
  6548. return self;},
  6549. args: ["aString", "anotherString"],
  6550. source: unescape('fromString%3A%20aString%20flag%3A%20anotherString%0A%09%3Creturn%20new%20RegExp%28aString%2C%20anotherString%29%3E'),
  6551. messageSends: [],
  6552. referencedClasses: []
  6553. }),
  6554. smalltalk.RegularExpression.klass);
  6555. smalltalk.addMethod(
  6556. unescape('_fromString_'),
  6557. smalltalk.method({
  6558. selector: unescape('fromString%3A'),
  6559. category: 'instance creation',
  6560. fn: function (aString){
  6561. var self=this;
  6562. return smalltalk.send(self, "_fromString_flag_", [aString, ""]);
  6563. return self;},
  6564. args: ["aString"],
  6565. source: unescape('fromString%3A%20aString%0A%09%20%20%20%20%5Eself%20fromString%3A%20aString%20flag%3A%20%27%27'),
  6566. messageSends: ["fromString:flag:"],
  6567. referencedClasses: []
  6568. }),
  6569. smalltalk.RegularExpression.klass);
  6570. smalltalk.addClass('Error', smalltalk.Object, ['messageText'], 'Kernel');
  6571. smalltalk.addMethod(
  6572. unescape('_messageText'),
  6573. smalltalk.method({
  6574. selector: unescape('messageText'),
  6575. category: 'accessing',
  6576. fn: function (){
  6577. var self=this;
  6578. return self['@messageText'];
  6579. return self;},
  6580. args: [],
  6581. source: unescape('messageText%0A%09%5EmessageText'),
  6582. messageSends: [],
  6583. referencedClasses: []
  6584. }),
  6585. smalltalk.Error);
  6586. smalltalk.addMethod(
  6587. unescape('_messageText_'),
  6588. smalltalk.method({
  6589. selector: unescape('messageText%3A'),
  6590. category: 'accessing',
  6591. fn: function (aString){
  6592. var self=this;
  6593. self['@messageText']=aString;
  6594. return self;},
  6595. args: ["aString"],
  6596. source: unescape('messageText%3A%20aString%0A%09messageText%20%3A%3D%20aString'),
  6597. messageSends: [],
  6598. referencedClasses: []
  6599. }),
  6600. smalltalk.Error);
  6601. smalltalk.addMethod(
  6602. unescape('_signal'),
  6603. smalltalk.method({
  6604. selector: unescape('signal'),
  6605. category: 'signaling',
  6606. fn: function (){
  6607. var self=this;
  6608. self.context = smalltalk.getThisContext(); self.smalltalkError = true; throw(self);
  6609. return self;},
  6610. args: [],
  6611. source: unescape('signal%0A%09%3Cself.context%20%3D%20smalltalk.getThisContext%28%29%3B%20self.smalltalkError%20%3D%20true%3B%20throw%28self%29%3E'),
  6612. messageSends: [],
  6613. referencedClasses: []
  6614. }),
  6615. smalltalk.Error);
  6616. smalltalk.addMethod(
  6617. unescape('_context'),
  6618. smalltalk.method({
  6619. selector: unescape('context'),
  6620. category: 'accessing',
  6621. fn: function (){
  6622. var self=this;
  6623. return self.context;
  6624. return self;},
  6625. args: [],
  6626. source: unescape('context%0A%09%3Creturn%20self.context%3E'),
  6627. messageSends: [],
  6628. referencedClasses: []
  6629. }),
  6630. smalltalk.Error);
  6631. smalltalk.addMethod(
  6632. unescape('_signal_'),
  6633. smalltalk.method({
  6634. selector: unescape('signal%3A'),
  6635. category: 'instance creation',
  6636. fn: function (aString){
  6637. var self=this;
  6638. return (function($rec){smalltalk.send($rec, "_messageText_", [aString]);return smalltalk.send($rec, "_signal", []);})(smalltalk.send(self, "_new", []));
  6639. return self;},
  6640. args: ["aString"],
  6641. source: unescape('signal%3A%20aString%0A%09%20%20%20%20%5Eself%20new%0A%09%09messageText%3A%20aString%3B%0A%09%09signal'),
  6642. messageSends: ["messageText:", "signal", "new"],
  6643. referencedClasses: []
  6644. }),
  6645. smalltalk.Error.klass);
  6646. smalltalk.addClass('MethodContext', smalltalk.Object, [], 'Kernel');
  6647. smalltalk.addMethod(
  6648. unescape('_receiver'),
  6649. smalltalk.method({
  6650. selector: unescape('receiver'),
  6651. category: 'accessing',
  6652. fn: function (){
  6653. var self=this;
  6654. return self.receiver;
  6655. return self;},
  6656. args: [],
  6657. source: unescape('receiver%0A%09%3Creturn%20self.receiver%3E'),
  6658. messageSends: [],
  6659. referencedClasses: []
  6660. }),
  6661. smalltalk.MethodContext);
  6662. smalltalk.addMethod(
  6663. unescape('_selector'),
  6664. smalltalk.method({
  6665. selector: unescape('selector'),
  6666. category: 'accessing',
  6667. fn: function (){
  6668. var self=this;
  6669. return smalltalk.convertSelector(self.selector);
  6670. return self;},
  6671. args: [],
  6672. source: unescape('selector%0A%09%3Creturn%20smalltalk.convertSelector%28self.selector%29%3E'),
  6673. messageSends: [],
  6674. referencedClasses: []
  6675. }),
  6676. smalltalk.MethodContext);
  6677. smalltalk.addMethod(
  6678. unescape('_home'),
  6679. smalltalk.method({
  6680. selector: unescape('home'),
  6681. category: 'accessing',
  6682. fn: function (){
  6683. var self=this;
  6684. return self.homeContext;
  6685. return self;},
  6686. args: [],
  6687. source: unescape('home%0A%09%3Creturn%20self.homeContext%3E'),
  6688. messageSends: [],
  6689. referencedClasses: []
  6690. }),
  6691. smalltalk.MethodContext);
  6692. smalltalk.addMethod(
  6693. unescape('_temps'),
  6694. smalltalk.method({
  6695. selector: unescape('temps'),
  6696. category: 'accessing',
  6697. fn: function (){
  6698. var self=this;
  6699. return self.temps;
  6700. return self;},
  6701. args: [],
  6702. source: unescape('temps%0A%09%3Creturn%20self.temps%3E'),
  6703. messageSends: [],
  6704. referencedClasses: []
  6705. }),
  6706. smalltalk.MethodContext);
  6707. smalltalk.addMethod(
  6708. unescape('_printString'),
  6709. smalltalk.method({
  6710. selector: unescape('printString'),
  6711. category: 'accessing',
  6712. fn: function (){
  6713. var self=this;
  6714. return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_printString", [], smalltalk.Object), "__comma", [unescape("%28")]), "__comma", [smalltalk.send(self, "_asString", [])]), "__comma", [unescape("%29")]);
  6715. return self;},
  6716. args: [],
  6717. source: unescape('printString%0A%09%5Esuper%20printString%2C%20%27%28%27%2C%20self%20asString%2C%20%27%29%27'),
  6718. messageSends: [unescape("%2C"), "printString", "asString"],
  6719. referencedClasses: []
  6720. }),
  6721. smalltalk.MethodContext);
  6722. smalltalk.addMethod(
  6723. unescape('_asString'),
  6724. smalltalk.method({
  6725. selector: unescape('asString'),
  6726. category: 'accessing',
  6727. fn: function (){
  6728. var self=this;
  6729. return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_receiver", []), "_class", []), "_printString", []), "__comma", [unescape("%20%3E%3E%20")]), "__comma", [smalltalk.send(self, "_selector", [])]);
  6730. return self;},
  6731. args: [],
  6732. source: unescape('asString%0A%09%5Eself%20receiver%20class%20printString%2C%20%27%20%3E%3E%20%27%2C%20self%20selector'),
  6733. messageSends: [unescape("%2C"), "printString", "class", "receiver", "selector"],
  6734. referencedClasses: []
  6735. }),
  6736. smalltalk.MethodContext);
  6737. smalltalk.addClass('Association', smalltalk.Object, ['key', 'value'], 'Kernel');
  6738. smalltalk.addMethod(
  6739. unescape('__eq'),
  6740. smalltalk.method({
  6741. selector: unescape('%3D'),
  6742. category: 'comparing',
  6743. fn: function (anAssociation){
  6744. var self=this;
  6745. return smalltalk.send(smalltalk.send(smalltalk.send(self, "_class", []), "__eq", [smalltalk.send(anAssociation, "_class", [])]), "_and_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(self, "_key", []), "__eq", [smalltalk.send(anAssociation, "_key", [])]), "_and_", [(function(){return smalltalk.send(smalltalk.send(self, "_value", []), "__eq", [smalltalk.send(anAssociation, "_value", [])]);})]);})]);
  6746. return self;},
  6747. args: ["anAssociation"],
  6748. source: unescape('%3D%20anAssociation%0A%09%5Eself%20class%20%3D%20anAssociation%20class%20and%3A%20%5B%0A%09%20%20%20%20self%20key%20%3D%20anAssociation%20key%20and%3A%20%5B%0A%09%09self%20value%20%3D%20anAssociation%20value%5D%5D'),
  6749. messageSends: ["and:", unescape("%3D"), "class", "key", "value"],
  6750. referencedClasses: []
  6751. }),
  6752. smalltalk.Association);
  6753. smalltalk.addMethod(
  6754. unescape('_key_'),
  6755. smalltalk.method({
  6756. selector: unescape('key%3A'),
  6757. category: 'accessing',
  6758. fn: function (aKey){
  6759. var self=this;
  6760. self['@key']=aKey;
  6761. return self;},
  6762. args: ["aKey"],
  6763. source: unescape('key%3A%20aKey%0A%09key%20%3A%3D%20aKey'),
  6764. messageSends: [],
  6765. referencedClasses: []
  6766. }),
  6767. smalltalk.Association);
  6768. smalltalk.addMethod(
  6769. unescape('_key'),
  6770. smalltalk.method({
  6771. selector: unescape('key'),
  6772. category: 'accessing',
  6773. fn: function (){
  6774. var self=this;
  6775. return self['@key'];
  6776. return self;},
  6777. args: [],
  6778. source: unescape('key%0A%09%5Ekey'),
  6779. messageSends: [],
  6780. referencedClasses: []
  6781. }),
  6782. smalltalk.Association);
  6783. smalltalk.addMethod(
  6784. unescape('_value_'),
  6785. smalltalk.method({
  6786. selector: unescape('value%3A'),
  6787. category: 'accessing',
  6788. fn: function (aValue){
  6789. var self=this;
  6790. self['@value']=aValue;
  6791. return self;},
  6792. args: ["aValue"],
  6793. source: unescape('value%3A%20aValue%0A%09value%20%3A%3D%20aValue'),
  6794. messageSends: [],
  6795. referencedClasses: []
  6796. }),
  6797. smalltalk.Association);
  6798. smalltalk.addMethod(
  6799. unescape('_value'),
  6800. smalltalk.method({
  6801. selector: unescape('value'),
  6802. category: 'accessing',
  6803. fn: function (){
  6804. var self=this;
  6805. return self['@value'];
  6806. return self;},
  6807. args: [],
  6808. source: unescape('value%0A%09%5Evalue'),
  6809. messageSends: [],
  6810. referencedClasses: []
  6811. }),
  6812. smalltalk.Association);
  6813. smalltalk.addMethod(
  6814. unescape('_storeOn_'),
  6815. smalltalk.method({
  6816. selector: unescape('storeOn%3A'),
  6817. category: 'comparing',
  6818. fn: function (aStream){
  6819. var self=this;
  6820. smalltalk.send(self['@key'], "_storeOn_", [aStream]);
  6821. smalltalk.send(aStream, "_nextPutAll_", [unescape("-%3E")]);
  6822. smalltalk.send(self['@value'], "_storeOn_", [aStream]);
  6823. return self;},
  6824. args: ["aStream"],
  6825. source: unescape('storeOn%3A%20aStream%0A%09%22Store%20in%20the%20format%20%28key-%3Evalue%29%22%0A%0A%09%22aStream%20nextPutAll%3A%20%27%28%27.%22%0A%09key%20storeOn%3A%20aStream.%0A%09aStream%20nextPutAll%3A%20%27-%3E%27.%0A%09value%20storeOn%3A%20aStream.%0A%09%22aStream%20nextPutAll%3A%20%27%29%27%22'),
  6826. messageSends: ["storeOn:", "nextPutAll:"],
  6827. referencedClasses: []
  6828. }),
  6829. smalltalk.Association);
  6830. smalltalk.addMethod(
  6831. unescape('_key_value_'),
  6832. smalltalk.method({
  6833. selector: unescape('key%3Avalue%3A'),
  6834. category: 'instance creation',
  6835. fn: function (aKey, aValue){
  6836. var self=this;
  6837. return (function($rec){smalltalk.send($rec, "_key_", [aKey]);smalltalk.send($rec, "_value_", [aValue]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", []));
  6838. return self;},
  6839. args: ["aKey", "aValue"],
  6840. source: unescape('key%3A%20aKey%20value%3A%20aValue%0A%09%20%20%20%20%5Eself%20new%0A%09%09key%3A%20aKey%3B%0A%09%09value%3A%20aValue%3B%0A%09%09yourself'),
  6841. messageSends: ["key:", "value:", "yourself", "new"],
  6842. referencedClasses: []
  6843. }),
  6844. smalltalk.Association.klass);
  6845. smalltalk.addClass('Dictionary', smalltalk.Collection, ['keys'], 'Kernel');
  6846. smalltalk.addMethod(
  6847. unescape('__eq'),
  6848. smalltalk.method({
  6849. selector: unescape('%3D'),
  6850. category: 'comparing',
  6851. fn: function (aDictionary){
  6852. var self=this;
  6853. try{((($receiver = smalltalk.send(smalltalk.send(self, "_class", []), "__eq", [smalltalk.send(aDictionary, "_class", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})]));
  6854. ((($receiver = smalltalk.send(smalltalk.send(self, "_size", []), "__eq", [smalltalk.send(aDictionary, "_size", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})]));
  6855. (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return smalltalk.send(smalltalk.send(self, "_associations", []), "__eq", [smalltalk.send(aDictionary, "_associations", [])])}})})();
  6856. return self;
  6857. } catch(e) {if(e.name === 'stReturn' && e.selector === '__eq'){return e.fn()} throw(e)}},
  6858. args: ["aDictionary"],
  6859. source: unescape('%3D%20aDictionary%0A%09self%20class%20%3D%20aDictionary%20class%20ifFalse%3A%20%5B%5Efalse%5D.%0A%09self%20size%20%3D%20aDictionary%20size%20ifFalse%3A%20%5B%5Efalse%5D.%0A%09%5Eself%20associations%20%3D%20aDictionary%20associations'),
  6860. messageSends: ["ifFalse:", unescape("%3D"), "class", "size", "associations"],
  6861. referencedClasses: []
  6862. }),
  6863. smalltalk.Dictionary);
  6864. smalltalk.addMethod(
  6865. unescape('_shallowCopy'),
  6866. smalltalk.method({
  6867. selector: unescape('shallowCopy'),
  6868. category: 'copying',
  6869. fn: function (){
  6870. var self=this;
  6871. var copy=nil;
  6872. copy=smalltalk.send(smalltalk.send(self, "_class", []), "_new", []);
  6873. smalltalk.send(self, "_associationsDo_", [(function(each){return smalltalk.send(copy, "_at_put_", [smalltalk.send(each, "_key", []), smalltalk.send(each, "_value", [])]);})]);
  6874. return copy;
  6875. return self;},
  6876. args: [],
  6877. source: unescape('shallowCopy%0A%09%7C%20copy%20%7C%0A%09copy%20%3A%3D%20self%20class%20new.%0A%09self%20associationsDo%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20copy%20at%3A%20each%20key%20%20put%3A%20each%20value%5D.%0A%09%5Ecopy'),
  6878. messageSends: ["new", "class", "associationsDo:", "at:put:", "key", "value"],
  6879. referencedClasses: []
  6880. }),
  6881. smalltalk.Dictionary);
  6882. smalltalk.addMethod(
  6883. unescape('_initialize'),
  6884. smalltalk.method({
  6885. selector: unescape('initialize'),
  6886. category: 'initialization',
  6887. fn: function (){
  6888. var self=this;
  6889. smalltalk.send(self, "_initialize", [], smalltalk.Collection);
  6890. self['@keys']=[];
  6891. return self;},
  6892. args: [],
  6893. source: unescape('initialize%0A%20%20%20%20%09super%20initialize.%0A%20%20%20%20%09keys%20%3A%3D%20%23%28%29'),
  6894. messageSends: ["initialize"],
  6895. referencedClasses: []
  6896. }),
  6897. smalltalk.Dictionary);
  6898. smalltalk.addMethod(
  6899. unescape('_size'),
  6900. smalltalk.method({
  6901. selector: unescape('size'),
  6902. category: 'accessing',
  6903. fn: function (){
  6904. var self=this;
  6905. return smalltalk.send(self['@keys'], "_size", []);
  6906. return self;},
  6907. args: [],
  6908. source: unescape('size%0A%09%5Ekeys%20size'),
  6909. messageSends: ["size"],
  6910. referencedClasses: []
  6911. }),
  6912. smalltalk.Dictionary);
  6913. smalltalk.addMethod(
  6914. unescape('_associations'),
  6915. smalltalk.method({
  6916. selector: unescape('associations'),
  6917. category: 'accessing',
  6918. fn: function (){
  6919. var self=this;
  6920. var associations=nil;
  6921. associations=[];
  6922. smalltalk.send(self['@keys'], "_do_", [(function(each){return smalltalk.send(associations, "_add_", [smalltalk.send((smalltalk.Association || Association), "_key_value_", [each, smalltalk.send(self, "_at_", [each])])]);})]);
  6923. return associations;
  6924. return self;},
  6925. args: [],
  6926. source: unescape('associations%0A%09%7C%20associations%20%7C%0A%09associations%20%3A%3D%20%23%28%29.%0A%09keys%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20associations%20add%3A%20%28Association%20key%3A%20each%20value%3A%20%28self%20at%3A%20each%29%29%5D.%0A%09%5Eassociations'),
  6927. messageSends: ["do:", "add:", "key:value:", "at:"],
  6928. referencedClasses: [smalltalk.Association]
  6929. }),
  6930. smalltalk.Dictionary);
  6931. smalltalk.addMethod(
  6932. unescape('_keys'),
  6933. smalltalk.method({
  6934. selector: unescape('keys'),
  6935. category: 'accessing',
  6936. fn: function (){
  6937. var self=this;
  6938. return smalltalk.send(self['@keys'], "_copy", []);
  6939. return self;},
  6940. args: [],
  6941. source: unescape('keys%0A%09%5Ekeys%20copy'),
  6942. messageSends: ["copy"],
  6943. referencedClasses: []
  6944. }),
  6945. smalltalk.Dictionary);
  6946. smalltalk.addMethod(
  6947. unescape('_values'),
  6948. smalltalk.method({
  6949. selector: unescape('values'),
  6950. category: 'accessing',
  6951. fn: function (){
  6952. var self=this;
  6953. return smalltalk.send(self['@keys'], "_collect_", [(function(each){return smalltalk.send(self, "_at_", [each]);})]);
  6954. return self;},
  6955. args: [],
  6956. source: unescape('values%0A%20%20%20%20%09%5Ekeys%20collect%3A%20%5B%3Aeach%20%7C%20self%20at%3A%20each%5D'),
  6957. messageSends: ["collect:", "at:"],
  6958. referencedClasses: []
  6959. }),
  6960. smalltalk.Dictionary);
  6961. smalltalk.addMethod(
  6962. unescape('_at_put_'),
  6963. smalltalk.method({
  6964. selector: unescape('at%3Aput%3A'),
  6965. category: 'accessing',
  6966. fn: function (aKey, aValue){
  6967. var self=this;
  6968. ((($receiver = smalltalk.send(self['@keys'], "_includes_", [aKey])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self['@keys'], "_add_", [aKey]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self['@keys'], "_add_", [aKey]);})]));
  6969. return smalltalk.send(self, "_basicAt_put_", [aKey, aValue]);
  6970. return self;},
  6971. args: ["aKey", "aValue"],
  6972. source: unescape('at%3A%20aKey%20put%3A%20aValue%0A%09%28keys%20includes%3A%20aKey%29%20ifFalse%3A%20%5Bkeys%20add%3A%20aKey%5D.%0A%09%5Eself%20basicAt%3A%20aKey%20put%3A%20aValue'),
  6973. messageSends: ["ifFalse:", "includes:", "add:", "basicAt:put:"],
  6974. referencedClasses: []
  6975. }),
  6976. smalltalk.Dictionary);
  6977. smalltalk.addMethod(
  6978. unescape('_at_ifAbsent_'),
  6979. smalltalk.method({
  6980. selector: unescape('at%3AifAbsent%3A'),
  6981. category: 'accessing',
  6982. fn: function (aKey, aBlock){
  6983. var self=this;
  6984. return smalltalk.send(smalltalk.send(smalltalk.send(self, "_keys", []), "_includes_", [aKey]), "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_basicAt_", [aKey]);}), aBlock]);
  6985. return self;},
  6986. args: ["aKey", "aBlock"],
  6987. source: unescape('at%3A%20aKey%20ifAbsent%3A%20aBlock%0A%09%5E%28self%20keys%20includes%3A%20aKey%29%0A%09%09ifTrue%3A%20%5Bself%20basicAt%3A%20aKey%5D%0A%09%09ifFalse%3A%20aBlock'),
  6988. messageSends: ["ifTrue:ifFalse:", "includes:", "keys", "basicAt:"],
  6989. referencedClasses: []
  6990. }),
  6991. smalltalk.Dictionary);
  6992. smalltalk.addMethod(
  6993. unescape('_at_ifAbsentPut_'),
  6994. smalltalk.method({
  6995. selector: unescape('at%3AifAbsentPut%3A'),
  6996. category: 'accessing',
  6997. fn: function (aKey, aBlock){
  6998. var self=this;
  6999. return smalltalk.send(self, "_at_ifAbsent_", [aKey, (function(){return smalltalk.send(self, "_at_put_", [aKey, smalltalk.send(aBlock, "_value", [])]);})]);
  7000. return self;},
  7001. args: ["aKey", "aBlock"],
  7002. source: unescape('at%3A%20aKey%20ifAbsentPut%3A%20aBlock%0A%20%20%20%20%09%5Eself%20at%3A%20aKey%20ifAbsent%3A%20%5B%0A%20%20%20%20%09%20%20%20%20self%20at%3A%20aKey%20put%3A%20aBlock%20value%5D'),
  7003. messageSends: ["at:ifAbsent:", "at:put:", "value"],
  7004. referencedClasses: []
  7005. }),
  7006. smalltalk.Dictionary);
  7007. smalltalk.addMethod(
  7008. unescape('_at_ifPresent_'),
  7009. smalltalk.method({
  7010. selector: unescape('at%3AifPresent%3A'),
  7011. category: 'accessing',
  7012. fn: function (aKey, aBlock){
  7013. var self=this;
  7014. return (($receiver = smalltalk.send(self, "_basicAt_", [aKey])) != nil && $receiver != undefined) ? (function(){return smalltalk.send(aBlock, "_value_", [smalltalk.send(self, "_at_", [aKey])]);})() : nil;
  7015. return self;},
  7016. args: ["aKey", "aBlock"],
  7017. source: unescape('at%3A%20aKey%20ifPresent%3A%20aBlock%0A%09%5E%28self%20basicAt%3A%20aKey%29%20ifNotNil%3A%20%5BaBlock%20value%3A%20%28self%20at%3A%20aKey%29%5D'),
  7018. messageSends: ["ifNotNil:", "basicAt:", "value:", "at:"],
  7019. referencedClasses: []
  7020. }),
  7021. smalltalk.Dictionary);
  7022. smalltalk.addMethod(
  7023. unescape('_at_ifPresent_ifAbsent_'),
  7024. smalltalk.method({
  7025. selector: unescape('at%3AifPresent%3AifAbsent%3A'),
  7026. category: 'accessing',
  7027. fn: function (aKey, aBlock, anotherBlock){
  7028. var self=this;
  7029. return smalltalk.send(smalltalk.send(self, "_basicAt_", [aKey]), "_ifNil_ifNotNil_", [anotherBlock, (function(){return smalltalk.send(aBlock, "_value_", [smalltalk.send(self, "_at_", [aKey])]);})]);
  7030. return self;},
  7031. args: ["aKey", "aBlock", "anotherBlock"],
  7032. source: unescape('at%3A%20aKey%20ifPresent%3A%20aBlock%20ifAbsent%3A%20anotherBlock%0A%09%5E%28self%20basicAt%3A%20aKey%29%0A%09%20%20%20%20ifNil%3A%20anotherBlock%0A%09%20%20%20%20ifNotNil%3A%20%5BaBlock%20value%3A%20%28self%20at%3A%20aKey%29%5D'),
  7033. messageSends: ["ifNil:ifNotNil:", "basicAt:", "value:", "at:"],
  7034. referencedClasses: []
  7035. }),
  7036. smalltalk.Dictionary);
  7037. smalltalk.addMethod(
  7038. unescape('_add_'),
  7039. smalltalk.method({
  7040. selector: unescape('add%3A'),
  7041. category: 'adding/removing',
  7042. fn: function (anAssociation){
  7043. var self=this;
  7044. smalltalk.send(self, "_at_put_", [smalltalk.send(anAssociation, "_key", []), smalltalk.send(anAssociation, "_value", [])]);
  7045. return self;},
  7046. args: ["anAssociation"],
  7047. source: unescape('add%3A%20anAssociation%0A%20%20%20%20%09self%20at%3A%20anAssociation%20key%20put%3A%20anAssociation%20value'),
  7048. messageSends: ["at:put:", "key", "value"],
  7049. referencedClasses: []
  7050. }),
  7051. smalltalk.Dictionary);
  7052. smalltalk.addMethod(
  7053. unescape('_addAll_'),
  7054. smalltalk.method({
  7055. selector: unescape('addAll%3A'),
  7056. category: 'adding/removing',
  7057. fn: function (aDictionary){
  7058. var self=this;
  7059. smalltalk.send(self, "_addAll_", [smalltalk.send(aDictionary, "_associations", [])], smalltalk.Collection);
  7060. return aDictionary;
  7061. return self;},
  7062. args: ["aDictionary"],
  7063. source: unescape('addAll%3A%20aDictionary%0A%20%20%20%20%09super%20addAll%3A%20aDictionary%20associations.%0A%20%20%20%20%09%5EaDictionary'),
  7064. messageSends: ["addAll:", "associations"],
  7065. referencedClasses: []
  7066. }),
  7067. smalltalk.Dictionary);
  7068. smalltalk.addMethod(
  7069. unescape('__comma'),
  7070. smalltalk.method({
  7071. selector: unescape('%2C'),
  7072. category: 'copying',
  7073. fn: function (aCollection){
  7074. var self=this;
  7075. smalltalk.send(self, "_shouldNotImplement", []);
  7076. return self;},
  7077. args: ["aCollection"],
  7078. source: unescape('%2C%20aCollection%0A%09self%20shouldNotImplement'),
  7079. messageSends: ["shouldNotImplement"],
  7080. referencedClasses: []
  7081. }),
  7082. smalltalk.Dictionary);
  7083. smalltalk.addMethod(
  7084. unescape('_copyFrom_to_'),
  7085. smalltalk.method({
  7086. selector: unescape('copyFrom%3Ato%3A'),
  7087. category: 'copying',
  7088. fn: function (anIndex, anotherIndex){
  7089. var self=this;
  7090. smalltalk.send(self, "_shouldNotImplement", []);
  7091. return self;},
  7092. args: ["anIndex", "anotherIndex"],
  7093. source: unescape('copyFrom%3A%20anIndex%20to%3A%20anotherIndex%0A%09self%20shouldNotImplement'),
  7094. messageSends: ["shouldNotImplement"],
  7095. referencedClasses: []
  7096. }),
  7097. smalltalk.Dictionary);
  7098. smalltalk.addMethod(
  7099. unescape('_associationsDo_'),
  7100. smalltalk.method({
  7101. selector: unescape('associationsDo%3A'),
  7102. category: 'enumerating',
  7103. fn: function (aBlock){
  7104. var self=this;
  7105. smalltalk.send(smalltalk.send(self, "_associations", []), "_do_", [aBlock]);
  7106. return self;},
  7107. args: ["aBlock"],
  7108. source: unescape('associationsDo%3A%20aBlock%0A%20%20%20%20%09self%20associations%20do%3A%20aBlock'),
  7109. messageSends: ["do:", "associations"],
  7110. referencedClasses: []
  7111. }),
  7112. smalltalk.Dictionary);
  7113. smalltalk.addMethod(
  7114. unescape('_keysAndValuesDo_'),
  7115. smalltalk.method({
  7116. selector: unescape('keysAndValuesDo%3A'),
  7117. category: 'enumerating',
  7118. fn: function (aBlock){
  7119. var self=this;
  7120. smalltalk.send(self, "_associationsDo_", [(function(each){return smalltalk.send(aBlock, "_value_value_", [smalltalk.send(each, "_key", []), smalltalk.send(each, "_value", [])]);})]);
  7121. return self;},
  7122. args: ["aBlock"],
  7123. source: unescape('keysAndValuesDo%3A%20aBlock%0A%20%20%20%20%09self%20associationsDo%3A%20%5B%3Aeach%20%7C%0A%20%20%20%20%09%20%20%20%20aBlock%20value%3A%20each%20key%20value%3A%20each%20value%5D'),
  7124. messageSends: ["associationsDo:", "value:value:", "key", "value"],
  7125. referencedClasses: []
  7126. }),
  7127. smalltalk.Dictionary);
  7128. smalltalk.addMethod(
  7129. unescape('_do_'),
  7130. smalltalk.method({
  7131. selector: unescape('do%3A'),
  7132. category: 'enumerating',
  7133. fn: function (aBlock){
  7134. var self=this;
  7135. smalltalk.send(smalltalk.send(self, "_values", []), "_do_", [aBlock]);
  7136. return self;},
  7137. args: ["aBlock"],
  7138. source: unescape('do%3A%20aBlock%0A%20%20%20%20%09self%20values%20do%3A%20aBlock'),
  7139. messageSends: ["do:", "values"],
  7140. referencedClasses: []
  7141. }),
  7142. smalltalk.Dictionary);
  7143. smalltalk.addMethod(
  7144. unescape('_select_'),
  7145. smalltalk.method({
  7146. selector: unescape('select%3A'),
  7147. category: 'enumerating',
  7148. fn: function (aBlock){
  7149. var self=this;
  7150. var newDict=nil;
  7151. newDict=smalltalk.send(smalltalk.send(self, "_class", []), "_new", []);
  7152. smalltalk.send(self, "_keysAndValuesDo_", [(function(key, value){return ((($receiver = smalltalk.send(aBlock, "_value_", [value])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(newDict, "_at_put_", [key, value]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(newDict, "_at_put_", [key, value]);})]));})]);
  7153. return newDict;
  7154. return self;},
  7155. args: ["aBlock"],
  7156. source: unescape('select%3A%20aBlock%0A%20%20%20%20%09%7C%20newDict%20%7C%0A%20%20%20%20%09newDict%20%3A%3D%20self%20class%20new.%0A%20%20%20%20%09self%20keysAndValuesDo%3A%20%5B%3Akey%20%3Avalue%20%7C%0A%20%20%20%20%09%20%20%20%20%28aBlock%20value%3A%20value%29%20ifTrue%3A%20%5BnewDict%20at%3A%20key%20put%3A%20value%5D%5D.%0A%20%20%20%20%09%5EnewDict'),
  7157. messageSends: ["new", "class", "keysAndValuesDo:", "ifTrue:", "value:", "at:put:"],
  7158. referencedClasses: []
  7159. }),
  7160. smalltalk.Dictionary);
  7161. smalltalk.addMethod(
  7162. unescape('_collect_'),
  7163. smalltalk.method({
  7164. selector: unescape('collect%3A'),
  7165. category: 'enumerating',
  7166. fn: function (aBlock){
  7167. var self=this;
  7168. var newDict=nil;
  7169. newDict=smalltalk.send(smalltalk.send(self, "_class", []), "_new", []);
  7170. smalltalk.send(self, "_keysAndValuesDo_", [(function(key, value){return smalltalk.send(newDict, "_at_put_", [key, smalltalk.send(aBlock, "_value_", [value])]);})]);
  7171. return newDict;
  7172. return self;},
  7173. args: ["aBlock"],
  7174. source: unescape('collect%3A%20aBlock%0A%20%20%20%20%09%7C%20newDict%20%7C%0A%20%20%20%20%09newDict%20%3A%3D%20self%20class%20new.%0A%20%20%20%20%09self%20keysAndValuesDo%3A%20%5B%3Akey%20%3Avalue%20%7C%0A%20%20%20%20%09%20%20%20%20newDict%20at%3A%20key%20put%3A%20%28aBlock%20value%3A%20value%29%5D.%0A%20%20%20%20%09%5EnewDict'),
  7175. messageSends: ["new", "class", "keysAndValuesDo:", "at:put:", "value:"],
  7176. referencedClasses: []
  7177. }),
  7178. smalltalk.Dictionary);
  7179. smalltalk.addMethod(
  7180. unescape('_detect_ifNone_'),
  7181. smalltalk.method({
  7182. selector: unescape('detect%3AifNone%3A'),
  7183. category: 'enumerating',
  7184. fn: function (aBlock, anotherBlock){
  7185. var self=this;
  7186. return smalltalk.send(smalltalk.send(self, "_values", []), "_detect_ifNone_", [aBlock, anotherBlock]);
  7187. return self;},
  7188. args: ["aBlock", "anotherBlock"],
  7189. source: unescape('detect%3A%20aBlock%20ifNone%3A%20anotherBlock%0A%09%5Eself%20values%20detect%3A%20aBlock%20ifNone%3A%20anotherBlock'),
  7190. messageSends: ["detect:ifNone:", "values"],
  7191. referencedClasses: []
  7192. }),
  7193. smalltalk.Dictionary);
  7194. smalltalk.addMethod(
  7195. unescape('_includes_'),
  7196. smalltalk.method({
  7197. selector: unescape('includes%3A'),
  7198. category: 'enumerating',
  7199. fn: function (anObject){
  7200. var self=this;
  7201. return smalltalk.send(smalltalk.send(self, "_values", []), "_includes_", [anObject]);
  7202. return self;},
  7203. args: ["anObject"],
  7204. source: unescape('includes%3A%20anObject%0A%09%5Eself%20values%20includes%3A%20anObject'),
  7205. messageSends: ["includes:", "values"],
  7206. referencedClasses: []
  7207. }),
  7208. smalltalk.Dictionary);
  7209. smalltalk.addMethod(
  7210. unescape('_remove_'),
  7211. smalltalk.method({
  7212. selector: unescape('remove%3A'),
  7213. category: 'adding/removing',
  7214. fn: function (aKey){
  7215. var self=this;
  7216. smalltalk.send(self, "_removeKey_", [aKey]);
  7217. return self;},
  7218. args: ["aKey"],
  7219. source: unescape('remove%3A%20aKey%0A%20%20%20%20self%20removeKey%3A%20aKey'),
  7220. messageSends: ["removeKey:"],
  7221. referencedClasses: []
  7222. }),
  7223. smalltalk.Dictionary);
  7224. smalltalk.addMethod(
  7225. unescape('_removeKey_'),
  7226. smalltalk.method({
  7227. selector: unescape('removeKey%3A'),
  7228. category: 'adding/removing',
  7229. fn: function (aKey){
  7230. var self=this;
  7231. smalltalk.send(self['@keys'], "_remove_", [aKey]);
  7232. return self;},
  7233. args: ["aKey"],
  7234. source: unescape('removeKey%3A%20aKey%0A%20%20%20%20keys%20remove%3A%20aKey'),
  7235. messageSends: ["remove:"],
  7236. referencedClasses: []
  7237. }),
  7238. smalltalk.Dictionary);
  7239. smalltalk.addMethod(
  7240. unescape('_at_'),
  7241. smalltalk.method({
  7242. selector: unescape('at%3A'),
  7243. category: 'accessing',
  7244. fn: function (aKey){
  7245. var self=this;
  7246. return smalltalk.send(self, "_at_ifAbsent_", [aKey, (function(){return smalltalk.send(self, "_errorNotFound", []);})]);
  7247. return self;},
  7248. args: ["aKey"],
  7249. source: unescape('at%3A%20aKey%0A%09%5Eself%20at%3A%20aKey%20ifAbsent%3A%20%5Bself%20errorNotFound%5D'),
  7250. messageSends: ["at:ifAbsent:", "errorNotFound"],
  7251. referencedClasses: []
  7252. }),
  7253. smalltalk.Dictionary);
  7254. smalltalk.addMethod(
  7255. unescape('_asJSONObject'),
  7256. smalltalk.method({
  7257. selector: unescape('asJSONObject'),
  7258. category: 'converting',
  7259. fn: function (){
  7260. var self=this;
  7261. var object=nil;
  7262. object=smalltalk.send((smalltalk.Object || Object), "_new", []);
  7263. smalltalk.send(self, "_keysAndValuesDo_", [(function(key, value){return smalltalk.send(object, "_basicAt_put_", [key, smalltalk.send(value, "_asJSONObject", [])]);})]);
  7264. return object;
  7265. return self;},
  7266. args: [],
  7267. source: unescape('asJSONObject%0A%09%7C%20object%20%7C%0A%09object%20%3A%3D%20Object%20new.%0A%09self%20keysAndValuesDo%3A%20%5B%3Akey%20%3Avalue%20%7C%0A%09%09object%20basicAt%3A%20key%20put%3A%20value%20asJSONObject%5D.%0A%09%5Eobject'),
  7268. messageSends: ["new", "keysAndValuesDo:", "basicAt:put:", "asJSONObject"],
  7269. referencedClasses: [smalltalk.Object]
  7270. }),
  7271. smalltalk.Dictionary);
  7272. smalltalk.addMethod(
  7273. unescape('_printString'),
  7274. smalltalk.method({
  7275. selector: unescape('printString'),
  7276. category: 'printing',
  7277. fn: function (){
  7278. var self=this;
  7279. return smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(aStream){(function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(self, "_printString", [], smalltalk.Collection)]);return smalltalk.send($rec, "_nextPutAll_", [unescape("%28")]);})(aStream);smalltalk.send(smalltalk.send(self, "_associations", []), "_do_separatedBy_", [(function(anAssociation){return (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(anAssociation, "_key", []), "_printString", [])]);smalltalk.send($rec, "_nextPutAll_", [unescape("%20-%3E%20")]);return smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(anAssociation, "_value", []), "_printString", [])]);})(aStream);}), (function(){return smalltalk.send(aStream, "_nextPutAll_", [unescape("%20%2C%20")]);})]);return smalltalk.send(aStream, "_nextPutAll_", [unescape("%29")]);})]);
  7280. return self;},
  7281. args: [],
  7282. source: unescape('printString%0A%09%5E%20String%20streamContents%3A%20%5B%3AaStream%7C%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09aStream%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09%09nextPutAll%3A%20super%20printString%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09%09nextPutAll%3A%20%27%28%27.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09self%20associations%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09%09do%3A%20%5B%3AanAssociation%7C%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09aStream%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09nextPutAll%3A%20anAssociation%20key%20printString%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09nextPutAll%3A%20%27%20-%3E%20%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09nextPutAll%3A%20anAssociation%20value%20printString%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09%09separatedBy%3A%20%5BaStream%20nextPutAll%3A%20%27%20%2C%20%27%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09aStream%20nextPutAll%3A%20%27%29%27.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D'),
  7283. messageSends: ["streamContents:", "nextPutAll:", "printString", "do:separatedBy:", "associations", "key", "value"],
  7284. referencedClasses: [smalltalk.String]
  7285. }),
  7286. smalltalk.Dictionary);
  7287. smalltalk.addMethod(
  7288. unescape('_storeOn_'),
  7289. smalltalk.method({
  7290. selector: unescape('storeOn%3A'),
  7291. category: 'printing',
  7292. fn: function (aStream){
  7293. var self=this;
  7294. smalltalk.send(aStream, "_nextPutAll_", [unescape("%23%7B")]);
  7295. smalltalk.send(smalltalk.send(self, "_associations", []), "_do_separatedBy_", [(function(each){return smalltalk.send(each, "_storeOn_", [aStream]);}), (function(){return smalltalk.send(aStream, "_nextPutAll_", [". "]);})]);
  7296. smalltalk.send(aStream, "_nextPutAll_", [unescape("%7D")]);
  7297. return self;},
  7298. args: ["aStream"],
  7299. source: unescape('storeOn%3A%20aStream%0A%09aStream%20nextPutAll%3A%20%27%23%7B%27.%0A%09self%20associations%0A%09%09do%3A%20%5B%3Aeach%20%7C%20each%20storeOn%3A%20aStream%5D%0A%09%09separatedBy%3A%20%5B%20aStream%20nextPutAll%3A%20%27.%20%27%5D.%0A%09aStream%20nextPutAll%3A%20%27%7D%27'),
  7300. messageSends: ["nextPutAll:", "do:separatedBy:", "associations", "storeOn:"],
  7301. referencedClasses: []
  7302. }),
  7303. smalltalk.Dictionary);
  7304. smalltalk.addMethod(
  7305. unescape('_fromPairs_'),
  7306. smalltalk.method({
  7307. selector: unescape('fromPairs%3A'),
  7308. category: 'instance creation',
  7309. fn: function (aCollection){
  7310. var self=this;
  7311. var dict=nil;
  7312. dict=smalltalk.send(self, "_new", []);
  7313. smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send(dict, "_add_", [each]);})]);
  7314. return dict;
  7315. return self;},
  7316. args: ["aCollection"],
  7317. source: unescape('fromPairs%3A%20aCollection%0A%09%7C%20dict%20%7C%0A%09dict%20%3A%3D%20self%20new.%0A%09aCollection%20do%3A%20%5B%3Aeach%20%7C%20dict%20add%3A%20each%5D.%0A%09%5Edict'),
  7318. messageSends: ["new", "do:", "add:"],
  7319. referencedClasses: []
  7320. }),
  7321. smalltalk.Dictionary.klass);
  7322. smalltalk.addClass('ClassBuilder', smalltalk.Object, [], 'Kernel');
  7323. smalltalk.addMethod(
  7324. unescape('_superclass_subclass_'),
  7325. smalltalk.method({
  7326. selector: unescape('superclass%3Asubclass%3A'),
  7327. category: 'class creation',
  7328. fn: function (aClass, aString){
  7329. var self=this;
  7330. return smalltalk.send(self, "_superclass_subclass_instanceVariableNames_package_", [aClass, aString, "", nil]);
  7331. return self;},
  7332. args: ["aClass", "aString"],
  7333. source: unescape('superclass%3A%20aClass%20subclass%3A%20aString%0A%09%5Eself%20superclass%3A%20aClass%20subclass%3A%20aString%20instanceVariableNames%3A%20%27%27%20package%3A%20nil'),
  7334. messageSends: ["superclass:subclass:instanceVariableNames:package:"],
  7335. referencedClasses: []
  7336. }),
  7337. smalltalk.ClassBuilder);
  7338. smalltalk.addMethod(
  7339. unescape('_class_instanceVariableNames_'),
  7340. smalltalk.method({
  7341. selector: unescape('class%3AinstanceVariableNames%3A'),
  7342. category: 'class creation',
  7343. fn: function (aClass, aString){
  7344. var self=this;
  7345. ((($receiver = smalltalk.send(aClass, "_isMetaclass", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self, "_error_", [smalltalk.send(smalltalk.send(aClass, "_name", []), "__comma", [" is not a metaclass"])]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self, "_error_", [smalltalk.send(smalltalk.send(aClass, "_name", []), "__comma", [" is not a metaclass"])]);})]));
  7346. smalltalk.send(aClass, "_basicAt_put_", ["iVarNames", smalltalk.send(self, "_instanceVariableNamesFor_", [aString])]);
  7347. smalltalk.send(self, "_setupClass_", [aClass]);
  7348. return self;},
  7349. args: ["aClass", "aString"],
  7350. source: unescape('class%3A%20aClass%20instanceVariableNames%3A%20aString%0A%09aClass%20isMetaclass%20ifFalse%3A%20%5Bself%20error%3A%20aClass%20name%2C%20%27%20is%20not%20a%20metaclass%27%5D.%0A%09aClass%20basicAt%3A%20%27iVarNames%27%20put%3A%20%28self%20instanceVariableNamesFor%3A%20aString%29.%0A%09self%20setupClass%3A%20aClass'),
  7351. messageSends: ["ifFalse:", "isMetaclass", "error:", unescape("%2C"), "name", "basicAt:put:", "instanceVariableNamesFor:", "setupClass:"],
  7352. referencedClasses: []
  7353. }),
  7354. smalltalk.ClassBuilder);
  7355. smalltalk.addMethod(
  7356. unescape('_instanceVariableNamesFor_'),
  7357. smalltalk.method({
  7358. selector: unescape('instanceVariableNamesFor%3A'),
  7359. category: 'private',
  7360. fn: function (aString){
  7361. var self=this;
  7362. return smalltalk.send(smalltalk.send(aString, "_tokenize_", [" "]), "_reject_", [(function(each){return smalltalk.send(each, "_isEmpty", []);})]);
  7363. return self;},
  7364. args: ["aString"],
  7365. source: unescape('instanceVariableNamesFor%3A%20aString%0A%09%5E%28aString%20tokenize%3A%20%27%20%27%29%20reject%3A%20%5B%3Aeach%20%7C%20each%20isEmpty%5D'),
  7366. messageSends: ["reject:", "tokenize:", "isEmpty"],
  7367. referencedClasses: []
  7368. }),
  7369. smalltalk.ClassBuilder);
  7370. smalltalk.addMethod(
  7371. unescape('_addSubclassOf_named_instanceVariableNames_'),
  7372. smalltalk.method({
  7373. selector: unescape('addSubclassOf%3Anamed%3AinstanceVariableNames%3A'),
  7374. category: 'private',
  7375. fn: function (aClass, aString, aCollection){
  7376. var self=this;
  7377. smalltalk.addClass(aString, aClass, aCollection);
  7378. return smalltalk[aString];
  7379. return self;},
  7380. args: ["aClass", "aString", "aCollection"],
  7381. source: unescape('addSubclassOf%3A%20aClass%20named%3A%20aString%20instanceVariableNames%3A%20aCollection%0A%09%3Csmalltalk.addClass%28aString%2C%20aClass%2C%20aCollection%29%3B%0A%09%20%20%20%20return%20smalltalk%5BaString%5D%3E'),
  7382. messageSends: [],
  7383. referencedClasses: []
  7384. }),
  7385. smalltalk.ClassBuilder);
  7386. smalltalk.addMethod(
  7387. unescape('_setupClass_'),
  7388. smalltalk.method({
  7389. selector: unescape('setupClass%3A'),
  7390. category: 'private',
  7391. fn: function (aClass){
  7392. var self=this;
  7393. smalltalk.init(aClass);;
  7394. return self;},
  7395. args: ["aClass"],
  7396. source: unescape('setupClass%3A%20aClass%0A%09%3Csmalltalk.init%28aClass%29%3B%3E'),
  7397. messageSends: [],
  7398. referencedClasses: []
  7399. }),
  7400. smalltalk.ClassBuilder);
  7401. smalltalk.addMethod(
  7402. unescape('_superclass_subclass_instanceVariableNames_module_'),
  7403. smalltalk.method({
  7404. selector: unescape('superclass%3Asubclass%3AinstanceVariableNames%3Amodule%3A'),
  7405. category: 'class creation',
  7406. fn: function (aClass, aString, aString2, aString3){
  7407. var self=this;
  7408. var newClass=nil;
  7409. newClass=smalltalk.send(self, "_addSubclassOf_named_instanceVariableNames_module_", [aClass, aString, smalltalk.send(self, "_instanceVariableNamesFor_", [aString2]), (($receiver = aString3) == nil || $receiver == undefined) ? (function(){return "unclassified";})() : $receiver]);
  7410. smalltalk.send(self, "_setupClass_", [newClass]);
  7411. return self;},
  7412. args: ["aClass", "aString", "aString2", "aString3"],
  7413. source: unescape('superclass%3A%20aClass%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20module%3A%20aString3%0A%09%7C%20newClass%20%7C%0A%09newClass%20%3A%3D%20self%20addSubclassOf%3A%20aClass%0A%09%09%09%09named%3A%20aString%20instanceVariableNames%3A%20%28self%20instanceVariableNamesFor%3A%20aString2%29%0A%09%09%09%09module%3A%20%28aString3%20ifNil%3A%20%5B%27unclassified%27%5D%29.%0A%09self%20setupClass%3A%20newClass'),
  7414. messageSends: ["addSubclassOf:named:instanceVariableNames:module:", "instanceVariableNamesFor:", "ifNil:", "setupClass:"],
  7415. referencedClasses: []
  7416. }),
  7417. smalltalk.ClassBuilder);
  7418. smalltalk.addMethod(
  7419. unescape('_addSubclassOf_named_instanceVariableNames_module_'),
  7420. smalltalk.method({
  7421. selector: unescape('addSubclassOf%3Anamed%3AinstanceVariableNames%3Amodule%3A'),
  7422. category: 'private',
  7423. fn: function (aClass, aString, aCollection, moduleName){
  7424. var self=this;
  7425. smalltalk.addClass(aString, aClass, aCollection, moduleName);
  7426. return smalltalk[aString];
  7427. return self;},
  7428. args: ["aClass", "aString", "aCollection", "moduleName"],
  7429. source: unescape('addSubclassOf%3A%20aClass%20named%3A%20aString%20instanceVariableNames%3A%20aCollection%20module%3A%20moduleName%0A%09%3Csmalltalk.addClass%28aString%2C%20aClass%2C%20aCollection%2C%20moduleName%29%3B%0A%09%20%20%20%20return%20smalltalk%5BaString%5D%3E'),
  7430. messageSends: [],
  7431. referencedClasses: []
  7432. }),
  7433. smalltalk.ClassBuilder);
  7434. smalltalk.addMethod(
  7435. unescape('_superclass_subclass_instanceVariableNames_package_'),
  7436. smalltalk.method({
  7437. selector: unescape('superclass%3Asubclass%3AinstanceVariableNames%3Apackage%3A'),
  7438. category: 'class creation',
  7439. fn: function (aClass, aString, aString2, aString3){
  7440. var self=this;
  7441. var newClass=nil;
  7442. newClass=smalltalk.send(self, "_addSubclassOf_named_instanceVariableNames_package_", [aClass, aString, smalltalk.send(self, "_instanceVariableNamesFor_", [aString2]), (($receiver = aString3) == nil || $receiver == undefined) ? (function(){return "unclassified";})() : $receiver]);
  7443. smalltalk.send(self, "_setupClass_", [newClass]);
  7444. return self;},
  7445. args: ["aClass", "aString", "aString2", "aString3"],
  7446. source: unescape('superclass%3A%20aClass%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20package%3A%20aString3%0A%09%7C%20newClass%20%7C%0A%09newClass%20%3A%3D%20self%20addSubclassOf%3A%20aClass%0A%09%09%09%09named%3A%20aString%20instanceVariableNames%3A%20%28self%20instanceVariableNamesFor%3A%20aString2%29%0A%09%09%09%09package%3A%20%28aString3%20ifNil%3A%20%5B%27unclassified%27%5D%29.%0A%09self%20setupClass%3A%20newClass'),
  7447. messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "instanceVariableNamesFor:", "ifNil:", "setupClass:"],
  7448. referencedClasses: []
  7449. }),
  7450. smalltalk.ClassBuilder);
  7451. smalltalk.addMethod(
  7452. unescape('_addSubclassOf_named_instanceVariableNames_package_'),
  7453. smalltalk.method({
  7454. selector: unescape('addSubclassOf%3Anamed%3AinstanceVariableNames%3Apackage%3A'),
  7455. category: 'private',
  7456. fn: function (aClass, aString, aCollection, packageName){
  7457. var self=this;
  7458. smalltalk.addClass(aString, aClass, aCollection, packageName);
  7459. return smalltalk[aString];
  7460. return self;},
  7461. args: ["aClass", "aString", "aCollection", "packageName"],
  7462. source: unescape('addSubclassOf%3A%20aClass%20named%3A%20aString%20instanceVariableNames%3A%20aCollection%20package%3A%20packageName%0A%09%3Csmalltalk.addClass%28aString%2C%20aClass%2C%20aCollection%2C%20packageName%29%3B%0A%09%20%20%20%20return%20smalltalk%5BaString%5D%3E'),
  7463. messageSends: [],
  7464. referencedClasses: []
  7465. }),
  7466. smalltalk.ClassBuilder);
  7467. smalltalk.addClass('ClassCategoryReader', smalltalk.Object, ['class', 'category', 'chunkParser'], 'Kernel');
  7468. smalltalk.addMethod(
  7469. unescape('_initialize'),
  7470. smalltalk.method({
  7471. selector: unescape('initialize'),
  7472. category: 'initialization',
  7473. fn: function (){
  7474. var self=this;
  7475. smalltalk.send(self, "_initialize", [], smalltalk.Object);
  7476. self['@chunkParser']=smalltalk.send((smalltalk.ChunkParser || ChunkParser), "_new", []);
  7477. return self;},
  7478. args: [],
  7479. source: unescape('initialize%0A%09super%20initialize.%0A%09chunkParser%20%3A%3D%20ChunkParser%20new.'),
  7480. messageSends: ["initialize", "new"],
  7481. referencedClasses: [smalltalk.nil]
  7482. }),
  7483. smalltalk.ClassCategoryReader);
  7484. smalltalk.addMethod(
  7485. unescape('_class_category_'),
  7486. smalltalk.method({
  7487. selector: unescape('class%3Acategory%3A'),
  7488. category: 'accessing',
  7489. fn: function (aClass, aString){
  7490. var self=this;
  7491. self['@class']=aClass;
  7492. self['@category']=aString;
  7493. return self;},
  7494. args: ["aClass", "aString"],
  7495. source: unescape('class%3A%20aClass%20category%3A%20aString%0A%09class%20%3A%3D%20aClass.%0A%09category%20%3A%3D%20aString'),
  7496. messageSends: [],
  7497. referencedClasses: []
  7498. }),
  7499. smalltalk.ClassCategoryReader);
  7500. smalltalk.addMethod(
  7501. unescape('_scanFrom_'),
  7502. smalltalk.method({
  7503. selector: unescape('scanFrom%3A'),
  7504. category: 'fileIn',
  7505. fn: function (aChunkParser){
  7506. var self=this;
  7507. var chunk=nil;
  7508. (function(){while(!(function(){chunk=smalltalk.send(aChunkParser, "_nextChunk", []);return smalltalk.send(chunk, "_isEmpty", []);})()) {(function(){return smalltalk.send(self, "_compileMethod_", [chunk]);})()}})();
  7509. return self;},
  7510. args: ["aChunkParser"],
  7511. source: unescape('scanFrom%3A%20aChunkParser%0A%09%7C%20chunk%20%7C%0A%09%5Bchunk%20%3A%3D%20aChunkParser%20nextChunk.%0A%09chunk%20isEmpty%5D%20whileFalse%3A%20%5B%0A%09%20%20%20%20self%20compileMethod%3A%20chunk%5D'),
  7512. messageSends: ["whileFalse:", "nextChunk", "isEmpty", "compileMethod:"],
  7513. referencedClasses: []
  7514. }),
  7515. smalltalk.ClassCategoryReader);
  7516. smalltalk.addMethod(
  7517. unescape('_compileMethod_'),
  7518. smalltalk.method({
  7519. selector: unescape('compileMethod%3A'),
  7520. category: 'private',
  7521. fn: function (aString){
  7522. var self=this;
  7523. var method=nil;
  7524. method=smalltalk.send(smalltalk.send((smalltalk.Compiler || Compiler), "_new", []), "_load_forClass_", [aString, self['@class']]);
  7525. smalltalk.send(method, "_category_", [self['@category']]);
  7526. smalltalk.send(self['@class'], "_addCompiledMethod_", [method]);
  7527. return self;},
  7528. args: ["aString"],
  7529. source: unescape('compileMethod%3A%20aString%0A%09%7C%20method%20%7C%0A%09method%20%3A%3D%20Compiler%20new%20load%3A%20aString%20forClass%3A%20class.%0A%09method%20category%3A%20category.%0A%09class%20addCompiledMethod%3A%20method'),
  7530. messageSends: ["load:forClass:", "new", "category:", "addCompiledMethod:"],
  7531. referencedClasses: [smalltalk.nil]
  7532. }),
  7533. smalltalk.ClassCategoryReader);
  7534. smalltalk.addClass('Stream', smalltalk.Object, ['collection', 'position', 'streamSize'], 'Kernel');
  7535. smalltalk.addMethod(
  7536. unescape('_collection'),
  7537. smalltalk.method({
  7538. selector: unescape('collection'),
  7539. category: 'accessing',
  7540. fn: function (){
  7541. var self=this;
  7542. return self['@collection'];
  7543. return self;},
  7544. args: [],
  7545. source: unescape('collection%0A%09%5Ecollection'),
  7546. messageSends: [],
  7547. referencedClasses: []
  7548. }),
  7549. smalltalk.Stream);
  7550. smalltalk.addMethod(
  7551. unescape('_setCollection_'),
  7552. smalltalk.method({
  7553. selector: unescape('setCollection%3A'),
  7554. category: 'accessing',
  7555. fn: function (aCollection){
  7556. var self=this;
  7557. self['@collection']=aCollection;
  7558. return self;},
  7559. args: ["aCollection"],
  7560. source: unescape('setCollection%3A%20aCollection%0A%09collection%20%3A%3D%20aCollection'),
  7561. messageSends: [],
  7562. referencedClasses: []
  7563. }),
  7564. smalltalk.Stream);
  7565. smalltalk.addMethod(
  7566. unescape('_position'),
  7567. smalltalk.method({
  7568. selector: unescape('position'),
  7569. category: 'accessing',
  7570. fn: function (){
  7571. var self=this;
  7572. return (($receiver = self['@position']) == nil || $receiver == undefined) ? (function(){return self['@position']=(0);})() : $receiver;
  7573. return self;},
  7574. args: [],
  7575. source: unescape('position%0A%09%5Eposition%20ifNil%3A%20%5Bposition%20%3A%3D%200%5D'),
  7576. messageSends: ["ifNil:"],
  7577. referencedClasses: []
  7578. }),
  7579. smalltalk.Stream);
  7580. smalltalk.addMethod(
  7581. unescape('_position_'),
  7582. smalltalk.method({
  7583. selector: unescape('position%3A'),
  7584. category: 'accessing',
  7585. fn: function (anInteger){
  7586. var self=this;
  7587. self['@position']=anInteger;
  7588. return self;},
  7589. args: ["anInteger"],
  7590. source: unescape('position%3A%20anInteger%0A%09position%20%3A%3D%20anInteger'),
  7591. messageSends: [],
  7592. referencedClasses: []
  7593. }),
  7594. smalltalk.Stream);
  7595. smalltalk.addMethod(
  7596. unescape('_streamSize'),
  7597. smalltalk.method({
  7598. selector: unescape('streamSize'),
  7599. category: 'accessing',
  7600. fn: function (){
  7601. var self=this;
  7602. return self['@streamSize'];
  7603. return self;},
  7604. args: [],
  7605. source: unescape('streamSize%0A%09%5EstreamSize'),
  7606. messageSends: [],
  7607. referencedClasses: []
  7608. }),
  7609. smalltalk.Stream);
  7610. smalltalk.addMethod(
  7611. unescape('_setStreamSize_'),
  7612. smalltalk.method({
  7613. selector: unescape('setStreamSize%3A'),
  7614. category: 'accessing',
  7615. fn: function (anInteger){
  7616. var self=this;
  7617. self['@streamSize']=anInteger;
  7618. return self;},
  7619. args: ["anInteger"],
  7620. source: unescape('setStreamSize%3A%20anInteger%0A%09streamSize%20%3A%3D%20anInteger'),
  7621. messageSends: [],
  7622. referencedClasses: []
  7623. }),
  7624. smalltalk.Stream);
  7625. smalltalk.addMethod(
  7626. unescape('_contents'),
  7627. smalltalk.method({
  7628. selector: unescape('contents'),
  7629. category: 'accessing',
  7630. fn: function (){
  7631. var self=this;
  7632. return smalltalk.send(smalltalk.send(self, "_collection", []), "_copyFrom_to_", [(1), smalltalk.send(self, "_streamSize", [])]);
  7633. return self;},
  7634. args: [],
  7635. source: unescape('contents%0A%09%5Eself%20collection%0A%09%20%20%20%20copyFrom%3A%201%20%0A%09%20%20%20%20to%3A%20self%20streamSize'),
  7636. messageSends: ["copyFrom:to:", "collection", "streamSize"],
  7637. referencedClasses: []
  7638. }),
  7639. smalltalk.Stream);
  7640. smalltalk.addMethod(
  7641. unescape('_size'),
  7642. smalltalk.method({
  7643. selector: unescape('size'),
  7644. category: 'accessing',
  7645. fn: function (){
  7646. var self=this;
  7647. return smalltalk.send(self, "_streamSize", []);
  7648. return self;},
  7649. args: [],
  7650. source: unescape('size%0A%09%5Eself%20streamSize'),
  7651. messageSends: ["streamSize"],
  7652. referencedClasses: []
  7653. }),
  7654. smalltalk.Stream);
  7655. smalltalk.addMethod(
  7656. unescape('_reset'),
  7657. smalltalk.method({
  7658. selector: unescape('reset'),
  7659. category: 'actions',
  7660. fn: function (){
  7661. var self=this;
  7662. smalltalk.send(self, "_position_", [(0)]);
  7663. return self;},
  7664. args: [],
  7665. source: unescape('reset%0A%09self%20position%3A%200'),
  7666. messageSends: ["position:"],
  7667. referencedClasses: []
  7668. }),
  7669. smalltalk.Stream);
  7670. smalltalk.addMethod(
  7671. unescape('_close'),
  7672. smalltalk.method({
  7673. selector: unescape('close'),
  7674. category: 'actions',
  7675. fn: function (){
  7676. var self=this;
  7677. return self;},
  7678. args: [],
  7679. source: unescape('close'),
  7680. messageSends: [],
  7681. referencedClasses: []
  7682. }),
  7683. smalltalk.Stream);
  7684. smalltalk.addMethod(
  7685. unescape('_flush'),
  7686. smalltalk.method({
  7687. selector: unescape('flush'),
  7688. category: 'actions',
  7689. fn: function (){
  7690. var self=this;
  7691. return self;},
  7692. args: [],
  7693. source: unescape('flush'),
  7694. messageSends: [],
  7695. referencedClasses: []
  7696. }),
  7697. smalltalk.Stream);
  7698. smalltalk.addMethod(
  7699. unescape('_resetContents'),
  7700. smalltalk.method({
  7701. selector: unescape('resetContents'),
  7702. category: 'actions',
  7703. fn: function (){
  7704. var self=this;
  7705. smalltalk.send(self, "_reset", []);
  7706. smalltalk.send(self, "_setStreamSize_", [(0)]);
  7707. return self;},
  7708. args: [],
  7709. source: unescape('resetContents%0A%09self%20reset.%0A%09self%20setStreamSize%3A%200'),
  7710. messageSends: ["reset", "setStreamSize:"],
  7711. referencedClasses: []
  7712. }),
  7713. smalltalk.Stream);
  7714. smalltalk.addMethod(
  7715. unescape('_do_'),
  7716. smalltalk.method({
  7717. selector: unescape('do%3A'),
  7718. category: 'enumerating',
  7719. fn: function (aBlock){
  7720. var self=this;
  7721. (function(){while(!(function(){return smalltalk.send(self, "_atEnd", []);})()) {(function(){return smalltalk.send(aBlock, "_value_", [smalltalk.send(self, "_next", [])]);})()}})();
  7722. return self;},
  7723. args: ["aBlock"],
  7724. source: unescape('do%3A%20aBlock%0A%09%5Bself%20atEnd%5D%20whileFalse%3A%20%5BaBlock%20value%3A%20self%20next%5D'),
  7725. messageSends: ["whileFalse:", "atEnd", "value:", "next"],
  7726. referencedClasses: []
  7727. }),
  7728. smalltalk.Stream);
  7729. smalltalk.addMethod(
  7730. unescape('_setToEnd'),
  7731. smalltalk.method({
  7732. selector: unescape('setToEnd'),
  7733. category: 'positioning',
  7734. fn: function (){
  7735. var self=this;
  7736. smalltalk.send(self, "_position_", [smalltalk.send(self, "_size", [])]);
  7737. return self;},
  7738. args: [],
  7739. source: unescape('setToEnd%0A%09self%20position%3A%20self%20size'),
  7740. messageSends: ["position:", "size"],
  7741. referencedClasses: []
  7742. }),
  7743. smalltalk.Stream);
  7744. smalltalk.addMethod(
  7745. unescape('_skip_'),
  7746. smalltalk.method({
  7747. selector: unescape('skip%3A'),
  7748. category: 'positioning',
  7749. fn: function (anInteger){
  7750. var self=this;
  7751. smalltalk.send(self, "_position_", [smalltalk.send(((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +anInteger : smalltalk.send($receiver, "__plus", [anInteger])), "_min_max_", [smalltalk.send(self, "_size", []), (0)])]);
  7752. return self;},
  7753. args: ["anInteger"],
  7754. source: unescape('skip%3A%20anInteger%0A%09self%20position%3A%20%28%28self%20position%20+%20anInteger%29%20min%3A%20self%20size%20max%3A%200%29'),
  7755. messageSends: ["position:", "min:max:", unescape("+"), "position", "size"],
  7756. referencedClasses: []
  7757. }),
  7758. smalltalk.Stream);
  7759. smalltalk.addMethod(
  7760. unescape('_next'),
  7761. smalltalk.method({
  7762. selector: unescape('next'),
  7763. category: 'reading',
  7764. fn: function (){
  7765. var self=this;
  7766. smalltalk.send(self, "_position_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]);
  7767. return smalltalk.send(self['@collection'], "_at_", [smalltalk.send(self, "_position", [])]);
  7768. return self;},
  7769. args: [],
  7770. source: unescape('next%0A%09self%20position%3A%20self%20position%20+%201.%20%0A%09%5Ecollection%20at%3A%20self%20position'),
  7771. messageSends: ["position:", unescape("+"), "position", "at:"],
  7772. referencedClasses: []
  7773. }),
  7774. smalltalk.Stream);
  7775. smalltalk.addMethod(
  7776. unescape('_next_'),
  7777. smalltalk.method({
  7778. selector: unescape('next%3A'),
  7779. category: 'reading',
  7780. fn: function (anInteger){
  7781. var self=this;
  7782. var tempCollection=nil;
  7783. tempCollection=smalltalk.send(smalltalk.send(smalltalk.send(self, "_collection", []), "_class", []), "_new", []);
  7784. smalltalk.send(anInteger, "_timesRepeat_", [(function(){return ((($receiver = smalltalk.send(self, "_atEnd", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(tempCollection, "_add_", [smalltalk.send(self, "_next", [])]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(tempCollection, "_add_", [smalltalk.send(self, "_next", [])]);})]));})]);
  7785. return tempCollection;
  7786. return self;},
  7787. args: ["anInteger"],
  7788. source: unescape('next%3A%20anInteger%0A%09%7C%20tempCollection%20%7C%0A%09tempCollection%20%3A%3D%20self%20collection%20class%20new.%0A%09anInteger%20timesRepeat%3A%20%5B%0A%09%20%20%20%20self%20atEnd%20ifFalse%3A%20%5B%0A%09%09tempCollection%20add%3A%20self%20next%5D%5D.%0A%09%5EtempCollection'),
  7789. messageSends: ["new", "class", "collection", "timesRepeat:", "ifFalse:", "atEnd", "add:", "next"],
  7790. referencedClasses: []
  7791. }),
  7792. smalltalk.Stream);
  7793. smalltalk.addMethod(
  7794. unescape('_nextPut_'),
  7795. smalltalk.method({
  7796. selector: unescape('nextPut%3A'),
  7797. category: 'writing',
  7798. fn: function (anObject){
  7799. var self=this;
  7800. smalltalk.send(self, "_position_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]);
  7801. smalltalk.send(smalltalk.send(self, "_collection", []), "_at_put_", [smalltalk.send(self, "_position", []), anObject]);
  7802. smalltalk.send(self, "_setStreamSize_", [smalltalk.send(smalltalk.send(self, "_streamSize", []), "_max_", [smalltalk.send(self, "_position", [])])]);
  7803. return self;},
  7804. args: ["anObject"],
  7805. source: unescape('nextPut%3A%20anObject%0A%09self%20position%3A%20self%20position%20+%201.%0A%09self%20collection%20at%3A%20self%20position%20put%3A%20anObject.%0A%09self%20setStreamSize%3A%20%28self%20streamSize%20max%3A%20self%20position%29'),
  7806. messageSends: ["position:", unescape("+"), "position", "at:put:", "collection", "setStreamSize:", "max:", "streamSize"],
  7807. referencedClasses: []
  7808. }),
  7809. smalltalk.Stream);
  7810. smalltalk.addMethod(
  7811. unescape('_nextPutAll_'),
  7812. smalltalk.method({
  7813. selector: unescape('nextPutAll%3A'),
  7814. category: 'writing',
  7815. fn: function (aCollection){
  7816. var self=this;
  7817. smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send(self, "_nextPut_", [each]);})]);
  7818. return self;},
  7819. args: ["aCollection"],
  7820. source: unescape('nextPutAll%3A%20aCollection%0A%09aCollection%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20self%20nextPut%3A%20each%5D'),
  7821. messageSends: ["do:", "nextPut:"],
  7822. referencedClasses: []
  7823. }),
  7824. smalltalk.Stream);
  7825. smalltalk.addMethod(
  7826. unescape('_peek'),
  7827. smalltalk.method({
  7828. selector: unescape('peek'),
  7829. category: 'reading',
  7830. fn: function (){
  7831. var self=this;
  7832. return ((($receiver = smalltalk.send(self, "_atEnd", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(smalltalk.send(self, "_collection", []), "_at_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(self, "_collection", []), "_at_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]);})]));
  7833. return self;},
  7834. args: [],
  7835. source: unescape('peek%0A%09%5Eself%20atEnd%20ifFalse%3A%20%5B%0A%09%20%20%20%20self%20collection%20at%3A%20self%20position%20+%201%5D'),
  7836. messageSends: ["ifFalse:", "atEnd", "at:", "collection", unescape("+"), "position"],
  7837. referencedClasses: []
  7838. }),
  7839. smalltalk.Stream);
  7840. smalltalk.addMethod(
  7841. unescape('_atEnd'),
  7842. smalltalk.method({
  7843. selector: unescape('atEnd'),
  7844. category: 'testing',
  7845. fn: function (){
  7846. var self=this;
  7847. return smalltalk.send(smalltalk.send(self, "_position", []), "__eq", [smalltalk.send(self, "_size", [])]);
  7848. return self;},
  7849. args: [],
  7850. source: unescape('atEnd%0A%09%5Eself%20position%20%3D%20self%20size'),
  7851. messageSends: [unescape("%3D"), "position", "size"],
  7852. referencedClasses: []
  7853. }),
  7854. smalltalk.Stream);
  7855. smalltalk.addMethod(
  7856. unescape('_atStart'),
  7857. smalltalk.method({
  7858. selector: unescape('atStart'),
  7859. category: 'testing',
  7860. fn: function (){
  7861. var self=this;
  7862. return smalltalk.send(smalltalk.send(self, "_position", []), "__eq", [(0)]);
  7863. return self;},
  7864. args: [],
  7865. source: unescape('atStart%0A%09%5Eself%20position%20%3D%200'),
  7866. messageSends: [unescape("%3D"), "position"],
  7867. referencedClasses: []
  7868. }),
  7869. smalltalk.Stream);
  7870. smalltalk.addMethod(
  7871. unescape('_isEmpty'),
  7872. smalltalk.method({
  7873. selector: unescape('isEmpty'),
  7874. category: 'testing',
  7875. fn: function (){
  7876. var self=this;
  7877. return smalltalk.send(smalltalk.send(self, "_size", []), "__eq", [(0)]);
  7878. return self;},
  7879. args: [],
  7880. source: unescape('isEmpty%0A%09%5Eself%20size%20%3D%200'),
  7881. messageSends: [unescape("%3D"), "size"],
  7882. referencedClasses: []
  7883. }),
  7884. smalltalk.Stream);
  7885. smalltalk.addMethod(
  7886. unescape('_on_'),
  7887. smalltalk.method({
  7888. selector: unescape('on%3A'),
  7889. category: 'instance creation',
  7890. fn: function (aCollection){
  7891. var self=this;
  7892. return (function($rec){smalltalk.send($rec, "_setCollection_", [aCollection]);smalltalk.send($rec, "_setStreamSize_", [smalltalk.send(aCollection, "_size", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", []));
  7893. return self;},
  7894. args: ["aCollection"],
  7895. source: unescape('on%3A%20aCollection%0A%09%20%20%20%20%5Eself%20new%20%0A%09%09setCollection%3A%20aCollection%3B%0A%09%09setStreamSize%3A%20aCollection%20size%3B%0A%09%09yourself'),
  7896. messageSends: ["setCollection:", "setStreamSize:", "size", "yourself", "new"],
  7897. referencedClasses: []
  7898. }),
  7899. smalltalk.Stream.klass);
  7900. smalltalk.addClass('StringStream', smalltalk.Stream, [], 'Kernel');
  7901. smalltalk.addMethod(
  7902. unescape('_next_'),
  7903. smalltalk.method({
  7904. selector: unescape('next%3A'),
  7905. category: 'reading',
  7906. fn: function (anInteger){
  7907. var self=this;
  7908. var tempCollection=nil;
  7909. tempCollection=smalltalk.send(smalltalk.send(smalltalk.send(self, "_collection", []), "_class", []), "_new", []);
  7910. smalltalk.send(anInteger, "_timesRepeat_", [(function(){return ((($receiver = smalltalk.send(self, "_atEnd", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return tempCollection=smalltalk.send(tempCollection, "__comma", [smalltalk.send(self, "_next", [])]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return tempCollection=smalltalk.send(tempCollection, "__comma", [smalltalk.send(self, "_next", [])]);})]));})]);
  7911. return tempCollection;
  7912. return self;},
  7913. args: ["anInteger"],
  7914. source: unescape('next%3A%20anInteger%0A%09%7C%20tempCollection%20%7C%0A%09tempCollection%20%3A%3D%20self%20collection%20class%20new.%0A%09anInteger%20timesRepeat%3A%20%5B%0A%09%20%20%20%20self%20atEnd%20ifFalse%3A%20%5B%0A%09%09tempCollection%20%3A%3D%20tempCollection%2C%20self%20next%5D%5D.%0A%09%5EtempCollection'),
  7915. messageSends: ["new", "class", "collection", "timesRepeat:", "ifFalse:", "atEnd", unescape("%2C"), "next"],
  7916. referencedClasses: []
  7917. }),
  7918. smalltalk.StringStream);
  7919. smalltalk.addMethod(
  7920. unescape('_nextPut_'),
  7921. smalltalk.method({
  7922. selector: unescape('nextPut%3A'),
  7923. category: 'writing',
  7924. fn: function (aString){
  7925. var self=this;
  7926. smalltalk.send(self, "_nextPutAll_", [aString]);
  7927. return self;},
  7928. args: ["aString"],
  7929. source: unescape('nextPut%3A%20aString%0A%09self%20nextPutAll%3A%20aString'),
  7930. messageSends: ["nextPutAll:"],
  7931. referencedClasses: []
  7932. }),
  7933. smalltalk.StringStream);
  7934. smalltalk.addMethod(
  7935. unescape('_nextPutAll_'),
  7936. smalltalk.method({
  7937. selector: unescape('nextPutAll%3A'),
  7938. category: 'writing',
  7939. fn: function (aString){
  7940. var self=this;
  7941. smalltalk.send(self, "_setCollection_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_collection", []), "_copyFrom_to_", [(1), smalltalk.send(self, "_position", [])]), "__comma", [aString]), "__comma", [smalltalk.send(smalltalk.send(self, "_collection", []), "_copyFrom_to_", [((($receiver = ((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))).klass === smalltalk.Number) ? $receiver +smalltalk.send(aString, "_size", []) : smalltalk.send($receiver, "__plus", [smalltalk.send(aString, "_size", [])])), smalltalk.send(smalltalk.send(self, "_collection", []), "_size", [])])])]);
  7942. smalltalk.send(self, "_position_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +smalltalk.send(aString, "_size", []) : smalltalk.send($receiver, "__plus", [smalltalk.send(aString, "_size", [])]))]);
  7943. smalltalk.send(self, "_setStreamSize_", [smalltalk.send(smalltalk.send(self, "_streamSize", []), "_max_", [smalltalk.send(self, "_position", [])])]);
  7944. return self;},
  7945. args: ["aString"],
  7946. source: unescape('nextPutAll%3A%20aString%0A%09self%20setCollection%3A%20%0A%09%20%20%20%20%28self%20collection%20copyFrom%3A%201%20to%3A%20self%20position%29%2C%0A%09%20%20%20%20aString%2C%0A%09%20%20%20%20%28self%20collection%20copyFrom%3A%20%28self%20position%20+%201%20+%20aString%20size%29%20to%3A%20self%20collection%20size%29.%0A%09self%20position%3A%20self%20position%20+%20aString%20size.%0A%09self%20setStreamSize%3A%20%28self%20streamSize%20max%3A%20self%20position%29'),
  7947. messageSends: ["setCollection:", unescape("%2C"), "copyFrom:to:", "collection", "position", unescape("+"), "size", "position:", "setStreamSize:", "max:", "streamSize"],
  7948. referencedClasses: []
  7949. }),
  7950. smalltalk.StringStream);
  7951. smalltalk.addMethod(
  7952. unescape('_cr'),
  7953. smalltalk.method({
  7954. selector: unescape('cr'),
  7955. category: 'writing',
  7956. fn: function (){
  7957. var self=this;
  7958. return smalltalk.send(self, "_nextPutAll_", [smalltalk.send((smalltalk.String || String), "_cr", [])]);
  7959. return self;},
  7960. args: [],
  7961. source: unescape('cr%0A%09%5Eself%20nextPutAll%3A%20String%20cr'),
  7962. messageSends: ["nextPutAll:", "cr"],
  7963. referencedClasses: [smalltalk.String]
  7964. }),
  7965. smalltalk.StringStream);
  7966. smalltalk.addMethod(
  7967. unescape('_crlf'),
  7968. smalltalk.method({
  7969. selector: unescape('crlf'),
  7970. category: 'writing',
  7971. fn: function (){
  7972. var self=this;
  7973. return smalltalk.send(self, "_nextPutAll_", [smalltalk.send((smalltalk.String || String), "_crlf", [])]);
  7974. return self;},
  7975. args: [],
  7976. source: unescape('crlf%0A%09%5Eself%20nextPutAll%3A%20String%20crlf'),
  7977. messageSends: ["nextPutAll:", "crlf"],
  7978. referencedClasses: [smalltalk.String]
  7979. }),
  7980. smalltalk.StringStream);
  7981. smalltalk.addMethod(
  7982. unescape('_lf'),
  7983. smalltalk.method({
  7984. selector: unescape('lf'),
  7985. category: 'writing',
  7986. fn: function (){
  7987. var self=this;
  7988. return smalltalk.send(self, "_nextPutAll_", [smalltalk.send((smalltalk.String || String), "_lf", [])]);
  7989. return self;},
  7990. args: [],
  7991. source: unescape('lf%0A%09%5Eself%20nextPutAll%3A%20String%20lf'),
  7992. messageSends: ["nextPutAll:", "lf"],
  7993. referencedClasses: [smalltalk.String]
  7994. }),
  7995. smalltalk.StringStream);
  7996. smalltalk.addMethod(
  7997. unescape('_space'),
  7998. smalltalk.method({
  7999. selector: unescape('space'),
  8000. category: 'writing',
  8001. fn: function (){
  8002. var self=this;
  8003. smalltalk.send(self, "_nextPut_", [" "]);
  8004. return self;},
  8005. args: [],
  8006. source: unescape('space%0A%09self%20nextPut%3A%20%27%20%27'),
  8007. messageSends: ["nextPut:"],
  8008. referencedClasses: []
  8009. }),
  8010. smalltalk.StringStream);
  8011. smalltalk.addClass('ClassCommentReader', smalltalk.Object, ['class', 'chunkParser'], 'Kernel');
  8012. smalltalk.addMethod(
  8013. unescape('_class_'),
  8014. smalltalk.method({
  8015. selector: unescape('class%3A'),
  8016. category: 'accessing',
  8017. fn: function (aClass){
  8018. var self=this;
  8019. self['@class']=aClass;
  8020. return self;},
  8021. args: ["aClass"],
  8022. source: unescape('class%3A%20aClass%0A%09class%20%3A%3D%20aClass'),
  8023. messageSends: [],
  8024. referencedClasses: []
  8025. }),
  8026. smalltalk.ClassCommentReader);
  8027. smalltalk.addMethod(
  8028. unescape('_scanFrom_'),
  8029. smalltalk.method({
  8030. selector: unescape('scanFrom%3A'),
  8031. category: 'fileIn',
  8032. fn: function (aChunkParser){
  8033. var self=this;
  8034. var chunk=nil;
  8035. chunk=smalltalk.send(aChunkParser, "_nextChunk", []);
  8036. ((($receiver = smalltalk.send(chunk, "_isEmpty", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self, "_setComment_", [chunk]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self, "_setComment_", [chunk]);})]));
  8037. return self;},
  8038. args: ["aChunkParser"],
  8039. source: unescape('scanFrom%3A%20aChunkParser%0A%09%7C%20chunk%20%7C%0A%09chunk%20%3A%3D%20aChunkParser%20nextChunk.%0A%09chunk%20isEmpty%20ifFalse%3A%20%5B%0A%09%20%20%20%20self%20setComment%3A%20chunk%5D.'),
  8040. messageSends: ["nextChunk", "ifFalse:", "isEmpty", "setComment:"],
  8041. referencedClasses: []
  8042. }),
  8043. smalltalk.ClassCommentReader);
  8044. smalltalk.addMethod(
  8045. unescape('_initialize'),
  8046. smalltalk.method({
  8047. selector: unescape('initialize'),
  8048. category: 'initialization',
  8049. fn: function (){
  8050. var self=this;
  8051. smalltalk.send(self, "_initialize", [], smalltalk.Object);
  8052. self['@chunkParser']=smalltalk.send((smalltalk.ChunkParser || ChunkParser), "_new", []);
  8053. return self;},
  8054. args: [],
  8055. source: unescape('initialize%0A%09super%20initialize.%0A%09chunkParser%20%3A%3D%20ChunkParser%20new.'),
  8056. messageSends: ["initialize", "new"],
  8057. referencedClasses: [smalltalk.nil]
  8058. }),
  8059. smalltalk.ClassCommentReader);
  8060. smalltalk.addMethod(
  8061. unescape('_setComment_'),
  8062. smalltalk.method({
  8063. selector: unescape('setComment%3A'),
  8064. category: 'private',
  8065. fn: function (aString){
  8066. var self=this;
  8067. smalltalk.send(self['@class'], "_comment_", [aString]);
  8068. return self;},
  8069. args: ["aString"],
  8070. source: unescape('setComment%3A%20aString%0A%20%20%20%20class%20comment%3A%20aString'),
  8071. messageSends: ["comment:"],
  8072. referencedClasses: []
  8073. }),
  8074. smalltalk.ClassCommentReader);
  8075. smalltalk.addClass('Random', smalltalk.Object, [], 'Kernel');
  8076. smalltalk.addMethod(
  8077. unescape('_next'),
  8078. smalltalk.method({
  8079. selector: unescape('next'),
  8080. category: 'accessing',
  8081. fn: function (){
  8082. var self=this;
  8083. return Math.random();
  8084. return self;},
  8085. args: [],
  8086. source: unescape('next%0A%09%3Creturn%20Math.random%28%29%3E'),
  8087. messageSends: [],
  8088. referencedClasses: []
  8089. }),
  8090. smalltalk.Random);
  8091. smalltalk.addMethod(
  8092. unescape('_next_'),
  8093. smalltalk.method({
  8094. selector: unescape('next%3A'),
  8095. category: 'accessing',
  8096. fn: function (anInteger){
  8097. var self=this;
  8098. return smalltalk.send(smalltalk.send((1), "_to_", [anInteger]), "_collect_", [(function(each){return smalltalk.send(self, "_next", []);})]);
  8099. return self;},
  8100. args: ["anInteger"],
  8101. source: unescape('next%3A%20anInteger%0A%20%20%20%20%5E%281%20to%3A%20anInteger%29%20collect%3A%20%5B%3Aeach%20%7C%20self%20next%5D'),
  8102. messageSends: ["collect:", "to:", "next"],
  8103. referencedClasses: []
  8104. }),
  8105. smalltalk.Random);
  8106. smalltalk.addClass('Point', smalltalk.Object, ['x', 'y'], 'Kernel');
  8107. smalltalk.addMethod(
  8108. unescape('_x'),
  8109. smalltalk.method({
  8110. selector: unescape('x'),
  8111. category: 'accessing',
  8112. fn: function (){
  8113. var self=this;
  8114. return self['@x'];
  8115. return self;},
  8116. args: [],
  8117. source: unescape('x%0A%09%5Ex'),
  8118. messageSends: [],
  8119. referencedClasses: []
  8120. }),
  8121. smalltalk.Point);
  8122. smalltalk.addMethod(
  8123. unescape('_y'),
  8124. smalltalk.method({
  8125. selector: unescape('y'),
  8126. category: 'accessing',
  8127. fn: function (){
  8128. var self=this;
  8129. return self['@y'];
  8130. return self;},
  8131. args: [],
  8132. source: unescape('y%0A%09%5Ey'),
  8133. messageSends: [],
  8134. referencedClasses: []
  8135. }),
  8136. smalltalk.Point);
  8137. smalltalk.addMethod(
  8138. unescape('_y_'),
  8139. smalltalk.method({
  8140. selector: unescape('y%3A'),
  8141. category: 'accessing',
  8142. fn: function (aNumber){
  8143. var self=this;
  8144. self['@y']=aNumber;
  8145. return self;},
  8146. args: ["aNumber"],
  8147. source: unescape('y%3A%20aNumber%0A%09y%20%3A%3D%20aNumber'),
  8148. messageSends: [],
  8149. referencedClasses: []
  8150. }),
  8151. smalltalk.Point);
  8152. smalltalk.addMethod(
  8153. unescape('_x_'),
  8154. smalltalk.method({
  8155. selector: unescape('x%3A'),
  8156. category: 'accessing',
  8157. fn: function (aNumber){
  8158. var self=this;
  8159. self['@x']=aNumber;
  8160. return self;},
  8161. args: ["aNumber"],
  8162. source: unescape('x%3A%20aNumber%0A%09x%20%3A%3D%20aNumber'),
  8163. messageSends: [],
  8164. referencedClasses: []
  8165. }),
  8166. smalltalk.Point);
  8167. smalltalk.addMethod(
  8168. unescape('__star'),
  8169. smalltalk.method({
  8170. selector: unescape('*'),
  8171. category: 'arithmetic',
  8172. fn: function (aPoint){
  8173. var self=this;
  8174. return smalltalk.send((smalltalk.Point || Point), "_x_y_", [((($receiver = smalltalk.send(self, "_x", [])).klass === smalltalk.Number) ? $receiver *smalltalk.send(smalltalk.send(aPoint, "_asPoint", []), "_x", []) : smalltalk.send($receiver, "__star", [smalltalk.send(smalltalk.send(aPoint, "_asPoint", []), "_x", [])])), ((($receiver = smalltalk.send(self, "_y", [])).klass === smalltalk.Number) ? $receiver *smalltalk.send(smalltalk.send(aPoint, "_asPoint", []), "_y", []) : smalltalk.send($receiver, "__star", [smalltalk.send(smalltalk.send(aPoint, "_asPoint", []), "_y", [])]))]);
  8175. return self;},
  8176. args: ["aPoint"],
  8177. source: unescape('*%20aPoint%0A%09%5EPoint%20x%3A%20self%20x%20*%20aPoint%20asPoint%20x%20y%3A%20self%20y%20*%20aPoint%20asPoint%20y'),
  8178. messageSends: ["x:y:", unescape("*"), "x", "asPoint", "y"],
  8179. referencedClasses: [smalltalk.Point]
  8180. }),
  8181. smalltalk.Point);
  8182. smalltalk.addMethod(
  8183. unescape('__plus'),
  8184. smalltalk.method({
  8185. selector: unescape('+'),
  8186. category: 'arithmetic',
  8187. fn: function (aPoint){
  8188. var self=this;
  8189. return smalltalk.send((smalltalk.Point || Point), "_x_y_", [((($receiver = smalltalk.send(self, "_x", [])).klass === smalltalk.Number) ? $receiver +smalltalk.send(smalltalk.send(aPoint, "_asPoint", []), "_x", []) : smalltalk.send($receiver, "__plus", [smalltalk.send(smalltalk.send(aPoint, "_asPoint", []), "_x", [])])), ((($receiver = smalltalk.send(self, "_y", [])).klass === smalltalk.Number) ? $receiver +smalltalk.send(smalltalk.send(aPoint, "_asPoint", []), "_y", []) : smalltalk.send($receiver, "__plus", [smalltalk.send(smalltalk.send(aPoint, "_asPoint", []), "_y", [])]))]);
  8190. return self;},
  8191. args: ["aPoint"],
  8192. source: unescape('+%20aPoint%0A%09%5EPoint%20x%3A%20self%20x%20+%20aPoint%20asPoint%20x%20y%3A%20self%20y%20+%20aPoint%20asPoint%20y'),
  8193. messageSends: ["x:y:", unescape("+"), "x", "asPoint", "y"],
  8194. referencedClasses: [smalltalk.Point]
  8195. }),
  8196. smalltalk.Point);
  8197. smalltalk.addMethod(
  8198. unescape('__minus'),
  8199. smalltalk.method({
  8200. selector: unescape('-'),
  8201. category: 'arithmetic',
  8202. fn: function (aPoint){
  8203. var self=this;
  8204. return smalltalk.send((smalltalk.Point || Point), "_x_y_", [((($receiver = smalltalk.send(self, "_x", [])).klass === smalltalk.Number) ? $receiver -smalltalk.send(smalltalk.send(aPoint, "_asPoint", []), "_x", []) : smalltalk.send($receiver, "__minus", [smalltalk.send(smalltalk.send(aPoint, "_asPoint", []), "_x", [])])), ((($receiver = smalltalk.send(self, "_y", [])).klass === smalltalk.Number) ? $receiver -smalltalk.send(smalltalk.send(aPoint, "_asPoint", []), "_y", []) : smalltalk.send($receiver, "__minus", [smalltalk.send(smalltalk.send(aPoint, "_asPoint", []), "_y", [])]))]);
  8205. return self;},
  8206. args: ["aPoint"],
  8207. source: unescape('-%20aPoint%0A%09%5EPoint%20x%3A%20self%20x%20-%20aPoint%20asPoint%20x%20y%3A%20self%20y%20-%20aPoint%20asPoint%20y'),
  8208. messageSends: ["x:y:", unescape("-"), "x", "asPoint", "y"],
  8209. referencedClasses: [smalltalk.Point]
  8210. }),
  8211. smalltalk.Point);
  8212. smalltalk.addMethod(
  8213. unescape('__slash'),
  8214. smalltalk.method({
  8215. selector: unescape('/'),
  8216. category: 'arithmetic',
  8217. fn: function (aPoint){
  8218. var self=this;
  8219. return smalltalk.send((smalltalk.Point || Point), "_x_y_", [((($receiver = smalltalk.send(self, "_x", [])).klass === smalltalk.Number) ? $receiver /smalltalk.send(smalltalk.send(aPoint, "_asPoint", []), "_x", []) : smalltalk.send($receiver, "__slash", [smalltalk.send(smalltalk.send(aPoint, "_asPoint", []), "_x", [])])), ((($receiver = smalltalk.send(self, "_y", [])).klass === smalltalk.Number) ? $receiver /smalltalk.send(smalltalk.send(aPoint, "_asPoint", []), "_y", []) : smalltalk.send($receiver, "__slash", [smalltalk.send(smalltalk.send(aPoint, "_asPoint", []), "_y", [])]))]);
  8220. return self;},
  8221. args: ["aPoint"],
  8222. source: unescape('/%20aPoint%0A%09%5EPoint%20x%3A%20self%20x%20/%20aPoint%20asPoint%20x%20y%3A%20self%20y%20/%20aPoint%20asPoint%20y'),
  8223. messageSends: ["x:y:", unescape("/"), "x", "asPoint", "y"],
  8224. referencedClasses: [smalltalk.Point]
  8225. }),
  8226. smalltalk.Point);
  8227. smalltalk.addMethod(
  8228. unescape('_asPoint'),
  8229. smalltalk.method({
  8230. selector: unescape('asPoint'),
  8231. category: 'converting',
  8232. fn: function (){
  8233. var self=this;
  8234. return self;
  8235. return self;},
  8236. args: [],
  8237. source: unescape('asPoint%0A%09%5Eself'),
  8238. messageSends: [],
  8239. referencedClasses: []
  8240. }),
  8241. smalltalk.Point);
  8242. smalltalk.addMethod(
  8243. unescape('__eq'),
  8244. smalltalk.method({
  8245. selector: unescape('%3D'),
  8246. category: 'arithmetic',
  8247. fn: function (aPoint){
  8248. var self=this;
  8249. return smalltalk.send(smalltalk.send(smalltalk.send(aPoint, "_class", []), "__eq", [smalltalk.send(self, "_class", [])]), "_and_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(aPoint, "_x", []), "__eq", [smalltalk.send(self, "_x", [])]), "_&", [smalltalk.send(smalltalk.send(aPoint, "_y", []), "__eq", [smalltalk.send(self, "_y", [])])]);})]);
  8250. return self;},
  8251. args: ["aPoint"],
  8252. source: unescape('%3D%20aPoint%0A%09%5EaPoint%20class%20%3D%20self%20class%20and%3A%20%5B%0A%09%09%28aPoint%20x%20%3D%20self%20x%29%20%26%20%28aPoint%20y%20%3D%20self%20y%29%5D'),
  8253. messageSends: ["and:", unescape("%3D"), "class", unescape("%26"), "x", "y"],
  8254. referencedClasses: []
  8255. }),
  8256. smalltalk.Point);
  8257. smalltalk.addMethod(
  8258. unescape('_x_y_'),
  8259. smalltalk.method({
  8260. selector: unescape('x%3Ay%3A'),
  8261. category: 'instance creation',
  8262. fn: function (aNumber, anotherNumber){
  8263. var self=this;
  8264. return (function($rec){smalltalk.send($rec, "_x_", [aNumber]);smalltalk.send($rec, "_y_", [anotherNumber]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", []));
  8265. return self;},
  8266. args: ["aNumber", "anotherNumber"],
  8267. source: unescape('x%3A%20aNumber%20y%3A%20anotherNumber%0A%09%5Eself%20new%0A%09%09x%3A%20aNumber%3B%0A%09%09y%3A%20anotherNumber%3B%0A%09%09yourself'),
  8268. messageSends: ["x:", "y:", "yourself", "new"],
  8269. referencedClasses: []
  8270. }),
  8271. smalltalk.Point.klass);
  8272. smalltalk.addClass('Message', smalltalk.Object, ['selector', 'arguments'], 'Kernel');
  8273. smalltalk.addMethod(
  8274. unescape('_selector'),
  8275. smalltalk.method({
  8276. selector: unescape('selector'),
  8277. category: 'accessing',
  8278. fn: function (){
  8279. var self=this;
  8280. return self['@selector'];
  8281. return self;},
  8282. args: [],
  8283. source: unescape('selector%0A%09%5Eselector'),
  8284. messageSends: [],
  8285. referencedClasses: []
  8286. }),
  8287. smalltalk.Message);
  8288. smalltalk.addMethod(
  8289. unescape('_selector_'),
  8290. smalltalk.method({
  8291. selector: unescape('selector%3A'),
  8292. category: 'accessing',
  8293. fn: function (aString){
  8294. var self=this;
  8295. self['@selector']=aString;
  8296. return self;},
  8297. args: ["aString"],
  8298. source: unescape('selector%3A%20aString%0A%09selector%20%3A%3D%20aString'),
  8299. messageSends: [],
  8300. referencedClasses: []
  8301. }),
  8302. smalltalk.Message);
  8303. smalltalk.addMethod(
  8304. unescape('_arguments_'),
  8305. smalltalk.method({
  8306. selector: unescape('arguments%3A'),
  8307. category: 'accessing',
  8308. fn: function (anArray){
  8309. var self=this;
  8310. self['@arguments']=anArray;
  8311. return self;},
  8312. args: ["anArray"],
  8313. source: unescape('arguments%3A%20anArray%0A%09arguments%20%3A%3D%20anArray'),
  8314. messageSends: [],
  8315. referencedClasses: []
  8316. }),
  8317. smalltalk.Message);
  8318. smalltalk.addMethod(
  8319. unescape('_arguments'),
  8320. smalltalk.method({
  8321. selector: unescape('arguments'),
  8322. category: 'accessing',
  8323. fn: function (){
  8324. var self=this;
  8325. return self['@arguments'];
  8326. return self;},
  8327. args: [],
  8328. source: unescape('arguments%0A%09%5Earguments'),
  8329. messageSends: [],
  8330. referencedClasses: []
  8331. }),
  8332. smalltalk.Message);
  8333. smalltalk.addMethod(
  8334. unescape('_printString'),
  8335. smalltalk.method({
  8336. selector: unescape('printString'),
  8337. category: 'printing',
  8338. fn: function (){
  8339. var self=this;
  8340. return smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(aStream){return (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(self, "_printString", [], smalltalk.Object)]);smalltalk.send($rec, "_nextPutAll_", [unescape("%28")]);smalltalk.send($rec, "_nextPutAll_", [self['@selector']]);return smalltalk.send($rec, "_nextPutAll_", [unescape("%29")]);})(aStream);})]);
  8341. return self;},
  8342. args: [],
  8343. source: unescape('printString%0A%09%5E%20String%20streamContents%3A%20%5B%3AaStream%7C%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09%09%09aStream%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09%09%09%09nextPutAll%3A%20super%20printString%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09%09%09%09nextPutAll%3A%20%27%28%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09%09%09%09nextPutAll%3A%20selector%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09%09%09%09nextPutAll%3A%20%27%29%27%20%09%09%09%09%5D'),
  8344. messageSends: ["streamContents:", "nextPutAll:", "printString"],
  8345. referencedClasses: [smalltalk.String]
  8346. }),
  8347. smalltalk.Message);
  8348. smalltalk.addMethod(
  8349. unescape('_selector_arguments_'),
  8350. smalltalk.method({
  8351. selector: unescape('selector%3Aarguments%3A'),
  8352. category: 'instance creation',
  8353. fn: function (aString, anArray){
  8354. var self=this;
  8355. return (function($rec){smalltalk.send($rec, "_selector_", [aString]);smalltalk.send($rec, "_arguments_", [anArray]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", []));
  8356. return self;},
  8357. args: ["aString", "anArray"],
  8358. source: unescape('selector%3A%20aString%20arguments%3A%20anArray%0A%09%5Eself%20new%0A%09%09selector%3A%20aString%3B%0A%09%09arguments%3A%20anArray%3B%0A%09%09yourself'),
  8359. messageSends: ["selector:", "arguments:", "yourself", "new"],
  8360. referencedClasses: []
  8361. }),
  8362. smalltalk.Message.klass);
  8363. smalltalk.addClass('MessageNotUnderstood', smalltalk.Error, ['message', 'receiver'], 'Kernel');
  8364. smalltalk.addMethod(
  8365. unescape('_message'),
  8366. smalltalk.method({
  8367. selector: unescape('message'),
  8368. category: 'accessing',
  8369. fn: function (){
  8370. var self=this;
  8371. return self['@message'];
  8372. return self;},
  8373. args: [],
  8374. source: unescape('message%0A%09%5Emessage'),
  8375. messageSends: [],
  8376. referencedClasses: []
  8377. }),
  8378. smalltalk.MessageNotUnderstood);
  8379. smalltalk.addMethod(
  8380. unescape('_message_'),
  8381. smalltalk.method({
  8382. selector: unescape('message%3A'),
  8383. category: 'accessing',
  8384. fn: function (aMessage){
  8385. var self=this;
  8386. self['@message']=aMessage;
  8387. return self;},
  8388. args: ["aMessage"],
  8389. source: unescape('message%3A%20aMessage%0A%09message%20%3A%3D%20aMessage'),
  8390. messageSends: [],
  8391. referencedClasses: []
  8392. }),
  8393. smalltalk.MessageNotUnderstood);
  8394. smalltalk.addMethod(
  8395. unescape('_receiver'),
  8396. smalltalk.method({
  8397. selector: unescape('receiver'),
  8398. category: 'accessing',
  8399. fn: function (){
  8400. var self=this;
  8401. return self['@receiver'];
  8402. return self;},
  8403. args: [],
  8404. source: unescape('receiver%0A%09%5Ereceiver'),
  8405. messageSends: [],
  8406. referencedClasses: []
  8407. }),
  8408. smalltalk.MessageNotUnderstood);
  8409. smalltalk.addMethod(
  8410. unescape('_receiver_'),
  8411. smalltalk.method({
  8412. selector: unescape('receiver%3A'),
  8413. category: 'accessing',
  8414. fn: function (anObject){
  8415. var self=this;
  8416. self['@receiver']=anObject;
  8417. return self;},
  8418. args: ["anObject"],
  8419. source: unescape('receiver%3A%20anObject%0A%09receiver%20%3A%3D%20anObject'),
  8420. messageSends: [],
  8421. referencedClasses: []
  8422. }),
  8423. smalltalk.MessageNotUnderstood);
  8424. smalltalk.addMethod(
  8425. unescape('_messageText'),
  8426. smalltalk.method({
  8427. selector: unescape('messageText'),
  8428. category: 'accessing',
  8429. fn: function (){
  8430. var self=this;
  8431. return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_receiver", []), "_asString", []), "__comma", [unescape("%20does%20not%20understand%20%23")]), "__comma", [smalltalk.send(smalltalk.send(self, "_message", []), "_selector", [])]);
  8432. return self;},
  8433. args: [],
  8434. source: unescape('messageText%0A%09%5Eself%20receiver%20asString%2C%20%27%20does%20not%20understand%20%23%27%2C%20self%20message%20selector'),
  8435. messageSends: [unescape("%2C"), "asString", "receiver", "selector", "message"],
  8436. referencedClasses: []
  8437. }),
  8438. smalltalk.MessageNotUnderstood);
  8439. smalltalk.addClass('ErrorHandler', smalltalk.Object, [], 'Kernel');
  8440. smalltalk.addMethod(
  8441. unescape('_handleError_'),
  8442. smalltalk.method({
  8443. selector: unescape('handleError%3A'),
  8444. category: 'error handling',
  8445. fn: function (anError){
  8446. var self=this;
  8447. (($receiver = smalltalk.send(anError, "_context", [])) != nil && $receiver != undefined) ? (function(){return smalltalk.send(self, "_logErrorContext_", [smalltalk.send(anError, "_context", [])]);})() : nil;
  8448. smalltalk.send(self, "_logError_", [anError]);
  8449. return self;},
  8450. args: ["anError"],
  8451. source: unescape('handleError%3A%20anError%0A%09anError%20context%20ifNotNil%3A%20%5Bself%20logErrorContext%3A%20anError%20context%5D.%0A%09self%20logError%3A%20anError'),
  8452. messageSends: ["ifNotNil:", "context", "logErrorContext:", "logError:"],
  8453. referencedClasses: []
  8454. }),
  8455. smalltalk.ErrorHandler);
  8456. smalltalk.addMethod(
  8457. unescape('_logContext_'),
  8458. smalltalk.method({
  8459. selector: unescape('logContext%3A'),
  8460. category: 'private',
  8461. fn: function (aContext){
  8462. var self=this;
  8463. (($receiver = smalltalk.send(aContext, "_home", [])) != nil && $receiver != undefined) ? (function(){return smalltalk.send(self, "_logContext_", [smalltalk.send(aContext, "_home", [])]);})() : nil;
  8464. smalltalk.send(self, "_log_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aContext, "_receiver", []), "_asString", []), "__comma", [unescape("%3E%3E")]), "__comma", [smalltalk.send(aContext, "_selector", [])])]);
  8465. return self;},
  8466. args: ["aContext"],
  8467. source: unescape('logContext%3A%20aContext%0A%09aContext%20home%20ifNotNil%3A%20%5B%0A%09%09self%20logContext%3A%20aContext%20home%5D.%0A%09self%20log%3A%20aContext%20receiver%20asString%2C%20%27%3E%3E%27%2C%20aContext%20selector'),
  8468. messageSends: ["ifNotNil:", "home", "logContext:", "log:", unescape("%2C"), "asString", "receiver", "selector"],
  8469. referencedClasses: []
  8470. }),
  8471. smalltalk.ErrorHandler);
  8472. smalltalk.addMethod(
  8473. unescape('_logErrorContext_'),
  8474. smalltalk.method({
  8475. selector: unescape('logErrorContext%3A'),
  8476. category: 'private',
  8477. fn: function (aContext){
  8478. var self=this;
  8479. (($receiver = aContext) != nil && $receiver != undefined) ? (function(){return (($receiver = smalltalk.send(aContext, "_home", [])) != nil && $receiver != undefined) ? (function(){return smalltalk.send(self, "_logContext_", [smalltalk.send(aContext, "_home", [])]);})() : nil;})() : nil;
  8480. return self;},
  8481. args: ["aContext"],
  8482. source: unescape('logErrorContext%3A%20aContext%0A%09aContext%20ifNotNil%3A%20%5B%0A%09%09aContext%20home%20ifNotNil%3A%20%5B%0A%09%09%09self%20logContext%3A%20aContext%20home%5D%5D'),
  8483. messageSends: ["ifNotNil:", "home", "logContext:"],
  8484. referencedClasses: []
  8485. }),
  8486. smalltalk.ErrorHandler);
  8487. smalltalk.addMethod(
  8488. unescape('_logError_'),
  8489. smalltalk.method({
  8490. selector: unescape('logError%3A'),
  8491. category: 'private',
  8492. fn: function (anError){
  8493. var self=this;
  8494. smalltalk.send(self, "_log_", [smalltalk.send(anError, "_messageText", [])]);
  8495. return self;},
  8496. args: ["anError"],
  8497. source: unescape('logError%3A%20anError%0A%09self%20log%3A%20anError%20messageText'),
  8498. messageSends: ["log:", "messageText"],
  8499. referencedClasses: []
  8500. }),
  8501. smalltalk.ErrorHandler);
  8502. smalltalk.addMethod(
  8503. unescape('_log_'),
  8504. smalltalk.method({
  8505. selector: unescape('log%3A'),
  8506. category: 'private',
  8507. fn: function (aString){
  8508. var self=this;
  8509. smalltalk.send((typeof console == 'undefined' ? nil : console), "_log_", [aString]);
  8510. return self;},
  8511. args: ["aString"],
  8512. source: unescape('log%3A%20aString%0A%09console%20log%3A%20aString'),
  8513. messageSends: ["log:"],
  8514. referencedClasses: []
  8515. }),
  8516. smalltalk.ErrorHandler);
  8517. smalltalk.ErrorHandler.klass.iVarNames = ['current'];
  8518. smalltalk.addMethod(
  8519. unescape('_current'),
  8520. smalltalk.method({
  8521. selector: unescape('current'),
  8522. category: 'accessing',
  8523. fn: function (){
  8524. var self=this;
  8525. return (($receiver = self['@current']) == nil || $receiver == undefined) ? (function(){return self['@current']=smalltalk.send(self, "_new", []);})() : $receiver;
  8526. return self;},
  8527. args: [],
  8528. source: unescape('current%0A%09%5Ecurrent%20ifNil%3A%20%5Bcurrent%20%3A%3D%20self%20new%5D'),
  8529. messageSends: ["ifNil:", "new"],
  8530. referencedClasses: []
  8531. }),
  8532. smalltalk.ErrorHandler.klass);
  8533. smalltalk.addMethod(
  8534. unescape('_initialize'),
  8535. smalltalk.method({
  8536. selector: unescape('initialize'),
  8537. category: 'initialization',
  8538. fn: function (){
  8539. var self=this;
  8540. smalltalk.send(self, "_register", []);
  8541. return self;},
  8542. args: [],
  8543. source: unescape('initialize%0A%09self%20register'),
  8544. messageSends: ["register"],
  8545. referencedClasses: []
  8546. }),
  8547. smalltalk.ErrorHandler.klass);
  8548. smalltalk.addMethod(
  8549. unescape('_register'),
  8550. smalltalk.method({
  8551. selector: unescape('register'),
  8552. category: 'initialization',
  8553. fn: function (){
  8554. var self=this;
  8555. smalltalk.send((smalltalk.ErrorHandler || ErrorHandler), "_setCurrent_", [smalltalk.send(self, "_new", [])]);
  8556. return self;},
  8557. args: [],
  8558. source: unescape('register%0A%09ErrorHandler%20setCurrent%3A%20self%20new'),
  8559. messageSends: ["setCurrent:", "new"],
  8560. referencedClasses: [smalltalk.ErrorHandler]
  8561. }),
  8562. smalltalk.ErrorHandler.klass);
  8563. smalltalk.addMethod(
  8564. unescape('_setCurrent_'),
  8565. smalltalk.method({
  8566. selector: unescape('setCurrent%3A'),
  8567. category: 'accessing',
  8568. fn: function (anHandler){
  8569. var self=this;
  8570. self['@current']=anHandler;
  8571. return self;},
  8572. args: ["anHandler"],
  8573. source: unescape('setCurrent%3A%20anHandler%0A%09current%20%3A%3D%20anHandler'),
  8574. messageSends: [],
  8575. referencedClasses: []
  8576. }),
  8577. smalltalk.ErrorHandler.klass);
  8578. smalltalk.addClass('JSObjectProxy', smalltalk.Object, ['jsObject'], 'Kernel');
  8579. smalltalk.addMethod(
  8580. unescape('_jsObject_'),
  8581. smalltalk.method({
  8582. selector: unescape('jsObject%3A'),
  8583. category: 'accessing',
  8584. fn: function (aJSObject){
  8585. var self=this;
  8586. self['@jsObject']=aJSObject;
  8587. return self;},
  8588. args: ["aJSObject"],
  8589. source: unescape('jsObject%3A%20aJSObject%0A%09jsObject%20%3A%3D%20aJSObject'),
  8590. messageSends: [],
  8591. referencedClasses: []
  8592. }),
  8593. smalltalk.JSObjectProxy);
  8594. smalltalk.addMethod(
  8595. unescape('_jsObject'),
  8596. smalltalk.method({
  8597. selector: unescape('jsObject'),
  8598. category: 'accessing',
  8599. fn: function (){
  8600. var self=this;
  8601. return self['@jsObject'];
  8602. return self;},
  8603. args: [],
  8604. source: unescape('jsObject%0A%09%5EjsObject'),
  8605. messageSends: [],
  8606. referencedClasses: []
  8607. }),
  8608. smalltalk.JSObjectProxy);
  8609. smalltalk.addMethod(
  8610. unescape('_printString'),
  8611. smalltalk.method({
  8612. selector: unescape('printString'),
  8613. category: 'proxy',
  8614. fn: function (){
  8615. var self=this;
  8616. return smalltalk.send(smalltalk.send(self, "_jsObject", []), "_toString", []);
  8617. return self;},
  8618. args: [],
  8619. source: unescape('printString%0A%09%5Eself%20jsObject%20toString'),
  8620. messageSends: ["toString", "jsObject"],
  8621. referencedClasses: []
  8622. }),
  8623. smalltalk.JSObjectProxy);
  8624. smalltalk.addMethod(
  8625. unescape('_inspectOn_'),
  8626. smalltalk.method({
  8627. selector: unescape('inspectOn%3A'),
  8628. category: 'proxy',
  8629. fn: function (anInspector){
  8630. var self=this;
  8631. var variables=nil;
  8632. variables=smalltalk.send((smalltalk.Dictionary || Dictionary), "_new", []);
  8633. smalltalk.send(variables, "_at_put_", [unescape("%23self"), smalltalk.send(self, "_jsObject", [])]);
  8634. smalltalk.send(anInspector, "_setLabel_", [smalltalk.send(self, "_printString", [])]);
  8635. for(var i in self['@jsObject']) {
  8636. variables._at_put_(i, self['@jsObject'][i]);
  8637. };
  8638. smalltalk.send(anInspector, "_setVariables_", [variables]);
  8639. return self;},
  8640. args: ["anInspector"],
  8641. source: unescape('inspectOn%3A%20anInspector%0A%09%7C%20variables%20%7C%0A%09variables%20%3A%3D%20Dictionary%20new.%0A%09variables%20at%3A%20%27%23self%27%20put%3A%20self%20jsObject.%0A%09anInspector%20setLabel%3A%20self%20printString.%0A%09%3Cfor%28var%20i%20in%20self%5B%27@jsObject%27%5D%29%20%7B%0A%09%09variables._at_put_%28i%2C%20self%5B%27@jsObject%27%5D%5Bi%5D%29%3B%0A%09%7D%3E.%0A%09anInspector%20setVariables%3A%20variables'),
  8642. messageSends: ["new", "at:put:", "jsObject", "setLabel:", "printString", "setVariables:"],
  8643. referencedClasses: [smalltalk.Dictionary]
  8644. }),
  8645. smalltalk.JSObjectProxy);
  8646. smalltalk.addMethod(
  8647. unescape('_doesNotUnderstand_'),
  8648. smalltalk.method({
  8649. selector: unescape('doesNotUnderstand%3A'),
  8650. category: 'proxy',
  8651. fn: function (aMessage){
  8652. var self=this;
  8653. var obj=nil;
  8654. var selector=nil;
  8655. var jsSelector=nil;
  8656. var arguments=nil;
  8657. obj=smalltalk.send(self, "_jsObject", []);
  8658. selector=smalltalk.send(aMessage, "_selector", []);
  8659. jsSelector=smalltalk.send(selector, "_asJavaScriptSelector", []);
  8660. arguments=smalltalk.send(aMessage, "_arguments", []);
  8661. if(obj[jsSelector] != undefined) {return smalltalk.send(obj, jsSelector, arguments)};
  8662. smalltalk.send(self, "_doesNotUnderstand_", [aMessage], smalltalk.Object);
  8663. return self;},
  8664. args: ["aMessage"],
  8665. source: unescape('doesNotUnderstand%3A%20aMessage%0A%09%7C%20obj%20selector%20jsSelector%20arguments%20%7C%0A%09obj%20%3A%3D%20self%20jsObject.%0A%09selector%20%3A%3D%20aMessage%20selector.%0A%09jsSelector%20%3A%3D%20selector%20asJavaScriptSelector.%0A%09arguments%20%3A%3D%20aMessage%20arguments.%0A%09%3Cif%28obj%5BjsSelector%5D%20%21%3D%20undefined%29%20%7Breturn%20smalltalk.send%28obj%2C%20jsSelector%2C%20arguments%29%7D%3E.%0A%09super%20doesNotUnderstand%3A%20aMessage'),
  8666. messageSends: ["jsObject", "selector", "asJavaScriptSelector", "arguments", "doesNotUnderstand:"],
  8667. referencedClasses: []
  8668. }),
  8669. smalltalk.JSObjectProxy);
  8670. smalltalk.addMethod(
  8671. unescape('_at_'),
  8672. smalltalk.method({
  8673. selector: unescape('at%3A'),
  8674. category: 'accessing',
  8675. fn: function (aString){
  8676. var self=this;
  8677. return self['@jsObject'][aString];
  8678. return self;},
  8679. args: ["aString"],
  8680. source: unescape('at%3A%20aString%0A%09%3Creturn%20self%5B%27@jsObject%27%5D%5BaString%5D%3E'),
  8681. messageSends: [],
  8682. referencedClasses: []
  8683. }),
  8684. smalltalk.JSObjectProxy);
  8685. smalltalk.addMethod(
  8686. unescape('_at_put_'),
  8687. smalltalk.method({
  8688. selector: unescape('at%3Aput%3A'),
  8689. category: 'accessing',
  8690. fn: function (aString, anObject){
  8691. var self=this;
  8692. self['@jsObject'][aString] = anObject;
  8693. return self;},
  8694. args: ["aString", "anObject"],
  8695. source: unescape('at%3A%20aString%20put%3A%20anObject%0A%09%3Cself%5B%27@jsObject%27%5D%5BaString%5D%20%3D%20anObject%3E'),
  8696. messageSends: [],
  8697. referencedClasses: []
  8698. }),
  8699. smalltalk.JSObjectProxy);
  8700. smalltalk.addMethod(
  8701. unescape('_on_'),
  8702. smalltalk.method({
  8703. selector: unescape('on%3A'),
  8704. category: 'instance creation',
  8705. fn: function (aJSObject){
  8706. var self=this;
  8707. return (function($rec){smalltalk.send($rec, "_jsObject_", [aJSObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", []));
  8708. return self;},
  8709. args: ["aJSObject"],
  8710. source: unescape('on%3A%20aJSObject%0A%09%5Eself%20new%0A%09%09jsObject%3A%20aJSObject%3B%0A%09%09yourself'),
  8711. messageSends: ["jsObject:", "yourself", "new"],
  8712. referencedClasses: []
  8713. }),
  8714. smalltalk.JSObjectProxy.klass);
  8715. smalltalk.addClass('Set', smalltalk.Collection, ['elements'], 'Kernel');
  8716. smalltalk.addMethod(
  8717. unescape('_add_'),
  8718. smalltalk.method({
  8719. selector: unescape('add%3A'),
  8720. category: 'adding/removing',
  8721. fn: function (anObject){
  8722. var self=this;
  8723. var found;
  8724. for(var i in self['@elements']) {
  8725. if(anObject == self['@elements'][i]) {
  8726. found = true;
  8727. break;
  8728. }
  8729. }
  8730. if(!found) {self['@elements'].push(anObject)}
  8731. ;
  8732. return self;},
  8733. args: ["anObject"],
  8734. source: unescape('add%3A%20anObject%0A%09%3C%0A%09%09var%20found%3B%0A%09%09for%28var%20i%20in%20self%5B%27@elements%27%5D%29%20%7B%0A%09%09%09if%28anObject%20%3D%3D%20self%5B%27@elements%27%5D%5Bi%5D%29%20%7B%0A%09%09%09%09found%20%3D%20true%3B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09if%28%21found%29%20%7Bself%5B%27@elements%27%5D.push%28anObject%29%7D%0A%09%3E'),
  8735. messageSends: [],
  8736. referencedClasses: []
  8737. }),
  8738. smalltalk.Set);
  8739. smalltalk.addMethod(
  8740. unescape('_remove_'),
  8741. smalltalk.method({
  8742. selector: unescape('remove%3A'),
  8743. category: 'adding/removing',
  8744. fn: function (anObject){
  8745. var self=this;
  8746. smalltalk.send(self['@elements'], "_remove_", [anObject]);
  8747. return self;},
  8748. args: ["anObject"],
  8749. source: unescape('remove%3A%20anObject%0A%09elements%20remove%3A%20anObject'),
  8750. messageSends: ["remove:"],
  8751. referencedClasses: []
  8752. }),
  8753. smalltalk.Set);
  8754. smalltalk.addMethod(
  8755. unescape('_initialize'),
  8756. smalltalk.method({
  8757. selector: unescape('initialize'),
  8758. category: 'initialization',
  8759. fn: function (){
  8760. var self=this;
  8761. smalltalk.send(self, "_initialize", [], smalltalk.Collection);
  8762. self['@elements']=[];
  8763. return self;},
  8764. args: [],
  8765. source: unescape('initialize%0A%09super%20initialize.%0A%09elements%20%3A%3D%20%23%28%29'),
  8766. messageSends: ["initialize"],
  8767. referencedClasses: []
  8768. }),
  8769. smalltalk.Set);
  8770. smalltalk.addMethod(
  8771. unescape('_size'),
  8772. smalltalk.method({
  8773. selector: unescape('size'),
  8774. category: 'accessing',
  8775. fn: function (){
  8776. var self=this;
  8777. return smalltalk.send(self['@elements'], "_size", []);
  8778. return self;},
  8779. args: [],
  8780. source: unescape('size%0A%09%5Eelements%20size'),
  8781. messageSends: ["size"],
  8782. referencedClasses: []
  8783. }),
  8784. smalltalk.Set);
  8785. smalltalk.addMethod(
  8786. unescape('_asArray'),
  8787. smalltalk.method({
  8788. selector: unescape('asArray'),
  8789. category: 'converting',
  8790. fn: function (){
  8791. var self=this;
  8792. return smalltalk.send(self['@elements'], "_copy", []);
  8793. return self;},
  8794. args: [],
  8795. source: unescape('asArray%0A%09%5Eelements%20copy'),
  8796. messageSends: ["copy"],
  8797. referencedClasses: []
  8798. }),
  8799. smalltalk.Set);
  8800. smalltalk.addMethod(
  8801. unescape('_detect_ifNone_'),
  8802. smalltalk.method({
  8803. selector: unescape('detect%3AifNone%3A'),
  8804. category: 'enumerating',
  8805. fn: function (aBlock, anotherBlock){
  8806. var self=this;
  8807. return smalltalk.send(self['@elements'], "_detect_ifNone_", [aBlock, anotherBlock]);
  8808. return self;},
  8809. args: ["aBlock", "anotherBlock"],
  8810. source: unescape('detect%3A%20aBlock%20ifNone%3A%20anotherBlock%0A%09%5Eelements%20detect%3A%20aBlock%20ifNone%3A%20anotherBlock'),
  8811. messageSends: ["detect:ifNone:"],
  8812. referencedClasses: []
  8813. }),
  8814. smalltalk.Set);
  8815. smalltalk.addMethod(
  8816. unescape('_do_'),
  8817. smalltalk.method({
  8818. selector: unescape('do%3A'),
  8819. category: 'enumerating',
  8820. fn: function (aBlock){
  8821. var self=this;
  8822. smalltalk.send(self['@elements'], "_do_", [aBlock]);
  8823. return self;},
  8824. args: ["aBlock"],
  8825. source: unescape('do%3A%20aBlock%0A%09elements%20do%3A%20aBlock'),
  8826. messageSends: ["do:"],
  8827. referencedClasses: []
  8828. }),
  8829. smalltalk.Set);
  8830. smalltalk.addMethod(
  8831. unescape('_includes_'),
  8832. smalltalk.method({
  8833. selector: unescape('includes%3A'),
  8834. category: 'testing',
  8835. fn: function (anObject){
  8836. var self=this;
  8837. return smalltalk.send(self['@elements'], "_includes_", [anObject]);
  8838. return self;},
  8839. args: ["anObject"],
  8840. source: unescape('includes%3A%20anObject%0A%09%5Eelements%20includes%3A%20anObject'),
  8841. messageSends: ["includes:"],
  8842. referencedClasses: []
  8843. }),
  8844. smalltalk.Set);
  8845. smalltalk.addMethod(
  8846. unescape('__eq'),
  8847. smalltalk.method({
  8848. selector: unescape('%3D'),
  8849. category: 'comparing',
  8850. fn: function (aCollection){
  8851. var self=this;
  8852. return smalltalk.send(smalltalk.send(smalltalk.send(self, "_class", []), "__eq", [smalltalk.send(aCollection, "_class", [])]), "_and_", [(function(){return smalltalk.send(self['@elements'], "__eq", [smalltalk.send(aCollection, "_asArray", [])]);})]);
  8853. return self;},
  8854. args: ["aCollection"],
  8855. source: unescape('%3D%20aCollection%0A%09%5Eself%20class%20%3D%20aCollection%20class%20and%3A%20%5B%0A%20%20%20%20%20%20%20%20%09elements%20%3D%20aCollection%20asArray%5D'),
  8856. messageSends: ["and:", unescape("%3D"), "class", "asArray"],
  8857. referencedClasses: []
  8858. }),
  8859. smalltalk.Set);
  8860. smalltalk.addPackage('FileServer', []);
  8861. smalltalk.addClass('FileServer', smalltalk.Object, ['path', 'http', 'fs', 'url', 'port', 'basePath', 'sys'], 'FileServer');
  8862. smalltalk.addMethod(
  8863. unescape('_basePath'),
  8864. smalltalk.method({
  8865. selector: unescape('basePath'),
  8866. category: 'accessing',
  8867. fn: function (){
  8868. var self=this;
  8869. return (($receiver = self['@basePath']) == nil || $receiver == undefined) ? (function(){return unescape("./");})() : $receiver;
  8870. return self;},
  8871. args: [],
  8872. source: unescape('basePath%0A%09%5EbasePath%20ifNil%3A%20%5B%27./%27%5D'),
  8873. messageSends: ["ifNil:"],
  8874. referencedClasses: []
  8875. }),
  8876. smalltalk.FileServer);
  8877. smalltalk.addMethod(
  8878. unescape('_basePath_'),
  8879. smalltalk.method({
  8880. selector: unescape('basePath%3A'),
  8881. category: 'accessing',
  8882. fn: function (aString){
  8883. var self=this;
  8884. self['@basePath']=aString;
  8885. return self;},
  8886. args: ["aString"],
  8887. source: unescape('basePath%3A%20aString%0A%09basePath%20%3A%3D%20aString'),
  8888. messageSends: [],
  8889. referencedClasses: []
  8890. }),
  8891. smalltalk.FileServer);
  8892. smalltalk.addMethod(
  8893. unescape('_port'),
  8894. smalltalk.method({
  8895. selector: unescape('port'),
  8896. category: 'accessing',
  8897. fn: function (){
  8898. var self=this;
  8899. return smalltalk.send(smalltalk.send(self, "_class", []), "_port", []);
  8900. return self;},
  8901. args: [],
  8902. source: unescape('port%0A%09%5Eself%20class%20port'),
  8903. messageSends: ["port", "class"],
  8904. referencedClasses: []
  8905. }),
  8906. smalltalk.FileServer);
  8907. smalltalk.addMethod(
  8908. unescape('_initialize'),
  8909. smalltalk.method({
  8910. selector: unescape('initialize'),
  8911. category: 'initialization',
  8912. fn: function (){
  8913. var self=this;
  8914. smalltalk.send(self, "_initialize", [], smalltalk.Object);
  8915. self['@path']=smalltalk.send(self, "_require_", ["path"]);
  8916. self['@http']=smalltalk.send(self, "_require_", ["http"]);
  8917. self['@fs']=smalltalk.send(self, "_require_", ["fs"]);
  8918. self['@sys']=smalltalk.send(self, "_require_", ["sys"]);
  8919. self['@url']=smalltalk.send(self, "_require_", ["url"]);
  8920. return self;},
  8921. args: [],
  8922. source: unescape('initialize%0A%09super%20initialize.%0A%09path%20%3A%3D%20self%20require%3A%20%27path%27.%0A%09http%20%3A%3D%20self%20require%3A%20%27http%27.%0A%09fs%20%3A%3D%20self%20require%3A%20%27fs%27.%0A%09sys%20%3A%3D%20self%20require%3A%20%27sys%27.%0A%09url%20%3A%3D%20self%20require%3A%20%27url%27'),
  8923. messageSends: ["initialize", "require:"],
  8924. referencedClasses: []
  8925. }),
  8926. smalltalk.FileServer);
  8927. smalltalk.addMethod(
  8928. unescape('_require_'),
  8929. smalltalk.method({
  8930. selector: unescape('require%3A'),
  8931. category: 'private',
  8932. fn: function (aModuleString){
  8933. var self=this;
  8934. return smalltalk.send((typeof require == 'undefined' ? nil : require), "_value_", [aModuleString]);
  8935. return self;},
  8936. args: ["aModuleString"],
  8937. source: unescape('require%3A%20aModuleString%0A%09%22call%20to%20the%20require%20function%22%0A%09%5Erequire%20value%3A%20aModuleString'),
  8938. messageSends: ["value:"],
  8939. referencedClasses: []
  8940. }),
  8941. smalltalk.FileServer);
  8942. smalltalk.addMethod(
  8943. unescape('_writeData_toFileNamed_'),
  8944. smalltalk.method({
  8945. selector: unescape('writeData%3AtoFileNamed%3A'),
  8946. category: 'private',
  8947. fn: function (data, aFilename){
  8948. var self=this;
  8949. smalltalk.send((typeof console == 'undefined' ? nil : console), "_log_", [aFilename]);
  8950. return self;},
  8951. args: ["data", "aFilename"],
  8952. source: unescape('writeData%3A%20data%20toFileNamed%3A%20aFilename%0A%09console%20log%3A%20aFilename'),
  8953. messageSends: ["log:"],
  8954. referencedClasses: []
  8955. }),
  8956. smalltalk.FileServer);
  8957. smalltalk.addMethod(
  8958. unescape('_respondNotFoundTo_'),
  8959. smalltalk.method({
  8960. selector: unescape('respondNotFoundTo%3A'),
  8961. category: 'request handling',
  8962. fn: function (aResponse){
  8963. var self=this;
  8964. (function($rec){smalltalk.send($rec, "_writeHead_options_", [(404), smalltalk.Dictionary._fromPairs_([smalltalk.send(unescape("Content-Type"), "__minus_gt", [unescape("text/plain")])])]);smalltalk.send($rec, "_write_", ["404 Not found"]);return smalltalk.send($rec, "_end", []);})(aResponse);
  8965. return self;},
  8966. args: ["aResponse"],
  8967. source: unescape('respondNotFoundTo%3A%20aResponse%0A%09aResponse%20%0A%09%09writeHead%3A%20404%20options%3A%20%23%7B%27Content-Type%27%20-%3E%20%27text/plain%27%7D%3B%0A%09%09write%3A%20%27404%20Not%20found%27%3B%0A%09%09end'),
  8968. messageSends: ["writeHead:options:", unescape("-%3E"), "write:", "end"],
  8969. referencedClasses: []
  8970. }),
  8971. smalltalk.FileServer);
  8972. smalltalk.addMethod(
  8973. unescape('_handleRequest_respondTo_'),
  8974. smalltalk.method({
  8975. selector: unescape('handleRequest%3ArespondTo%3A'),
  8976. category: 'request handling',
  8977. fn: function (aRequest, aResponse){
  8978. var self=this;
  8979. ((($receiver = smalltalk.send(smalltalk.send(aRequest, "_method", []), "__eq", ["PUT"])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_handlePUTRequest_respondTo_", [aRequest, aResponse]);})() : (function(){return smalltalk.send(self, "_handleGETRequest_respondTo_", [aRequest, aResponse]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_handlePUTRequest_respondTo_", [aRequest, aResponse]);}), (function(){return smalltalk.send(self, "_handleGETRequest_respondTo_", [aRequest, aResponse]);})]));
  8980. return self;},
  8981. args: ["aRequest", "aResponse"],
  8982. source: unescape('handleRequest%3A%20aRequest%20respondTo%3A%20aResponse%0A%09aRequest%20method%20%3D%20%27PUT%27%0A%09%09ifTrue%3A%20%5Bself%20handlePUTRequest%3A%20aRequest%20respondTo%3A%20aResponse%5D%0A%09%09ifFalse%3A%20%5Bself%20handleGETRequest%3A%20aRequest%20respondTo%3A%20aResponse%5D'),
  8983. messageSends: ["ifTrue:ifFalse:", unescape("%3D"), "method", "handlePUTRequest:respondTo:", "handleGETRequest:respondTo:"],
  8984. referencedClasses: []
  8985. }),
  8986. smalltalk.FileServer);
  8987. smalltalk.addMethod(
  8988. unescape('_handleGETRequest_respondTo_'),
  8989. smalltalk.method({
  8990. selector: unescape('handleGETRequest%3ArespondTo%3A'),
  8991. category: 'request handling',
  8992. fn: function (aRequest, aResponse){
  8993. var self=this;
  8994. var uri=nil;
  8995. var filename=nil;
  8996. uri=smalltalk.send(smalltalk.send(self['@url'], "_parse_", [smalltalk.send(aRequest, "_url", [])]), "_pathname", []);
  8997. filename=smalltalk.send(self['@path'], "_join_with_", [smalltalk.send(self, "_basePath", []), uri]);
  8998. smalltalk.send(self['@path'], "_exists_do_", [filename, (function(boolean){return ((($receiver = boolean).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self, "_respondNotFoundTo_", [aResponse]);})() : (function(){return smalltalk.send(self, "_respondFileNamed_to_", [filename, aResponse]);})()) : smalltalk.send($receiver, "_ifFalse_ifTrue_", [(function(){return smalltalk.send(self, "_respondNotFoundTo_", [aResponse]);}), (function(){return smalltalk.send(self, "_respondFileNamed_to_", [filename, aResponse]);})]));})]);
  8999. return self;},
  9000. args: ["aRequest", "aResponse"],
  9001. source: unescape('handleGETRequest%3A%20aRequest%20respondTo%3A%20aResponse%0A%09%7C%20uri%20filename%20%7C%0A%09uri%20%3A%3D%20%28url%20parse%3A%20aRequest%20url%29%20pathname.%0A%09filename%20%3A%3D%20path%20join%3A%20self%20basePath%20with%3A%20uri.%0A%09path%20exists%3A%20filename%20do%3A%20%5B%3Aboolean%20%7C%20%0A%09%09boolean%20%0A%09%09%09ifFalse%3A%20%5Bself%20respondNotFoundTo%3A%20aResponse%5D%0A%09%09%09ifTrue%3A%20%5Bself%20respondFileNamed%3A%20filename%20to%3A%20aResponse%5D%5D'),
  9002. messageSends: ["pathname", "parse:", "url", "join:with:", "basePath", "exists:do:", "ifFalse:ifTrue:", "respondNotFoundTo:", "respondFileNamed:to:"],
  9003. referencedClasses: []
  9004. }),
  9005. smalltalk.FileServer);
  9006. smalltalk.addMethod(
  9007. unescape('_handlePUTRequest_respondTo_'),
  9008. smalltalk.method({
  9009. selector: unescape('handlePUTRequest%3ArespondTo%3A'),
  9010. category: 'request handling',
  9011. fn: function (aRequest, aResponse){
  9012. var self=this;
  9013. var stream=nil;
  9014. stream=smalltalk.send(self['@fs'], "_createWriteStream_", [smalltalk.send(".", "__comma", [smalltalk.send(aRequest, "_url", [])])]);
  9015. smalltalk.send(aRequest, "_setEncoding_", ["utf8"]);
  9016. smalltalk.send(aRequest, "_on_do_", ["data", (function(data){return smalltalk.send(stream, "_write_", [data]);})]);
  9017. smalltalk.send(aRequest, "_on_do_", ["end", (function(){smalltalk.send(stream, "_end", []);return smalltalk.send(self, "_respondOKTo_", [aResponse]);})]);
  9018. return self;},
  9019. args: ["aRequest", "aResponse"],
  9020. source: unescape('handlePUTRequest%3A%20aRequest%20respondTo%3A%20aResponse%0A%09%7C%20stream%20%7C%0A%09stream%20%3A%3D%20fs%20createWriteStream%3A%20%27.%27%2C%20aRequest%20url.%0A%0A%09aRequest%20setEncoding%3A%20%27utf8%27.%0A%09aRequest%20on%3A%20%23data%20do%3A%20%5B%3Adata%20%7C%20stream%20write%3A%20data%5D.%0A%0A%09aRequest%20on%3A%20%23end%20do%3A%20%5B%0A%09%09stream%20end.%0A%09%09self%20respondOKTo%3A%20aResponse%5D'),
  9021. messageSends: ["createWriteStream:", unescape("%2C"), "url", "setEncoding:", "on:do:", "write:", "end", "respondOKTo:"],
  9022. referencedClasses: []
  9023. }),
  9024. smalltalk.FileServer);
  9025. smalltalk.addMethod(
  9026. unescape('_respondFileNamed_to_'),
  9027. smalltalk.method({
  9028. selector: unescape('respondFileNamed%3Ato%3A'),
  9029. category: 'request handling',
  9030. fn: function (aFilename, aResponse){
  9031. var self=this;
  9032. var type=nil;
  9033. var filename=nil;
  9034. filename=aFilename;
  9035. ((($receiver = smalltalk.send(smalltalk.send(self['@fs'], "_statSync_", [aFilename]), "_isDirectory", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return filename=smalltalk.send(filename, "__comma", ["index.html"]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return filename=smalltalk.send(filename, "__comma", ["index.html"]);})]));
  9036. smalltalk.send(self['@fs'], "_readFile_do_", [filename, (function(ex, file){return ((($receiver = smalltalk.send(ex, "_notNil", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_respondInternalErrorTo_", [aResponse]);})() : (function(){type=smalltalk.send(smalltalk.send(self, "_class", []), "_mimeTypeFor_", [filename]);return (function($rec){smalltalk.send($rec, "_writeHead_options_", [(200), smalltalk.Dictionary._fromPairs_([smalltalk.send(unescape("Content-Type"), "__minus_gt", [type])])]);smalltalk.send($rec, "_write_binary_", [file, "binary"]);return smalltalk.send($rec, "_end", []);})(aResponse);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_respondInternalErrorTo_", [aResponse]);}), (function(){type=smalltalk.send(smalltalk.send(self, "_class", []), "_mimeTypeFor_", [filename]);return (function($rec){smalltalk.send($rec, "_writeHead_options_", [(200), smalltalk.Dictionary._fromPairs_([smalltalk.send(unescape("Content-Type"), "__minus_gt", [type])])]);smalltalk.send($rec, "_write_binary_", [file, "binary"]);return smalltalk.send($rec, "_end", []);})(aResponse);})]));})]);
  9037. return self;},
  9038. args: ["aFilename", "aResponse"],
  9039. source: unescape('respondFileNamed%3A%20aFilename%20to%3A%20aResponse%0A%09%7C%20type%20filename%20%7C%0A%0A%09filename%20%3A%3D%20aFilename.%0A%09%28fs%20statSync%3A%20aFilename%29%20isDirectory%20ifTrue%3A%20%5B%0A%20%20%20%20%20%20%20%20%09filename%20%3A%3D%20filename%2C%20%27index.html%27%5D.%0A%0A%09fs%20readFile%3A%20filename%20do%3A%20%5B%3Aex%20%3Afile%20%7C%0A%09%09ex%20notNil%20%0A%09%09%09ifTrue%3A%20%5Bself%20respondInternalErrorTo%3A%20aResponse%5D%0A%09%09%09ifFalse%3A%20%5B%0A%20%20%20%20%20%20%20%20%09%09%09type%20%3A%3D%20self%20class%20mimeTypeFor%3A%20filename.%0A%09%09%09%09aResponse%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09writeHead%3A%20200%20options%3A%20%20%23%7B%27Content-Type%27%20-%3E%20type%7D%3B%0A%09%09%09%09%09write%3A%20file%20binary%3A%20%27binary%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09end%5D%5D'),
  9040. messageSends: ["ifTrue:", "isDirectory", "statSync:", unescape("%2C"), "readFile:do:", "ifTrue:ifFalse:", "notNil", "respondInternalErrorTo:", "mimeTypeFor:", "class", "writeHead:options:", unescape("-%3E"), "write:binary:", "end"],
  9041. referencedClasses: []
  9042. }),
  9043. smalltalk.FileServer);
  9044. smalltalk.addMethod(
  9045. unescape('_respondInternalErrorTo_'),
  9046. smalltalk.method({
  9047. selector: unescape('respondInternalErrorTo%3A'),
  9048. category: 'request handling',
  9049. fn: function (aResponse){
  9050. var self=this;
  9051. (function($rec){smalltalk.send($rec, "_writeHead_options_", [(500), smalltalk.Dictionary._fromPairs_([smalltalk.send(unescape("Content-Type"), "__minus_gt", [unescape("text/plain")])])]);smalltalk.send($rec, "_write_", ["500 Internal server error"]);return smalltalk.send($rec, "_end", []);})(aResponse);
  9052. return self;},
  9053. args: ["aResponse"],
  9054. source: unescape('respondInternalErrorTo%3A%20aResponse%0A%09aResponse%20%0A%09%09writeHead%3A%20500%20options%3A%20%23%7B%27Content-Type%27%20-%3E%20%27text/plain%27%7D%3B%0A%09%09write%3A%20%27500%20Internal%20server%20error%27%3B%0A%09%09end'),
  9055. messageSends: ["writeHead:options:", unescape("-%3E"), "write:", "end"],
  9056. referencedClasses: []
  9057. }),
  9058. smalltalk.FileServer);
  9059. smalltalk.addMethod(
  9060. unescape('_respondOKTo_'),
  9061. smalltalk.method({
  9062. selector: unescape('respondOKTo%3A'),
  9063. category: 'request handling',
  9064. fn: function (aResponse){
  9065. var self=this;
  9066. (function($rec){smalltalk.send($rec, "_writeHead_options_", [(200), smalltalk.Dictionary._fromPairs_([smalltalk.send(unescape("Content-Type"), "__minus_gt", [unescape("text/plain")])])]);return smalltalk.send($rec, "_end", []);})(aResponse);
  9067. return self;},
  9068. args: ["aResponse"],
  9069. source: unescape('respondOKTo%3A%20aResponse%0A%09aResponse%20%0A%09%09writeHead%3A%20200%20options%3A%20%23%7B%27Content-Type%27%20-%3E%20%27text/plain%27%7D%3B%0A%09%09end'),
  9070. messageSends: ["writeHead:options:", unescape("-%3E"), "end"],
  9071. referencedClasses: []
  9072. }),
  9073. smalltalk.FileServer);
  9074. smalltalk.addMethod(
  9075. unescape('_startOn_'),
  9076. smalltalk.method({
  9077. selector: unescape('startOn%3A'),
  9078. category: 'starting',
  9079. fn: function (aPort){
  9080. var self=this;
  9081. self['@port']=aPort;
  9082. smalltalk.send(self, "_start", []);
  9083. return self;},
  9084. args: ["aPort"],
  9085. source: unescape('startOn%3A%20aPort%0A%09port%20%3A%3D%20aPort.%0A%09self%20start'),
  9086. messageSends: ["start"],
  9087. referencedClasses: []
  9088. }),
  9089. smalltalk.FileServer);
  9090. smalltalk.addMethod(
  9091. unescape('_start'),
  9092. smalltalk.method({
  9093. selector: unescape('start'),
  9094. category: 'starting',
  9095. fn: function (){
  9096. var self=this;
  9097. smalltalk.send(smalltalk.send(self['@http'], "_createServer_", [(function(request, response){return smalltalk.send(self, "_handleRequest_respondTo_", [request, response]);})]), "_listen_", [smalltalk.send(self, "_port", [])]);
  9098. smalltalk.send((typeof console == 'undefined' ? nil : console), "_log_", [smalltalk.send("Starting file server on port ", "__comma", [smalltalk.send(smalltalk.send(self, "_port", []), "_asString", [])])]);
  9099. return self;},
  9100. args: [],
  9101. source: unescape('start%0A%09%28http%20createServer%3A%20%5B%3Arequest%20%3Aresponse%20%7C%0A%09%20%09self%20handleRequest%3A%20request%20respondTo%3A%20response%5D%29%20listen%3A%20self%20port.%0A%09console%20log%3A%20%27Starting%20file%20server%20on%20port%20%27%2C%20self%20port%20asString'),
  9102. messageSends: ["listen:", "createServer:", "handleRequest:respondTo:", "port", "log:", unescape("%2C"), "asString"],
  9103. referencedClasses: []
  9104. }),
  9105. smalltalk.FileServer);
  9106. smalltalk.FileServer.klass.iVarNames = ['port','mimeTypes'];
  9107. smalltalk.addMethod(
  9108. unescape('_port'),
  9109. smalltalk.method({
  9110. selector: unescape('port'),
  9111. category: 'accessing',
  9112. fn: function (){
  9113. var self=this;
  9114. return (($receiver = self['@port']) == nil || $receiver == undefined) ? (function(){return (4000);})() : $receiver;
  9115. return self;},
  9116. args: [],
  9117. source: unescape('port%0A%09%5Eport%20ifNil%3A%20%5B4000%5D'),
  9118. messageSends: ["ifNil:"],
  9119. referencedClasses: []
  9120. }),
  9121. smalltalk.FileServer.klass);
  9122. smalltalk.addMethod(
  9123. unescape('_port_'),
  9124. smalltalk.method({
  9125. selector: unescape('port%3A'),
  9126. category: 'accessing',
  9127. fn: function (aNumber){
  9128. var self=this;
  9129. self['@port']=aNumber;
  9130. return self;},
  9131. args: ["aNumber"],
  9132. source: unescape('port%3A%20aNumber%0A%09port%20%3A%3D%20aNumber'),
  9133. messageSends: [],
  9134. referencedClasses: []
  9135. }),
  9136. smalltalk.FileServer.klass);
  9137. smalltalk.addMethod(
  9138. unescape('_defaultMimeTypes'),
  9139. smalltalk.method({
  9140. selector: unescape('defaultMimeTypes'),
  9141. category: 'accessing',
  9142. fn: function (){
  9143. var self=this;
  9144. return smalltalk.Dictionary._fromPairs_([smalltalk.send(unescape("%25"), "__minus_gt", [unescape("application/x-trash")]),smalltalk.send("323", "__minus_gt", [unescape("text/h323")]),smalltalk.send("abw", "__minus_gt", [unescape("application/x-abiword")]),smalltalk.send("ai", "__minus_gt", [unescape("application/postscript")]),smalltalk.send("aif", "__minus_gt", [unescape("audio/x-aiff")]),smalltalk.send("aifc", "__minus_gt", [unescape("audio/x-aiff")]),smalltalk.send("aiff", "__minus_gt", [unescape("audio/x-aiff")]),smalltalk.send("alc", "__minus_gt", [unescape("chemical/x-alchemy")]),smalltalk.send("art", "__minus_gt", [unescape("image/x-jg")]),smalltalk.send("asc", "__minus_gt", [unescape("text/plain")]),smalltalk.send("asf", "__minus_gt", [unescape("video/x-ms-asf")]),smalltalk.send("asn", "__minus_gt", [unescape("chemical/x-ncbi-asn1-spec")]),smalltalk.send("aso", "__minus_gt", [unescape("chemical/x-ncbi-asn1-binary")]),smalltalk.send("asx", "__minus_gt", [unescape("video/x-ms-asf")]),smalltalk.send("au", "__minus_gt", [unescape("audio/basic")]),smalltalk.send("avi", "__minus_gt", [unescape("video/x-msvideo")]),smalltalk.send("b", "__minus_gt", [unescape("chemical/x-molconn-Z")]),smalltalk.send("bak", "__minus_gt", [unescape("application/x-trash")]),smalltalk.send("bat", "__minus_gt", [unescape("application/x-msdos-program")]),smalltalk.send("bcpio", "__minus_gt", [unescape("application/x-bcpio")]),smalltalk.send("bib", "__minus_gt", [unescape("text/x-bibtex")]),smalltalk.send("bin", "__minus_gt", [unescape("application/octet-stream")]),smalltalk.send("bmp", "__minus_gt", [unescape("image/x-ms-bmp")]),smalltalk.send("book", "__minus_gt", [unescape("application/x-maker")]),smalltalk.send("bsd", "__minus_gt", [unescape("chemical/x-crossfire")]),smalltalk.send("c", "__minus_gt", [unescape("text/x-csrc")]),smalltalk.send(unescape("c++"), "__minus_gt", [unescape("text/x-c++src")]),smalltalk.send("c3d", "__minus_gt", [unescape("chemical/x-chem3d")]),smalltalk.send("cac", "__minus_gt", [unescape("chemical/x-cache")]),smalltalk.send("cache", "__minus_gt", [unescape("chemical/x-cache")]),smalltalk.send("cascii", "__minus_gt", [unescape("chemical/x-cactvs-binary")]),smalltalk.send("cat", "__minus_gt", [unescape("application/vnd.ms-pki.seccat")]),smalltalk.send("cbin", "__minus_gt", [unescape("chemical/x-cactvs-binary")]),smalltalk.send("cc", "__minus_gt", [unescape("text/x-c++src")]),smalltalk.send("cdf", "__minus_gt", [unescape("application/x-cdf")]),smalltalk.send("cdr", "__minus_gt", [unescape("image/x-coreldraw")]),smalltalk.send("cdt", "__minus_gt", [unescape("image/x-coreldrawtemplate")]),smalltalk.send("cdx", "__minus_gt", [unescape("chemical/x-cdx")]),smalltalk.send("cdy", "__minus_gt", [unescape("application/vnd.cinderella")]),smalltalk.send("cef", "__minus_gt", [unescape("chemical/x-cxf")]),smalltalk.send("cer", "__minus_gt", [unescape("chemical/x-cerius")]),smalltalk.send("chm", "__minus_gt", [unescape("chemical/x-chemdraw")]),smalltalk.send("chrt", "__minus_gt", [unescape("application/x-kchart")]),smalltalk.send("cif", "__minus_gt", [unescape("chemical/x-cif")]),smalltalk.send("class", "__minus_gt", [unescape("application/java-vm")]),smalltalk.send("cls", "__minus_gt", [unescape("text/x-tex")]),smalltalk.send("cmdf", "__minus_gt", [unescape("chemical/x-cmdf")]),smalltalk.send("cml", "__minus_gt", [unescape("chemical/x-cml")]),smalltalk.send("cod", "__minus_gt", [unescape("application/vnd.rim.cod")]),smalltalk.send("com", "__minus_gt", [unescape("application/x-msdos-program")]),smalltalk.send("cpa", "__minus_gt", [unescape("chemical/x-compass")]),smalltalk.send("cpio", "__minus_gt", [unescape("application/x-cpio")]),smalltalk.send("cpp", "__minus_gt", [unescape("text/x-c++src")]),smalltalk.send("cpt", "__minus_gt", [unescape("image/x-corelphotopaint")]),smalltalk.send("crl", "__minus_gt", [unescape("application/x-pkcs7-crl")]),smalltalk.send("crt", "__minus_gt", [unescape("application/x-x509-ca-cert")]),smalltalk.send("csf", "__minus_gt", [unescape("chemical/x-cache-csf")]),smalltalk.send("csh", "__minus_gt", [unescape("text/x-csh")]),smalltalk.send("csm", "__minus_gt", [unescape("chemical/x-csml")]),smalltalk.send("csml", "__minus_gt", [unescape("chemical/x-csml")]),smalltalk.send("css", "__minus_gt", [unescape("text/css")]),smalltalk.send("csv", "__minus_gt", [unescape("text/comma-separated-values")]),smalltalk.send("ctab", "__minus_gt", [unescape("chemical/x-cactvs-binary")]),smalltalk.send("ctx", "__minus_gt", [unescape("chemical/x-ctx")]),smalltalk.send("cu", "__minus_gt", [unescape("application/cu-seeme")]),smalltalk.send("cub", "__minus_gt", [unescape("chemical/x-gaussian-cube")]),smalltalk.send("cxf", "__minus_gt", [unescape("chemical/x-cxf")]),smalltalk.send("cxx", "__minus_gt", [unescape("text/x-c++src")]),smalltalk.send("dat", "__minus_gt", [unescape("chemical/x-mopac-input")]),smalltalk.send("dcr", "__minus_gt", [unescape("application/x-director")]),smalltalk.send("deb", "__minus_gt", [unescape("application/x-debian-package")]),smalltalk.send("dif", "__minus_gt", [unescape("video/dv")]),smalltalk.send("diff", "__minus_gt", [unescape("text/plain")]),smalltalk.send("dir", "__minus_gt", [unescape("application/x-director")]),smalltalk.send("djv", "__minus_gt", [unescape("image/vnd.djvu")]),smalltalk.send("djvu", "__minus_gt", [unescape("image/vnd.djvu")]),smalltalk.send("dl", "__minus_gt", [unescape("video/dl")]),smalltalk.send("dll", "__minus_gt", [unescape("application/x-msdos-program")]),smalltalk.send("dmg", "__minus_gt", [unescape("application/x-apple-diskimage")]),smalltalk.send("dms", "__minus_gt", [unescape("application/x-dms")]),smalltalk.send("doc", "__minus_gt", [unescape("application/msword")]),smalltalk.send("dot", "__minus_gt", [unescape("application/msword")]),smalltalk.send("dv", "__minus_gt", [unescape("video/dv")]),smalltalk.send("dvi", "__minus_gt", [unescape("application/x-dvi")]),smalltalk.send("dx", "__minus_gt", [unescape("chemical/x-jcamp-dx")]),smalltalk.send("dxr", "__minus_gt", [unescape("application/x-director")]),smalltalk.send("emb", "__minus_gt", [unescape("chemical/x-embl-dl-nucleotide")]),smalltalk.send("embl", "__minus_gt", [unescape("chemical/x-embl-dl-nucleotide")]),smalltalk.send("ent", "__minus_gt", [unescape("chemical/x-pdb")]),smalltalk.send("eps", "__minus_gt", [unescape("application/postscript")]),smalltalk.send("etx", "__minus_gt", [unescape("text/x-setext")]),smalltalk.send("exe", "__minus_gt", [unescape("application/x-msdos-program")]),smalltalk.send("ez", "__minus_gt", [unescape("application/andrew-inset")]),smalltalk.send("fb", "__minus_gt", [unescape("application/x-maker")]),smalltalk.send("fbdoc", "__minus_gt", [unescape("application/x-maker")]),smalltalk.send("fch", "__minus_gt", [unescape("chemical/x-gaussian-checkpoint")]),smalltalk.send("fchk", "__minus_gt", [unescape("chemical/x-gaussian-checkpoint")]),smalltalk.send("fig", "__minus_gt", [unescape("application/x-xfig")]),smalltalk.send("flac", "__minus_gt", [unescape("application/x-flac")]),smalltalk.send("fli", "__minus_gt", [unescape("video/fli")]),smalltalk.send("fm", "__minus_gt", [unescape("application/x-maker")]),smalltalk.send("frame", "__minus_gt", [unescape("application/x-maker")]),smalltalk.send("frm", "__minus_gt", [unescape("application/x-maker")]),smalltalk.send("gal", "__minus_gt", [unescape("chemical/x-gaussian-log")]),smalltalk.send("gam", "__minus_gt", [unescape("chemical/x-gamess-input")]),smalltalk.send("gamin", "__minus_gt", [unescape("chemical/x-gamess-input")]),smalltalk.send("gau", "__minus_gt", [unescape("chemical/x-gaussian-input")]),smalltalk.send("gcd", "__minus_gt", [unescape("text/x-pcs-gcd")]),smalltalk.send("gcf", "__minus_gt", [unescape("application/x-graphing-calculator")]),smalltalk.send("gcg", "__minus_gt", [unescape("chemical/x-gcg8-sequence")]),smalltalk.send("gen", "__minus_gt", [unescape("chemical/x-genbank")]),smalltalk.send("gf", "__minus_gt", [unescape("application/x-tex-gf")]),smalltalk.send("gif", "__minus_gt", [unescape("image/gif")]),smalltalk.send("gjc", "__minus_gt", [unescape("chemical/x-gaussian-input")]),smalltalk.send("gjf", "__minus_gt", [unescape("chemical/x-gaussian-input")]),smalltalk.send("gl", "__minus_gt", [unescape("video/gl")]),smalltalk.send("gnumeric", "__minus_gt", [unescape("application/x-gnumeric")]),smalltalk.send("gpt", "__minus_gt", [unescape("chemical/x-mopac-graph")]),smalltalk.send("gsf", "__minus_gt", [unescape("application/x-font")]),smalltalk.send("gsm", "__minus_gt", [unescape("audio/x-gsm")]),smalltalk.send("gtar", "__minus_gt", [unescape("application/x-gtar")]),smalltalk.send("h", "__minus_gt", [unescape("text/x-chdr")]),smalltalk.send(unescape("h++"), "__minus_gt", [unescape("text/x-c++hdr")]),smalltalk.send("hdf", "__minus_gt", [unescape("application/x-hdf")]),smalltalk.send("hh", "__minus_gt", [unescape("text/x-c++hdr")]),smalltalk.send("hin", "__minus_gt", [unescape("chemical/x-hin")]),smalltalk.send("hpp", "__minus_gt", [unescape("text/x-c++hdr")]),smalltalk.send("hqx", "__minus_gt", [unescape("application/mac-binhex40")]),smalltalk.send("hs", "__minus_gt", [unescape("text/x-haskell")]),smalltalk.send("hta", "__minus_gt", [unescape("application/hta")]),smalltalk.send("htc", "__minus_gt", [unescape("text/x-component")]),smalltalk.send("htm", "__minus_gt", [unescape("text/html")]),smalltalk.send("html", "__minus_gt", [unescape("text/html")]),smalltalk.send("hxx", "__minus_gt", [unescape("text/x-c++hdr")]),smalltalk.send("ica", "__minus_gt", [unescape("application/x-ica")]),smalltalk.send("ice", "__minus_gt", [unescape("x-conference/x-cooltalk")]),smalltalk.send("ico", "__minus_gt", [unescape("image/x-icon")]),smalltalk.send("ics", "__minus_gt", [unescape("text/calendar")]),smalltalk.send("icz", "__minus_gt", [unescape("text/calendar")]),smalltalk.send("ief", "__minus_gt", [unescape("image/ief")]),smalltalk.send("iges", "__minus_gt", [unescape("model/iges")]),smalltalk.send("igs", "__minus_gt", [unescape("model/iges")]),smalltalk.send("iii", "__minus_gt", [unescape("application/x-iphone")]),smalltalk.send("inp", "__minus_gt", [unescape("chemical/x-gamess-input")]),smalltalk.send("ins", "__minus_gt", [unescape("application/x-internet-signup")]),smalltalk.send("iso", "__minus_gt", [unescape("application/x-iso9660-image")]),smalltalk.send("isp", "__minus_gt", [unescape("application/x-internet-signup")]),smalltalk.send("ist", "__minus_gt", [unescape("chemical/x-isostar")]),smalltalk.send("istr", "__minus_gt", [unescape("chemical/x-isostar")]),smalltalk.send("jad", "__minus_gt", [unescape("text/vnd.sun.j2me.app-descriptor")]),smalltalk.send("jar", "__minus_gt", [unescape("application/java-archive")]),smalltalk.send("java", "__minus_gt", [unescape("text/x-java")]),smalltalk.send("jdx", "__minus_gt", [unescape("chemical/x-jcamp-dx")]),smalltalk.send("jmz", "__minus_gt", [unescape("application/x-jmol")]),smalltalk.send("jng", "__minus_gt", [unescape("image/x-jng")]),smalltalk.send("jnlp", "__minus_gt", [unescape("application/x-java-jnlp-file")]),smalltalk.send("jpe", "__minus_gt", [unescape("image/jpeg")]),smalltalk.send("jpeg", "__minus_gt", [unescape("image/jpeg")]),smalltalk.send("jpg", "__minus_gt", [unescape("image/jpeg")]),smalltalk.send("js", "__minus_gt", [unescape("application/javascript")]),smalltalk.send("kar", "__minus_gt", [unescape("audio/midi")]),smalltalk.send("key", "__minus_gt", [unescape("application/pgp-keys")]),smalltalk.send("kil", "__minus_gt", [unescape("application/x-killustrator")]),smalltalk.send("kin", "__minus_gt", [unescape("chemical/x-kinemage")]),smalltalk.send("kpr", "__minus_gt", [unescape("application/x-kpresenter")]),smalltalk.send("kpt", "__minus_gt", [unescape("application/x-kpresenter")]),smalltalk.send("ksp", "__minus_gt", [unescape("application/x-kspread")]),smalltalk.send("kwd", "__minus_gt", [unescape("application/x-kword")]),smalltalk.send("kwt", "__minus_gt", [unescape("application/x-kword")]),smalltalk.send("latex", "__minus_gt", [unescape("application/x-latex")]),smalltalk.send("lha", "__minus_gt", [unescape("application/x-lha")]),smalltalk.send("lhs", "__minus_gt", [unescape("text/x-literate-haskell")]),smalltalk.send("lsf", "__minus_gt", [unescape("video/x-la-asf")]),smalltalk.send("lsx", "__minus_gt", [unescape("video/x-la-asf")]),smalltalk.send("ltx", "__minus_gt", [unescape("text/x-tex")]),smalltalk.send("lzh", "__minus_gt", [unescape("application/x-lzh")]),smalltalk.send("lzx", "__minus_gt", [unescape("application/x-lzx")]),smalltalk.send("m3u", "__minus_gt", [unescape("audio/x-mpegurl")]),smalltalk.send("m4a", "__minus_gt", [unescape("audio/mpeg")]),smalltalk.send("maker", "__minus_gt", [unescape("application/x-maker")]),smalltalk.send("man", "__minus_gt", [unescape("application/x-troff-man")]),smalltalk.send("mcif", "__minus_gt", [unescape("chemical/x-mmcif")]),smalltalk.send("mcm", "__minus_gt", [unescape("chemical/x-macmolecule")]),smalltalk.send("mdb", "__minus_gt", [unescape("application/msaccess")]),smalltalk.send("me", "__minus_gt", [unescape("application/x-troff-me")]),smalltalk.send("mesh", "__minus_gt", [unescape("model/mesh")]),smalltalk.send("mid", "__minus_gt", [unescape("audio/midi")]),smalltalk.send("midi", "__minus_gt", [unescape("audio/midi")]),smalltalk.send("mif", "__minus_gt", [unescape("application/x-mif")]),smalltalk.send("mm", "__minus_gt", [unescape("application/x-freemind")]),smalltalk.send("mmd", "__minus_gt", [unescape("chemical/x-macromodel-input")]),smalltalk.send("mmf", "__minus_gt", [unescape("application/vnd.smaf")]),smalltalk.send("mml", "__minus_gt", [unescape("text/mathml")]),smalltalk.send("mmod", "__minus_gt", [unescape("chemical/x-macromodel-input")]),smalltalk.send("mng", "__minus_gt", [unescape("video/x-mng")]),smalltalk.send("moc", "__minus_gt", [unescape("text/x-moc")]),smalltalk.send("mol", "__minus_gt", [unescape("chemical/x-mdl-molfile")]),smalltalk.send("mol2", "__minus_gt", [unescape("chemical/x-mol2")]),smalltalk.send("moo", "__minus_gt", [unescape("chemical/x-mopac-out")]),smalltalk.send("mop", "__minus_gt", [unescape("chemical/x-mopac-input")]),smalltalk.send("mopcrt", "__minus_gt", [unescape("chemical/x-mopac-input")]),smalltalk.send("mov", "__minus_gt", [unescape("video/quicktime")]),smalltalk.send("movie", "__minus_gt", [unescape("video/x-sgi-movie")]),smalltalk.send("mp2", "__minus_gt", [unescape("audio/mpeg")]),smalltalk.send("mp3", "__minus_gt", [unescape("audio/mpeg")]),smalltalk.send("mp4", "__minus_gt", [unescape("video/mp4")]),smalltalk.send("mpc", "__minus_gt", [unescape("chemical/x-mopac-input")]),smalltalk.send("mpe", "__minus_gt", [unescape("video/mpeg")]),smalltalk.send("mpeg", "__minus_gt", [unescape("video/mpeg")]),smalltalk.send("mpega", "__minus_gt", [unescape("audio/mpeg")]),smalltalk.send("mpg", "__minus_gt", [unescape("video/mpeg")]),smalltalk.send("mpga", "__minus_gt", [unescape("audio/mpeg")]),smalltalk.send("ms", "__minus_gt", [unescape("application/x-troff-ms")]),smalltalk.send("msh", "__minus_gt", [unescape("model/mesh")]),smalltalk.send("msi", "__minus_gt", [unescape("application/x-msi")]),smalltalk.send("mvb", "__minus_gt", [unescape("chemical/x-mopac-vib")]),smalltalk.send("mxu", "__minus_gt", [unescape("video/vnd.mpegurl")]),smalltalk.send("nb", "__minus_gt", [unescape("application/mathematica")]),smalltalk.send("nc", "__minus_gt", [unescape("application/x-netcdf")]),smalltalk.send("nwc", "__minus_gt", [unescape("application/x-nwc")]),smalltalk.send("o", "__minus_gt", [unescape("application/x-object")]),smalltalk.send("oda", "__minus_gt", [unescape("application/oda")]),smalltalk.send("odb", "__minus_gt", [unescape("application/vnd.oasis.opendocument.database")]),smalltalk.send("odc", "__minus_gt", [unescape("application/vnd.oasis.opendocument.chart")]),smalltalk.send("odf", "__minus_gt", [unescape("application/vnd.oasis.opendocument.formula")]),smalltalk.send("odg", "__minus_gt", [unescape("application/vnd.oasis.opendocument.graphics")]),smalltalk.send("odi", "__minus_gt", [unescape("application/vnd.oasis.opendocument.image")]),smalltalk.send("odm", "__minus_gt", [unescape("application/vnd.oasis.opendocument.text-master")]),smalltalk.send("odp", "__minus_gt", [unescape("application/vnd.oasis.opendocument.presentation")]),smalltalk.send("ods", "__minus_gt", [unescape("application/vnd.oasis.opendocument.spreadsheet")]),smalltalk.send("odt", "__minus_gt", [unescape("application/vnd.oasis.opendocument.text")]),smalltalk.send("ogg", "__minus_gt", [unescape("application/ogg")]),smalltalk.send("old", "__minus_gt", [unescape("application/x-trash")]),smalltalk.send("oth", "__minus_gt", [unescape("application/vnd.oasis.opendocument.text-web")]),smalltalk.send("oza", "__minus_gt", [unescape("application/x-oz-application")]),smalltalk.send("p", "__minus_gt", [unescape("text/x-pascal")]),smalltalk.send("p7r", "__minus_gt", [unescape("application/x-pkcs7-certreqresp")]),smalltalk.send("pac", "__minus_gt", [unescape("application/x-ns-proxy-autoconfig")]),smalltalk.send("pas", "__minus_gt", [unescape("text/x-pascal")]),smalltalk.send("pat", "__minus_gt", [unescape("image/x-coreldrawpattern")]),smalltalk.send("pbm", "__minus_gt", [unescape("image/x-portable-bitmap")]),smalltalk.send("pcf", "__minus_gt", [unescape("application/x-font")]),smalltalk.send("pcf.Z", "__minus_gt", [unescape("application/x-font")]),smalltalk.send("pcx", "__minus_gt", [unescape("image/pcx")]),smalltalk.send("pdb", "__minus_gt", [unescape("chemical/x-pdb")]),smalltalk.send("pdf", "__minus_gt", [unescape("application/pdf")]),smalltalk.send("pfa", "__minus_gt", [unescape("application/x-font")]),smalltalk.send("pfb", "__minus_gt", [unescape("application/x-font")]),smalltalk.send("pgm", "__minus_gt", [unescape("image/x-portable-graymap")]),smalltalk.send("pgn", "__minus_gt", [unescape("application/x-chess-pgn")]),smalltalk.send("pgp", "__minus_gt", [unescape("application/pgp-signature")]),smalltalk.send("pk", "__minus_gt", [unescape("application/x-tex-pk")]),smalltalk.send("pl", "__minus_gt", [unescape("text/x-perl")]),smalltalk.send("pls", "__minus_gt", [unescape("audio/x-scpls")]),smalltalk.send("pm", "__minus_gt", [unescape("text/x-perl")]),smalltalk.send("png", "__minus_gt", [unescape("image/png")]),smalltalk.send("pnm", "__minus_gt", [unescape("image/x-portable-anymap")]),smalltalk.send("pot", "__minus_gt", [unescape("text/plain")]),smalltalk.send("ppm", "__minus_gt", [unescape("image/x-portable-pixmap")]),smalltalk.send("pps", "__minus_gt", [unescape("application/vnd.ms-powerpoint")]),smalltalk.send("ppt", "__minus_gt", [unescape("application/vnd.ms-powerpoint")]),smalltalk.send("prf", "__minus_gt", [unescape("application/pics-rules")]),smalltalk.send("prt", "__minus_gt", [unescape("chemical/x-ncbi-asn1-ascii")]),smalltalk.send("ps", "__minus_gt", [unescape("application/postscript")]),smalltalk.send("psd", "__minus_gt", [unescape("image/x-photoshop")]),smalltalk.send("psp", "__minus_gt", [unescape("text/x-psp")]),smalltalk.send("py", "__minus_gt", [unescape("text/x-python")]),smalltalk.send("pyc", "__minus_gt", [unescape("application/x-python-code")]),smalltalk.send("pyo", "__minus_gt", [unescape("application/x-python-code")]),smalltalk.send("qt", "__minus_gt", [unescape("video/quicktime")]),smalltalk.send("qtl", "__minus_gt", [unescape("application/x-quicktimeplayer")]),smalltalk.send("ra", "__minus_gt", [unescape("audio/x-realaudio")]),smalltalk.send("ram", "__minus_gt", [unescape("audio/x-pn-realaudio")]),smalltalk.send("rar", "__minus_gt", [unescape("application/rar")]),smalltalk.send("ras", "__minus_gt", [unescape("image/x-cmu-raster")]),smalltalk.send("rd", "__minus_gt", [unescape("chemical/x-mdl-rdfile")]),smalltalk.send("rdf", "__minus_gt", [unescape("application/rdf+xml")]),smalltalk.send("rgb", "__minus_gt", [unescape("image/x-rgb")]),smalltalk.send("rm", "__minus_gt", [unescape("audio/x-pn-realaudio")]),smalltalk.send("roff", "__minus_gt", [unescape("application/x-troff")]),smalltalk.send("ros", "__minus_gt", [unescape("chemical/x-rosdal")]),smalltalk.send("rpm", "__minus_gt", [unescape("application/x-redhat-package-manager")]),smalltalk.send("rss", "__minus_gt", [unescape("application/rss+xml")]),smalltalk.send("rtf", "__minus_gt", [unescape("text/rtf")]),smalltalk.send("rtx", "__minus_gt", [unescape("text/richtext")]),smalltalk.send("rxn", "__minus_gt", [unescape("chemical/x-mdl-rxnfile")]),smalltalk.send("sct", "__minus_gt", [unescape("text/scriptlet")]),smalltalk.send("sd", "__minus_gt", [unescape("chemical/x-mdl-sdfile")]),smalltalk.send("sd2", "__minus_gt", [unescape("audio/x-sd2")]),smalltalk.send("sda", "__minus_gt", [unescape("application/vnd.stardivision.draw")]),smalltalk.send("sdc", "__minus_gt", [unescape("application/vnd.stardivision.calc")]),smalltalk.send("sdd", "__minus_gt", [unescape("application/vnd.stardivision.impress")]),smalltalk.send("sdf", "__minus_gt", [unescape("chemical/x-mdl-sdfile")]),smalltalk.send("sdp", "__minus_gt", [unescape("application/vnd.stardivision.impress")]),smalltalk.send("sdw", "__minus_gt", [unescape("application/vnd.stardivision.writer")]),smalltalk.send("ser", "__minus_gt", [unescape("application/java-serialized-object")]),smalltalk.send("sgf", "__minus_gt", [unescape("application/x-go-sgf")]),smalltalk.send("sgl", "__minus_gt", [unescape("application/vnd.stardivision.writer-global")]),smalltalk.send("sh", "__minus_gt", [unescape("text/x-sh")]),smalltalk.send("shar", "__minus_gt", [unescape("application/x-shar")]),smalltalk.send("shtml", "__minus_gt", [unescape("text/html")]),smalltalk.send("sid", "__minus_gt", [unescape("audio/prs.sid")]),smalltalk.send("sik", "__minus_gt", [unescape("application/x-trash")]),smalltalk.send("silo", "__minus_gt", [unescape("model/mesh")]),smalltalk.send("sis", "__minus_gt", [unescape("application/vnd.symbian.install")]),smalltalk.send("sit", "__minus_gt", [unescape("application/x-stuffit")]),smalltalk.send("skd", "__minus_gt", [unescape("application/x-koan")]),smalltalk.send("skm", "__minus_gt", [unescape("application/x-koan")]),smalltalk.send("skp", "__minus_gt", [unescape("application/x-koan")]),smalltalk.send("skt", "__minus_gt", [unescape("application/x-koan")]),smalltalk.send("smf", "__minus_gt", [unescape("application/vnd.stardivision.math")]),smalltalk.send("smi", "__minus_gt", [unescape("application/smil")]),smalltalk.send("smil", "__minus_gt", [unescape("application/smil")]),smalltalk.send("snd", "__minus_gt", [unescape("audio/basic")]),smalltalk.send("spc", "__minus_gt", [unescape("chemical/x-galactic-spc")]),smalltalk.send("spl", "__minus_gt", [unescape("application/x-futuresplash")]),smalltalk.send("src", "__minus_gt", [unescape("application/x-wais-source")]),smalltalk.send("stc", "__minus_gt", [unescape("application/vnd.sun.xml.calc.template")]),smalltalk.send("std", "__minus_gt", [unescape("application/vnd.sun.xml.draw.template")]),smalltalk.send("sti", "__minus_gt", [unescape("application/vnd.sun.xml.impress.template")]),smalltalk.send("stl", "__minus_gt", [unescape("application/vnd.ms-pki.stl")]),smalltalk.send("stw", "__minus_gt", [unescape("application/vnd.sun.xml.writer.template")]),smalltalk.send("sty", "__minus_gt", [unescape("text/x-tex")]),smalltalk.send("sv4cpio", "__minus_gt", [unescape("application/x-sv4cpio")]),smalltalk.send("sv4crc", "__minus_gt", [unescape("application/x-sv4crc")]),smalltalk.send("svg", "__minus_gt", [unescape("image/svg+xml")]),smalltalk.send("svgz", "__minus_gt", [unescape("image/svg+xml")]),smalltalk.send("sw", "__minus_gt", [unescape("chemical/x-swissprot")]),smalltalk.send("swf", "__minus_gt", [unescape("application/x-shockwave-flash")]),smalltalk.send("swfl", "__minus_gt", [unescape("application/x-shockwave-flash")]),smalltalk.send("sxc", "__minus_gt", [unescape("application/vnd.sun.xml.calc")]),smalltalk.send("sxd", "__minus_gt", [unescape("application/vnd.sun.xml.draw")]),smalltalk.send("sxg", "__minus_gt", [unescape("application/vnd.sun.xml.writer.global")]),smalltalk.send("sxi", "__minus_gt", [unescape("application/vnd.sun.xml.impress")]),smalltalk.send("sxm", "__minus_gt", [unescape("application/vnd.sun.xml.math")]),smalltalk.send("sxw", "__minus_gt", [unescape("application/vnd.sun.xml.writer")]),smalltalk.send("t", "__minus_gt", [unescape("application/x-troff")]),smalltalk.send("tar", "__minus_gt", [unescape("application/x-tar")]),smalltalk.send("taz", "__minus_gt", [unescape("application/x-gtar")]),smalltalk.send("tcl", "__minus_gt", [unescape("text/x-tcl")]),smalltalk.send("tex", "__minus_gt", [unescape("text/x-tex")]),smalltalk.send("texi", "__minus_gt", [unescape("application/x-texinfo")]),smalltalk.send("texinfo", "__minus_gt", [unescape("application/x-texinfo")]),smalltalk.send("text", "__minus_gt", [unescape("text/plain")]),smalltalk.send("tgf", "__minus_gt", [unescape("chemical/x-mdl-tgf")]),smalltalk.send("tgz", "__minus_gt", [unescape("application/x-gtar")]),smalltalk.send("tif", "__minus_gt", [unescape("image/tiff")]),smalltalk.send("tiff", "__minus_gt", [unescape("image/tiff")]),smalltalk.send("tk", "__minus_gt", [unescape("text/x-tcl")]),smalltalk.send("tm", "__minus_gt", [unescape("text/texmacs")]),smalltalk.send("torrent", "__minus_gt", [unescape("application/x-bittorrent")]),smalltalk.send("tr", "__minus_gt", [unescape("application/x-troff")]),smalltalk.send("ts", "__minus_gt", [unescape("text/texmacs")]),smalltalk.send("tsp", "__minus_gt", [unescape("application/dsptype")]),smalltalk.send("tsv", "__minus_gt", [unescape("text/tab-separated-values")]),smalltalk.send("txt", "__minus_gt", [unescape("text/plain")]),smalltalk.send("udeb", "__minus_gt", [unescape("application/x-debian-package")]),smalltalk.send("uls", "__minus_gt", [unescape("text/iuls")]),smalltalk.send("ustar", "__minus_gt", [unescape("application/x-ustar")]),smalltalk.send("val", "__minus_gt", [unescape("chemical/x-ncbi-asn1-binary")]),smalltalk.send("vcd", "__minus_gt", [unescape("application/x-cdlink")]),smalltalk.send("vcf", "__minus_gt", [unescape("text/x-vcard")]),smalltalk.send("vcs", "__minus_gt", [unescape("text/x-vcalendar")]),smalltalk.send("vmd", "__minus_gt", [unescape("chemical/x-vmd")]),smalltalk.send("vms", "__minus_gt", [unescape("chemical/x-vamas-iso14976")]),smalltalk.send("vor", "__minus_gt", [unescape("application/vnd.stardivision.writer")]),smalltalk.send("vrm", "__minus_gt", [unescape("x-world/x-vrml")]),smalltalk.send("vrml", "__minus_gt", [unescape("x-world/x-vrml")]),smalltalk.send("vsd", "__minus_gt", [unescape("application/vnd.visio")]),smalltalk.send("wad", "__minus_gt", [unescape("application/x-doom")]),smalltalk.send("wav", "__minus_gt", [unescape("audio/x-wav")]),smalltalk.send("wax", "__minus_gt", [unescape("audio/x-ms-wax")]),smalltalk.send("wbmp", "__minus_gt", [unescape("image/vnd.wap.wbmp")]),smalltalk.send("wbxml", "__minus_gt", [unescape("application/vnd.wap.wbxml")]),smalltalk.send("wk", "__minus_gt", [unescape("application/x-123")]),smalltalk.send("wm", "__minus_gt", [unescape("video/x-ms-wm")]),smalltalk.send("wma", "__minus_gt", [unescape("audio/x-ms-wma")]),smalltalk.send("wmd", "__minus_gt", [unescape("application/x-ms-wmd")]),smalltalk.send("wml", "__minus_gt", [unescape("text/vnd.wap.wml")]),smalltalk.send("wmlc", "__minus_gt", [unescape("application/vnd.wap.wmlc")]),smalltalk.send("wmls", "__minus_gt", [unescape("text/vnd.wap.wmlscript")]),smalltalk.send("wmlsc", "__minus_gt", [unescape("application/vnd.wap.wmlscriptc")]),smalltalk.send("wmv", "__minus_gt", [unescape("video/x-ms-wmv")]),smalltalk.send("wmx", "__minus_gt", [unescape("video/x-ms-wmx")]),smalltalk.send("wmz", "__minus_gt", [unescape("application/x-ms-wmz")]),smalltalk.send("wp5", "__minus_gt", [unescape("application/wordperfect5.1")]),smalltalk.send("wpd", "__minus_gt", [unescape("application/wordperfect")]),smalltalk.send("wrl", "__minus_gt", [unescape("x-world/x-vrml")]),smalltalk.send("wsc", "__minus_gt", [unescape("text/scriptlet")]),smalltalk.send("wvx", "__minus_gt", [unescape("video/x-ms-wvx")]),smalltalk.send("wz", "__minus_gt", [unescape("application/x-wingz")]),smalltalk.send("xbm", "__minus_gt", [unescape("image/x-xbitmap")]),smalltalk.send("xcf", "__minus_gt", [unescape("application/x-xcf")]),smalltalk.send("xht", "__minus_gt", [unescape("application/xhtml+xml")]),smalltalk.send("xhtml", "__minus_gt", [unescape("application/xhtml+xml")]),smalltalk.send("xlb", "__minus_gt", [unescape("application/vnd.ms-excel")]),smalltalk.send("xls", "__minus_gt", [unescape("application/vnd.ms-excel")]),smalltalk.send("xlt", "__minus_gt", [unescape("application/vnd.ms-excel")]),smalltalk.send("xml", "__minus_gt", [unescape("application/xml")]),smalltalk.send("xpi", "__minus_gt", [unescape("application/x-xpinstall")]),smalltalk.send("xpm", "__minus_gt", [unescape("image/x-xpixmap")]),smalltalk.send("xsl", "__minus_gt", [unescape("application/xml")]),smalltalk.send("xtel", "__minus_gt", [unescape("chemical/x-xtel")]),smalltalk.send("xul", "__minus_gt", [unescape("application/vnd.mozilla.xul+xml")]),smalltalk.send("xwd", "__minus_gt", [unescape("image/x-xwindowdump")]),smalltalk.send("xyz", "__minus_gt", [unescape("chemical/x-xyz")]),smalltalk.send("zip", "__minus_gt", [unescape("application/zip")]),smalltalk.send("zmt", "__minus_gt", [unescape("chemical/x-mopac-input")]),smalltalk.send(unescape("%7E"), "__minus_gt", [unescape("application/x-trash")])]);
  9145. return self;},
  9146. args: [],
  9147. source: unescape('defaultMimeTypes%0A%09%5E%20%23%7B%0A%09%09%27%25%27%20-%3E%20%27application/x-trash%27.%0A%09%09%27323%27%20-%3E%20%27text/h323%27.%0A%09%09%27abw%27%20-%3E%20%27application/x-abiword%27.%0A%09%09%27ai%27%20-%3E%20%27application/postscript%27.%0A%09%09%27aif%27%20-%3E%20%27audio/x-aiff%27.%0A%09%09%27aifc%27%20-%3E%20%27audio/x-aiff%27.%0A%09%09%27aiff%27%20-%3E%20%27audio/x-aiff%27.%0A%09%09%27alc%27%20-%3E%20%27chemical/x-alchemy%27.%0A%09%09%27art%27%20-%3E%20%27image/x-jg%27.%0A%09%09%27asc%27%20-%3E%20%27text/plain%27.%0A%09%09%27asf%27%20-%3E%20%27video/x-ms-asf%27.%0A%09%09%27asn%27%20-%3E%20%27chemical/x-ncbi-asn1-spec%27.%0A%09%09%27aso%27%20-%3E%20%27chemical/x-ncbi-asn1-binary%27.%0A%09%09%27asx%27%20-%3E%20%27video/x-ms-asf%27.%0A%09%09%27au%27%20-%3E%20%27audio/basic%27.%0A%09%09%27avi%27%20-%3E%20%27video/x-msvideo%27.%0A%09%09%27b%27%20-%3E%20%27chemical/x-molconn-Z%27.%0A%09%09%27bak%27%20-%3E%20%27application/x-trash%27.%0A%09%09%27bat%27%20-%3E%20%27application/x-msdos-program%27.%0A%09%09%27bcpio%27%20-%3E%20%27application/x-bcpio%27.%0A%09%09%27bib%27%20-%3E%20%27text/x-bibtex%27.%0A%09%09%27bin%27%20-%3E%20%27application/octet-stream%27.%0A%09%09%27bmp%27%20-%3E%20%27image/x-ms-bmp%27.%0A%09%09%27book%27%20-%3E%20%27application/x-maker%27.%0A%09%09%27bsd%27%20-%3E%20%27chemical/x-crossfire%27.%0A%09%09%27c%27%20-%3E%20%27text/x-csrc%27.%0A%09%09%27c++%27%20-%3E%20%27text/x-c++src%27.%0A%09%09%27c3d%27%20-%3E%20%27chemical/x-chem3d%27.%0A%09%09%27cac%27%20-%3E%20%27chemical/x-cache%27.%0A%09%09%27cache%27%20-%3E%20%27chemical/x-cache%27.%0A%09%09%27cascii%27%20-%3E%20%27chemical/x-cactvs-binary%27.%0A%09%09%27cat%27%20-%3E%20%27application/vnd.ms-pki.seccat%27.%0A%09%09%27cbin%27%20-%3E%20%27chemical/x-cactvs-binary%27.%0A%09%09%27cc%27%20-%3E%20%27text/x-c++src%27.%0A%09%09%27cdf%27%20-%3E%20%27application/x-cdf%27.%0A%09%09%27cdr%27%20-%3E%20%27image/x-coreldraw%27.%0A%09%09%27cdt%27%20-%3E%20%27image/x-coreldrawtemplate%27.%0A%09%09%27cdx%27%20-%3E%20%27chemical/x-cdx%27.%0A%09%09%27cdy%27%20-%3E%20%27application/vnd.cinderella%27.%0A%09%09%27cef%27%20-%3E%20%27chemical/x-cxf%27.%0A%09%09%27cer%27%20-%3E%20%27chemical/x-cerius%27.%0A%09%09%27chm%27%20-%3E%20%27chemical/x-chemdraw%27.%0A%09%09%27chrt%27%20-%3E%20%27application/x-kchart%27.%0A%09%09%27cif%27%20-%3E%20%27chemical/x-cif%27.%0A%09%09%27class%27%20-%3E%20%27application/java-vm%27.%0A%09%09%27cls%27%20-%3E%20%27text/x-tex%27.%0A%09%09%27cmdf%27%20-%3E%20%27chemical/x-cmdf%27.%0A%09%09%27cml%27%20-%3E%20%27chemical/x-cml%27.%0A%09%09%27cod%27%20-%3E%20%27application/vnd.rim.cod%27.%0A%09%09%27com%27%20-%3E%20%27application/x-msdos-program%27.%0A%09%09%27cpa%27%20-%3E%20%27chemical/x-compass%27.%0A%09%09%27cpio%27%20-%3E%20%27application/x-cpio%27.%0A%09%09%27cpp%27%20-%3E%20%27text/x-c++src%27.%0A%09%09%27cpt%27%20-%3E%20%27image/x-corelphotopaint%27.%0A%09%09%27crl%27%20-%3E%20%27application/x-pkcs7-crl%27.%0A%09%09%27crt%27%20-%3E%20%27application/x-x509-ca-cert%27.%0A%09%09%27csf%27%20-%3E%20%27chemical/x-cache-csf%27.%0A%09%09%27csh%27%20-%3E%20%27text/x-csh%27.%0A%09%09%27csm%27%20-%3E%20%27chemical/x-csml%27.%0A%09%09%27csml%27%20-%3E%20%27chemical/x-csml%27.%0A%09%09%27css%27%20-%3E%20%27text/css%27.%0A%09%09%27csv%27%20-%3E%20%27text/comma-separated-values%27.%0A%09%09%27ctab%27%20-%3E%20%27chemical/x-cactvs-binary%27.%0A%09%09%27ctx%27%20-%3E%20%27chemical/x-ctx%27.%0A%09%09%27cu%27%20-%3E%20%27application/cu-seeme%27.%0A%09%09%27cub%27%20-%3E%20%27chemical/x-gaussian-cube%27.%0A%09%09%27cxf%27%20-%3E%20%27chemical/x-cxf%27.%0A%09%09%27cxx%27%20-%3E%20%27text/x-c++src%27.%0A%09%09%27dat%27%20-%3E%20%27chemical/x-mopac-input%27.%0A%09%09%27dcr%27%20-%3E%20%27application/x-director%27.%0A%09%09%27deb%27%20-%3E%20%27application/x-debian-package%27.%0A%09%09%27dif%27%20-%3E%20%27video/dv%27.%0A%09%09%27diff%27%20-%3E%20%27text/plain%27.%0A%09%09%27dir%27%20-%3E%20%27application/x-director%27.%0A%09%09%27djv%27%20-%3E%20%27image/vnd.djvu%27.%0A%09%09%27djvu%27%20-%3E%20%27image/vnd.djvu%27.%0A%09%09%27dl%27%20-%3E%20%27video/dl%27.%0A%09%09%27dll%27%20-%3E%20%27application/x-msdos-program%27.%0A%09%09%27dmg%27%20-%3E%20%27application/x-apple-diskimage%27.%0A%09%09%27dms%27%20-%3E%20%27application/x-dms%27.%0A%09%09%27doc%27%20-%3E%20%27application/msword%27.%0A%09%09%27dot%27%20-%3E%20%27application/msword%27.%0A%09%09%27dv%27%20-%3E%20%27video/dv%27.%0A%09%09%27dvi%27%20-%3E%20%27application/x-dvi%27.%0A%09%09%27dx%27%20-%3E%20%27chemical/x-jcamp-dx%27.%0A%09%09%27dxr%27%20-%3E%20%27application/x-director%27.%0A%09%09%27emb%27%20-%3E%20%27chemical/x-embl-dl-nucleotide%27.%0A%09%09%27embl%27%20-%3E%20%27chemical/x-embl-dl-nucleotide%27.%0A%09%09%27ent%27%20-%3E%20%27chemical/x-pdb%27.%0A%09%09%27eps%27%20-%3E%20%27application/postscript%27.%0A%09%09%27etx%27%20-%3E%20%27text/x-setext%27.%0A%09%09%27exe%27%20-%3E%20%27application/x-msdos-program%27.%0A%09%09%27ez%27%20-%3E%20%27application/andrew-inset%27.%0A%09%09%27fb%27%20-%3E%20%27application/x-maker%27.%0A%09%09%27fbdoc%27%20-%3E%20%27application/x-maker%27.%0A%09%09%27fch%27%20-%3E%20%27chemical/x-gaussian-checkpoint%27.%0A%09%09%27fchk%27%20-%3E%20%27chemical/x-gaussian-checkpoint%27.%0A%09%09%27fig%27%20-%3E%20%27application/x-xfig%27.%0A%09%09%27flac%27%20-%3E%20%27application/x-flac%27.%0A%09%09%27fli%27%20-%3E%20%27video/fli%27.%0A%09%09%27fm%27%20-%3E%20%27application/x-maker%27.%0A%09%09%27frame%27%20-%3E%20%27application/x-maker%27.%0A%09%09%27frm%27%20-%3E%20%27application/x-maker%27.%0A%09%09%27gal%27%20-%3E%20%27chemical/x-gaussian-log%27.%0A%09%09%27gam%27%20-%3E%20%27chemical/x-gamess-input%27.%0A%09%09%27gamin%27%20-%3E%20%27chemical/x-gamess-input%27.%0A%09%09%27gau%27%20-%3E%20%27chemical/x-gaussian-input%27.%0A%09%09%27gcd%27%20-%3E%20%27text/x-pcs-gcd%27.%0A%09%09%27gcf%27%20-%3E%20%27application/x-graphing-calculator%27.%0A%09%09%27gcg%27%20-%3E%20%27chemical/x-gcg8-sequence%27.%0A%09%09%27gen%27%20-%3E%20%27chemical/x-genbank%27.%0A%09%09%27gf%27%20-%3E%20%27application/x-tex-gf%27.%0A%09%09%27gif%27%20-%3E%20%27image/gif%27.%0A%09%09%27gjc%27%20-%3E%20%27chemical/x-gaussian-input%27.%0A%09%09%27gjf%27%20-%3E%20%27chemical/x-gaussian-input%27.%0A%09%09%27gl%27%20-%3E%20%27video/gl%27.%0A%09%09%27gnumeric%27%20-%3E%20%27application/x-gnumeric%27.%0A%09%09%27gpt%27%20-%3E%20%27chemical/x-mopac-graph%27.%0A%09%09%27gsf%27%20-%3E%20%27application/x-font%27.%0A%09%09%27gsm%27%20-%3E%20%27audio/x-gsm%27.%0A%09%09%27gtar%27%20-%3E%20%27application/x-gtar%27.%0A%09%09%27h%27%20-%3E%20%27text/x-chdr%27.%0A%09%09%27h++%27%20-%3E%20%27text/x-c++hdr%27.%0A%09%09%27hdf%27%20-%3E%20%27application/x-hdf%27.%0A%09%09%27hh%27%20-%3E%20%27text/x-c++hdr%27.%0A%09%09%27hin%27%20-%3E%20%27chemical/x-hin%27.%0A%09%09%27hpp%27%20-%3E%20%27text/x-c++hdr%27.%0A%09%09%27hqx%27%20-%3E%20%27application/mac-binhex40%27.%0A%09%09%27hs%27%20-%3E%20%27text/x-haskell%27.%0A%09%09%27hta%27%20-%3E%20%27application/hta%27.%0A%09%09%27htc%27%20-%3E%20%27text/x-component%27.%0A%09%09%27htm%27%20-%3E%20%27text/html%27.%0A%09%09%27html%27%20-%3E%20%27text/html%27.%0A%09%09%27hxx%27%20-%3E%20%27text/x-c++hdr%27.%0A%09%09%27ica%27%20-%3E%20%27application/x-ica%27.%0A%09%09%27ice%27%20-%3E%20%27x-conference/x-cooltalk%27.%0A%09%09%27ico%27%20-%3E%20%27image/x-icon%27.%0A%09%09%27ics%27%20-%3E%20%27text/calendar%27.%0A%09%09%27icz%27%20-%3E%20%27text/calendar%27.%0A%09%09%27ief%27%20-%3E%20%27image/ief%27.%0A%09%09%27iges%27%20-%3E%20%27model/iges%27.%0A%09%09%27igs%27%20-%3E%20%27model/iges%27.%0A%09%09%27iii%27%20-%3E%20%27application/x-iphone%27.%0A%09%09%27inp%27%20-%3E%20%27chemical/x-gamess-input%27.%0A%09%09%27ins%27%20-%3E%20%27application/x-internet-signup%27.%0A%09%09%27iso%27%20-%3E%20%27application/x-iso9660-image%27.%0A%09%09%27isp%27%20-%3E%20%27application/x-internet-signup%27.%0A%09%09%27ist%27%20-%3E%20%27chemical/x-isostar%27.%0A%09%09%27istr%27%20-%3E%20%27chemical/x-isostar%27.%0A%09%09%27jad%27%20-%3E%20%27text/vnd.sun.j2me.app-descriptor%27.%0A%09%09%27jar%27%20-%3E%20%27application/java-archive%27.%0A%09%09%27java%27%20-%3E%20%27text/x-java%27.%0A%09%09%27jdx%27%20-%3E%20%27chemical/x-jcamp-dx%27.%0A%09%09%27jmz%27%20-%3E%20%27application/x-jmol%27.%0A%09%09%27jng%27%20-%3E%20%27image/x-jng%27.%0A%09%09%27jnlp%27%20-%3E%20%27application/x-java-jnlp-file%27.%0A%09%09%27jpe%27%20-%3E%20%27image/jpeg%27.%0A%09%09%27jpeg%27%20-%3E%20%27image/jpeg%27.%0A%09%09%27jpg%27%20-%3E%20%27image/jpeg%27.%0A%09%09%27js%27%20-%3E%20%27application/javascript%27.%0A%09%09%27kar%27%20-%3E%20%27audio/midi%27.%0A%09%09%27key%27%20-%3E%20%27application/pgp-keys%27.%0A%09%09%27kil%27%20-%3E%20%27application/x-killustrator%27.%0A%09%09%27kin%27%20-%3E%20%27chemical/x-kinemage%27.%0A%09%09%27kpr%27%20-%3E%20%27application/x-kpresenter%27.%0A%09%09%27kpt%27%20-%3E%20%27application/x-kpresenter%27.%0A%09%09%27ksp%27%20-%3E%20%27application/x-kspread%27.%0A%09%09%27kwd%27%20-%3E%20%27application/x-kword%27.%0A%09%09%27kwt%27%20-%3E%20%27application/x-kword%27.%0A%09%09%27latex%27%20-%3E%20%27application/x-latex%27.%0A%09%09%27lha%27%20-%3E%20%27application/x-lha%27.%0A%09%09%27lhs%27%20-%3E%20%27text/x-literate-haskell%27.%0A%09%09%27lsf%27%20-%3E%20%27video/x-la-asf%27.%0A%09%09%27lsx%27%20-%3E%20%27video/x-la-asf%27.%0A%09%09%27ltx%27%20-%3E%20%27text/x-tex%27.%0A%09%09%27lzh%27%20-%3E%20%27application/x-lzh%27.%0A%09%09%27lzx%27%20-%3E%20%27application/x-lzx%27.%0A%09%09%27m3u%27%20-%3E%20%27audio/x-mpegurl%27.%0A%09%09%27m4a%27%20-%3E%20%27audio/mpeg%27.%0A%09%09%27maker%27%20-%3E%20%27application/x-maker%27.%0A%09%09%27man%27%20-%3E%20%27application/x-troff-man%27.%0A%09%09%27mcif%27%20-%3E%20%27chemical/x-mmcif%27.%0A%09%09%27mcm%27%20-%3E%20%27chemical/x-macmolecule%27.%0A%09%09%27mdb%27%20-%3E%20%27application/msaccess%27.%0A%09%09%27me%27%20-%3E%20%27application/x-troff-me%27.%0A%09%09%27mesh%27%20-%3E%20%27model/mesh%27.%0A%09%09%27mid%27%20-%3E%20%27audio/midi%27.%0A%09%09%27midi%27%20-%3E%20%27audio/midi%27.%0A%09%09%27mif%27%20-%3E%20%27application/x-mif%27.%0A%09%09%27mm%27%20-%3E%20%27application/x-freemind%27.%0A%09%09%27mmd%27%20-%3E%20%27chemical/x-macromodel-input%27.%0A%09%09%27mmf%27%20-%3E%20%27application/vnd.smaf%27.%0A%09%09%27mml%27%20-%3E%20%27text/mathml%27.%0A%09%09%27mmod%27%20-%3E%20%27chemical/x-macromodel-input%27.%0A%09%09%27mng%27%20-%3E%20%27video/x-mng%27.%0A%09%09%27moc%27%20-%3E%20%27text/x-moc%27.%0A%09%09%27mol%27%20-%3E%20%27chemical/x-mdl-molfile%27.%0A%09%09%27mol2%27%20-%3E%20%27chemical/x-mol2%27.%0A%09%09%27moo%27%20-%3E%20%27chemical/x-mopac-out%27.%0A%09%09%27mop%27%20-%3E%20%27chemical/x-mopac-input%27.%0A%09%09%27mopcrt%27%20-%3E%20%27chemical/x-mopac-input%27.%0A%09%09%27mov%27%20-%3E%20%27video/quicktime%27.%0A%09%09%27movie%27%20-%3E%20%27video/x-sgi-movie%27.%0A%09%09%27mp2%27%20-%3E%20%27audio/mpeg%27.%0A%09%09%27mp3%27%20-%3E%20%27audio/mpeg%27.%0A%09%09%27mp4%27%20-%3E%20%27video/mp4%27.%0A%09%09%27mpc%27%20-%3E%20%27chemical/x-mopac-input%27.%0A%09%09%27mpe%27%20-%3E%20%27video/mpeg%27.%0A%09%09%27mpeg%27%20-%3E%20%27video/mpeg%27.%0A%09%09%27mpega%27%20-%3E%20%27audio/mpeg%27.%0A%09%09%27mpg%27%20-%3E%20%27video/mpeg%27.%0A%09%09%27mpga%27%20-%3E%20%27audio/mpeg%27.%0A%09%09%27ms%27%20-%3E%20%27application/x-troff-ms%27.%0A%09%09%27msh%27%20-%3E%20%27model/mesh%27.%0A%09%09%27msi%27%20-%3E%20%27application/x-msi%27.%0A%09%09%27mvb%27%20-%3E%20%27chemical/x-mopac-vib%27.%0A%09%09%27mxu%27%20-%3E%20%27video/vnd.mpegurl%27.%0A%09%09%27nb%27%20-%3E%20%27application/mathematica%27.%0A%09%09%27nc%27%20-%3E%20%27application/x-netcdf%27.%0A%09%09%27nwc%27%20-%3E%20%27application/x-nwc%27.%0A%09%09%27o%27%20-%3E%20%27application/x-object%27.%0A%09%09%27oda%27%20-%3E%20%27application/oda%27.%0A%09%09%27odb%27%20-%3E%20%27application/vnd.oasis.opendocument.database%27.%0A%09%09%27odc%27%20-%3E%20%27application/vnd.oasis.opendocument.chart%27.%0A%09%09%27odf%27%20-%3E%20%27application/vnd.oasis.opendocument.formula%27.%0A%09%09%27odg%27%20-%3E%20%27application/vnd.oasis.opendocument.graphics%27.%0A%09%09%27odi%27%20-%3E%20%27application/vnd.oasis.opendocument.image%27.%0A%09%09%27odm%27%20-%3E%20%27application/vnd.oasis.opendocument.text-master%27.%0A%09%09%27odp%27%20-%3E%20%27application/vnd.oasis.opendocument.presentation%27.%0A%09%09%27ods%27%20-%3E%20%27application/vnd.oasis.opendocument.spreadsheet%27.%0A%09%09%27odt%27%20-%3E%20%27application/vnd.oasis.opendocument.text%27.%0A%09%09%27ogg%27%20-%3E%20%27application/ogg%27.%0A%09%09%27old%27%20-%3E%20%27application/x-trash%27.%0A%09%09%27oth%27%20-%3E%20%27application/vnd.oasis.opendocument.text-web%27.%0A%09%09%27oza%27%20-%3E%20%27application/x-oz-application%27.%0A%09%09%27p%27%20-%3E%20%27text/x-pascal%27.%0A%09%09%27p7r%27%20-%3E%20%27application/x-pkcs7-certreqresp%27.%0A%09%09%27pac%27%20-%3E%20%27application/x-ns-proxy-autoconfig%27.%0A%09%09%27pas%27%20-%3E%20%27text/x-pascal%27.%0A%09%09%27pat%27%20-%3E%20%27image/x-coreldrawpattern%27.%0A%09%09%27pbm%27%20-%3E%20%27image/x-portable-bitmap%27.%0A%09%09%27pcf%27%20-%3E%20%27application/x-font%27.%0A%09%09%27pcf.Z%27%20-%3E%20%27application/x-font%27.%0A%09%09%27pcx%27%20-%3E%20%27image/pcx%27.%0A%09%09%27pdb%27%20-%3E%20%27chemical/x-pdb%27.%0A%09%09%27pdf%27%20-%3E%20%27application/pdf%27.%0A%09%09%27pfa%27%20-%3E%20%27application/x-font%27.%0A%09%09%27pfb%27%20-%3E%20%27application/x-font%27.%0A%09%09%27pgm%27%20-%3E%20%27image/x-portable-graymap%27.%0A%09%09%27pgn%27%20-%3E%20%27application/x-chess-pgn%27.%0A%09%09%27pgp%27%20-%3E%20%27application/pgp-signature%27.%0A%09%09%27pk%27%20-%3E%20%27application/x-tex-pk%27.%0A%09%09%27pl%27%20-%3E%20%27text/x-perl%27.%0A%09%09%27pls%27%20-%3E%20%27audio/x-scpls%27.%0A%09%09%27pm%27%20-%3E%20%27text/x-perl%27.%0A%09%09%27png%27%20-%3E%20%27image/png%27.%0A%09%09%27pnm%27%20-%3E%20%27image/x-portable-anymap%27.%0A%09%09%27pot%27%20-%3E%20%27text/plain%27.%0A%09%09%27ppm%27%20-%3E%20%27image/x-portable-pixmap%27.%0A%09%09%27pps%27%20-%3E%20%27application/vnd.ms-powerpoint%27.%0A%09%09%27ppt%27%20-%3E%20%27application/vnd.ms-powerpoint%27.%0A%09%09%27prf%27%20-%3E%20%27application/pics-rules%27.%0A%09%09%27prt%27%20-%3E%20%27chemical/x-ncbi-asn1-ascii%27.%0A%09%09%27ps%27%20-%3E%20%27application/postscript%27.%0A%09%09%27psd%27%20-%3E%20%27image/x-photoshop%27.%0A%09%09%27psp%27%20-%3E%20%27text/x-psp%27.%0A%09%09%27py%27%20-%3E%20%27text/x-python%27.%0A%09%09%27pyc%27%20-%3E%20%27application/x-python-code%27.%0A%09%09%27pyo%27%20-%3E%20%27application/x-python-code%27.%0A%09%09%27qt%27%20-%3E%20%27video/quicktime%27.%0A%09%09%27qtl%27%20-%3E%20%27application/x-quicktimeplayer%27.%0A%09%09%27ra%27%20-%3E%20%27audio/x-realaudio%27.%0A%09%09%27ram%27%20-%3E%20%27audio/x-pn-realaudio%27.%0A%09%09%27rar%27%20-%3E%20%27application/rar%27.%0A%09%09%27ras%27%20-%3E%20%27image/x-cmu-raster%27.%0A%09%09%27rd%27%20-%3E%20%27chemical/x-mdl-rdfile%27.%0A%09%09%27rdf%27%20-%3E%20%27application/rdf+xml%27.%0A%09%09%27rgb%27%20-%3E%20%27image/x-rgb%27.%0A%09%09%27rm%27%20-%3E%20%27audio/x-pn-realaudio%27.%0A%09%09%27roff%27%20-%3E%20%27application/x-troff%27.%0A%09%09%27ros%27%20-%3E%20%27chemical/x-rosdal%27.%0A%09%09%27rpm%27%20-%3E%20%27application/x-redhat-package-manager%27.%0A%09%09%27rss%27%20-%3E%20%27application/rss+xml%27.%0A%09%09%27rtf%27%20-%3E%20%27text/rtf%27.%0A%09%09%27rtx%27%20-%3E%20%27text/richtext%27.%0A%09%09%27rxn%27%20-%3E%20%27chemical/x-mdl-rxnfile%27.%0A%09%09%27sct%27%20-%3E%20%27text/scriptlet%27.%0A%09%09%27sd%27%20-%3E%20%27chemical/x-mdl-sdfile%27.%0A%09%09%27sd2%27%20-%3E%20%27audio/x-sd2%27.%0A%09%09%27sda%27%20-%3E%20%27application/vnd.stardivision.draw%27.%0A%09%09%27sdc%27%20-%3E%20%27application/vnd.stardivision.calc%27.%0A%09%09%27sdd%27%20-%3E%20%27application/vnd.stardivision.impress%27.%0A%09%09%27sdf%27%20-%3E%20%27chemical/x-mdl-sdfile%27.%0A%09%09%27sdp%27%20-%3E%20%27application/vnd.stardivision.impress%27.%0A%09%09%27sdw%27%20-%3E%20%27application/vnd.stardivision.writer%27.%0A%09%09%27ser%27%20-%3E%20%27application/java-serialized-object%27.%0A%09%09%27sgf%27%20-%3E%20%27application/x-go-sgf%27.%0A%09%09%27sgl%27%20-%3E%20%27application/vnd.stardivision.writer-global%27.%0A%09%09%27sh%27%20-%3E%20%27text/x-sh%27.%0A%09%09%27shar%27%20-%3E%20%27application/x-shar%27.%0A%09%09%27shtml%27%20-%3E%20%27text/html%27.%0A%09%09%27sid%27%20-%3E%20%27audio/prs.sid%27.%0A%09%09%27sik%27%20-%3E%20%27application/x-trash%27.%0A%09%09%27silo%27%20-%3E%20%27model/mesh%27.%0A%09%09%27sis%27%20-%3E%20%27application/vnd.symbian.install%27.%0A%09%09%27sit%27%20-%3E%20%27application/x-stuffit%27.%0A%09%09%27skd%27%20-%3E%20%27application/x-koan%27.%0A%09%09%27skm%27%20-%3E%20%27application/x-koan%27.%0A%09%09%27skp%27%20-%3E%20%27application/x-koan%27.%0A%09%09%27skt%27%20-%3E%20%27application/x-koan%27.%0A%09%09%27smf%27%20-%3E%20%27application/vnd.stardivision.math%27.%0A%09%09%27smi%27%20-%3E%20%27application/smil%27.%0A%09%09%27smil%27%20-%3E%20%27application/smil%27.%0A%09%09%27snd%27%20-%3E%20%27audio/basic%27.%0A%09%09%27spc%27%20-%3E%20%27chemical/x-galactic-spc%27.%0A%09%09%27spl%27%20-%3E%20%27application/x-futuresplash%27.%0A%09%09%27src%27%20-%3E%20%27application/x-wais-source%27.%0A%09%09%27stc%27%20-%3E%20%27application/vnd.sun.xml.calc.template%27.%0A%09%09%27std%27%20-%3E%20%27application/vnd.sun.xml.draw.template%27.%0A%09%09%27sti%27%20-%3E%20%27application/vnd.sun.xml.impress.template%27.%0A%09%09%27stl%27%20-%3E%20%27application/vnd.ms-pki.stl%27.%0A%09%09%27stw%27%20-%3E%20%27application/vnd.sun.xml.writer.template%27.%0A%09%09%27sty%27%20-%3E%20%27text/x-tex%27.%0A%09%09%27sv4cpio%27%20-%3E%20%27application/x-sv4cpio%27.%0A%09%09%27sv4crc%27%20-%3E%20%27application/x-sv4crc%27.%0A%09%09%27svg%27%20-%3E%20%27image/svg+xml%27.%0A%09%09%27svgz%27%20-%3E%20%27image/svg+xml%27.%0A%09%09%27sw%27%20-%3E%20%27chemical/x-swissprot%27.%0A%09%09%27swf%27%20-%3E%20%27application/x-shockwave-flash%27.%0A%09%09%27swfl%27%20-%3E%20%27application/x-shockwave-flash%27.%0A%09%09%27sxc%27%20-%3E%20%27application/vnd.sun.xml.calc%27.%0A%09%09%27sxd%27%20-%3E%20%27application/vnd.sun.xml.draw%27.%0A%09%09%27sxg%27%20-%3E%20%27application/vnd.sun.xml.writer.global%27.%0A%09%09%27sxi%27%20-%3E%20%27application/vnd.sun.xml.impress%27.%0A%09%09%27sxm%27%20-%3E%20%27application/vnd.sun.xml.math%27.%0A%09%09%27sxw%27%20-%3E%20%27application/vnd.sun.xml.writer%27.%0A%09%09%27t%27%20-%3E%20%27application/x-troff%27.%0A%09%09%27tar%27%20-%3E%20%27application/x-tar%27.%0A%09%09%27taz%27%20-%3E%20%27application/x-gtar%27.%0A%09%09%27tcl%27%20-%3E%20%27text/x-tcl%27.%0A%09%09%27tex%27%20-%3E%20%27text/x-tex%27.%0A%09%09%27texi%27%20-%3E%20%27application/x-texinfo%27.%0A%09%09%27texinfo%27%20-%3E%20%27application/x-texinfo%27.%0A%09%09%27text%27%20-%3E%20%27text/plain%27.%0A%09%09%27tgf%27%20-%3E%20%27chemical/x-mdl-tgf%27.%0A%09%09%27tgz%27%20-%3E%20%27application/x-gtar%27.%0A%09%09%27tif%27%20-%3E%20%27image/tiff%27.%0A%09%09%27tiff%27%20-%3E%20%27image/tiff%27.%0A%09%09%27tk%27%20-%3E%20%27text/x-tcl%27.%0A%09%09%27tm%27%20-%3E%20%27text/texmacs%27.%0A%09%09%27torrent%27%20-%3E%20%27application/x-bittorrent%27.%0A%09%09%27tr%27%20-%3E%20%27application/x-troff%27.%0A%09%09%27ts%27%20-%3E%20%27text/texmacs%27.%0A%09%09%27tsp%27%20-%3E%20%27application/dsptype%27.%0A%09%09%27tsv%27%20-%3E%20%27text/tab-separated-values%27.%0A%09%09%27txt%27%20-%3E%20%27text/plain%27.%0A%09%09%27udeb%27%20-%3E%20%27application/x-debian-package%27.%0A%09%09%27uls%27%20-%3E%20%27text/iuls%27.%0A%09%09%27ustar%27%20-%3E%20%27application/x-ustar%27.%0A%09%09%27val%27%20-%3E%20%27chemical/x-ncbi-asn1-binary%27.%0A%09%09%27vcd%27%20-%3E%20%27application/x-cdlink%27.%0A%09%09%27vcf%27%20-%3E%20%27text/x-vcard%27.%0A%09%09%27vcs%27%20-%3E%20%27text/x-vcalendar%27.%0A%09%09%27vmd%27%20-%3E%20%27chemical/x-vmd%27.%0A%09%09%27vms%27%20-%3E%20%27chemical/x-vamas-iso14976%27.%0A%09%09%27vor%27%20-%3E%20%27application/vnd.stardivision.writer%27.%0A%09%09%27vrm%27%20-%3E%20%27x-world/x-vrml%27.%0A%09%09%27vrml%27%20-%3E%20%27x-world/x-vrml%27.%0A%09%09%27vsd%27%20-%3E%20%27application/vnd.visio%27.%0A%09%09%27wad%27%20-%3E%20%27application/x-doom%27.%0A%09%09%27wav%27%20-%3E%20%27audio/x-wav%27.%0A%09%09%27wax%27%20-%3E%20%27audio/x-ms-wax%27.%0A%09%09%27wbmp%27%20-%3E%20%27image/vnd.wap.wbmp%27.%0A%09%09%27wbxml%27%20-%3E%20%27application/vnd.wap.wbxml%27.%0A%09%09%27wk%27%20-%3E%20%27application/x-123%27.%0A%09%09%27wm%27%20-%3E%20%27video/x-ms-wm%27.%0A%09%09%27wma%27%20-%3E%20%27audio/x-ms-wma%27.%0A%09%09%27wmd%27%20-%3E%20%27application/x-ms-wmd%27.%0A%09%09%27wml%27%20-%3E%20%27text/vnd.wap.wml%27.%0A%09%09%27wmlc%27%20-%3E%20%27application/vnd.wap.wmlc%27.%0A%09%09%27wmls%27%20-%3E%20%27text/vnd.wap.wmlscript%27.%0A%09%09%27wmlsc%27%20-%3E%20%27application/vnd.wap.wmlscriptc%27.%0A%09%09%27wmv%27%20-%3E%20%27video/x-ms-wmv%27.%0A%09%09%27wmx%27%20-%3E%20%27video/x-ms-wmx%27.%0A%09%09%27wmz%27%20-%3E%20%27application/x-ms-wmz%27.%0A%09%09%27wp5%27%20-%3E%20%27application/wordperfect5.1%27.%0A%09%09%27wpd%27%20-%3E%20%27application/wordperfect%27.%0A%09%09%27wrl%27%20-%3E%20%27x-world/x-vrml%27.%0A%09%09%27wsc%27%20-%3E%20%27text/scriptlet%27.%0A%09%09%27wvx%27%20-%3E%20%27video/x-ms-wvx%27.%0A%09%09%27wz%27%20-%3E%20%27application/x-wingz%27.%0A%09%09%27xbm%27%20-%3E%20%27image/x-xbitmap%27.%0A%09%09%27xcf%27%20-%3E%20%27application/x-xcf%27.%0A%09%09%27xht%27%20-%3E%20%27application/xhtml+xml%27.%0A%09%09%27xhtml%27%20-%3E%20%27application/xhtml+xml%27.%0A%09%09%27xlb%27%20-%3E%20%27application/vnd.ms-excel%27.%0A%09%09%27xls%27%20-%3E%20%27application/vnd.ms-excel%27.%0A%09%09%27xlt%27%20-%3E%20%27application/vnd.ms-excel%27.%0A%09%09%27xml%27%20-%3E%20%27application/xml%27.%0A%09%09%27xpi%27%20-%3E%20%27application/x-xpinstall%27.%0A%09%09%27xpm%27%20-%3E%20%27image/x-xpixmap%27.%0A%09%09%27xsl%27%20-%3E%20%27application/xml%27.%0A%09%09%27xtel%27%20-%3E%20%27chemical/x-xtel%27.%0A%09%09%27xul%27%20-%3E%20%27application/vnd.mozilla.xul+xml%27.%0A%09%09%27xwd%27%20-%3E%20%27image/x-xwindowdump%27.%0A%09%09%27xyz%27%20-%3E%20%27chemical/x-xyz%27.%0A%09%09%27zip%27%20-%3E%20%27application/zip%27.%0A%09%09%27zmt%27%20-%3E%20%27chemical/x-mopac-input%27.%0A%09%09%27%7E%27%20-%3E%20%27application/x-trash%27%0A%09%7D'),
  9148. messageSends: [unescape("-%3E")],
  9149. referencedClasses: []
  9150. }),
  9151. smalltalk.FileServer.klass);
  9152. smalltalk.addMethod(
  9153. unescape('_mimeTypes'),
  9154. smalltalk.method({
  9155. selector: unescape('mimeTypes'),
  9156. category: 'accessing',
  9157. fn: function (){
  9158. var self=this;
  9159. return (($receiver = self['@mimeTypes']) == nil || $receiver == undefined) ? (function(){return self['@mimeTypes']=smalltalk.send(self, "_defaultMimeTypes", []);})() : $receiver;
  9160. return self;},
  9161. args: [],
  9162. source: unescape('mimeTypes%0A%09%5EmimeTypes%20ifNil%3A%20%5BmimeTypes%20%3A%3D%20self%20defaultMimeTypes%5D'),
  9163. messageSends: ["ifNil:", "defaultMimeTypes"],
  9164. referencedClasses: []
  9165. }),
  9166. smalltalk.FileServer.klass);
  9167. smalltalk.addMethod(
  9168. unescape('_mimeTypeFor_'),
  9169. smalltalk.method({
  9170. selector: unescape('mimeTypeFor%3A'),
  9171. category: 'accessing',
  9172. fn: function (aString){
  9173. var self=this;
  9174. return smalltalk.send(smalltalk.send(self, "_mimeTypes", []), "_at_ifAbsent_", [smalltalk.send(aString, "_replace_with_", [unescape(".*%5B%5C.%5D"), ""]), (function(){return unescape("text/plain");})]);
  9175. return self;},
  9176. args: ["aString"],
  9177. source: unescape('mimeTypeFor%3A%20aString%0A%09%5Eself%20mimeTypes%20at%3A%20%28aString%20replace%3A%20%27.*%5B%5C.%5D%27%20with%3A%20%27%27%29%20ifAbsent%3A%20%5B%27text/plain%27%5D'),
  9178. messageSends: ["at:ifAbsent:", "mimeTypes", "replace:with:"],
  9179. referencedClasses: []
  9180. }),
  9181. smalltalk.FileServer.klass);
  9182. smalltalk.addMethod(
  9183. unescape('_main'),
  9184. smalltalk.method({
  9185. selector: unescape('main'),
  9186. category: 'initialization',
  9187. fn: function (){
  9188. var self=this;
  9189. return smalltalk.send(smalltalk.send(self, "_new", []), "_startOn_", [smalltalk.send(self, "_port", [])]);
  9190. return self;},
  9191. args: [],
  9192. source: unescape('main%0A%09%5Eself%20new%20startOn%3A%20self%20port'),
  9193. messageSends: ["startOn:", "new", "port"],
  9194. referencedClasses: []
  9195. }),
  9196. smalltalk.FileServer.klass);
  9197. smalltalk.init(smalltalk.Object);
  9198. smalltalk.classes()._do_(function(each) {each._initialize()});
  9199. /* Similar to jQuery(document).ready() */
  9200. if(this.smalltalkReady) {
  9201. this.smalltalkReady();
  9202. }
  9203. smalltalk.FileServer._main()