Kernel-Objects.js 156 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822
  1. smalltalk.addPackage('Kernel-Objects', {});
  2. smalltalk.addClass('Object', smalltalk.nil, [], 'Kernel-Objects');
  3. smalltalk.Object.comment=unescape('*Object%20is%20the%20root%20of%20the%20Smalltalk%20class%20system*.%20All%20classes%20in%20the%20system%20are%20subclasses%20of%20Object.%0A%0AObject%20provides%20default%20behavior%20common%20to%20all%20normal%20objects%2C%20such%20as%3A%20%0A%0A-%20access%0A-%20copying%0A-%20comparison%0A-%20error%20handling%0A-%20message%20sending%0A-%20reflection%0A%0AAlso%20utility%20messages%20that%20all%20objects%20should%20respond%20to%20are%20defined%20here.%0A%0AObject%20has%20no%20instance%20variable.%0A%0A%23%23Access%0A%0AInstance%20variables%20can%20be%20accessed%20with%20%60%23instVarAt%3A%60%20and%20%60%23instVarAt%3Aput%3A%60.%20%60Object%20%3E%3E%20instanceVariableNames%60%20answers%20a%20collection%20of%20all%20instance%20variable%20names.%0AAccessing%20JavaScript%20properties%20of%20an%20object%20is%20done%20through%20%60%23basicAt%3A%60%2C%20%60%23basicAt%3Aput%3A%60%20and%20%60basicDelete%3A%60.%0A%0A%23%23Copying%0A%0ACopying%20an%20object%20is%20handled%20by%20%60%23copy%60%20and%20%60%23deepCopy%60.%20The%20first%20one%20performs%20a%20shallow%20copy%20of%20the%20receiver%2C%20while%20the%20second%20one%20performs%20a%20deep%20copy.%0AThe%20hook%20method%20%60%23postCopy%60%20can%20be%20overriden%20in%20subclasses%20to%20copy%20fields%20as%20necessary%20to%20complete%20the%20full%20copy.%20It%20will%20be%20sent%20by%20the%20copy%20of%20the%20receiver.%0A%0A%23%23Comparison%0A%0AObjects%20understand%20equality%20%20%60%23%3D%60%20and%20identity%20%60%23%3D%3D%60%20comparison.%0A%0A%23%23Error%20handling%0A%0A-%20%60%23halt%60%20is%20the%20typical%20message%20to%20use%20for%20inserting%20breakpoints%20during%20debugging.%0A-%20%60%23error%3A%60%20throws%20a%20generic%20error%20exception%0A-%20%60%23doesNotUnderstand%3A%60%20handles%20the%20fact%20that%20there%20was%20an%20attempt%20to%20send%20the%20given%20message%20to%20the%20receiver%20but%20the%20receiver%20does%20not%20understand%20this%20message.%0A%20%20Overriding%20this%20message%20can%20be%20useful%20to%20implement%20proxies%20for%20example.')
  4. smalltalk.addMethod(
  5. unescape('__eq'),
  6. smalltalk.method({
  7. selector: unescape('%3D'),
  8. category: 'comparing',
  9. fn: function (anObject) {
  10. var self = this;
  11. return smalltalk.send(self, "__eq_eq", [anObject]);
  12. return self;
  13. },
  14. args: ["anObject"],
  15. source: unescape('%3D%20anObject%0A%09%5Eself%20%3D%3D%20anObject'),
  16. messageSends: [unescape("%3D%3D")],
  17. referencedClasses: []
  18. }),
  19. smalltalk.Object);
  20. smalltalk.addMethod(
  21. unescape('_%7E_eq'),
  22. smalltalk.method({
  23. selector: unescape('%7E%3D'),
  24. category: 'comparing',
  25. fn: function (anObject) {
  26. var self = this;
  27. return smalltalk.send(smalltalk.send(self, "__eq", [anObject]), "__eq", [false]);
  28. return self;
  29. },
  30. args: ["anObject"],
  31. source: unescape('%7E%3D%20anObject%0A%09%5E%28self%20%3D%20anObject%29%20%3D%20false'),
  32. messageSends: [unescape("%3D")],
  33. referencedClasses: []
  34. }),
  35. smalltalk.Object);
  36. smalltalk.addMethod(
  37. unescape('_initialize'),
  38. smalltalk.method({
  39. selector: unescape('initialize'),
  40. category: 'initialization',
  41. fn: function () {
  42. var self = this;
  43. return self;
  44. },
  45. args: [],
  46. source: unescape('initialize'),
  47. messageSends: [],
  48. referencedClasses: []
  49. }),
  50. smalltalk.Object);
  51. smalltalk.addMethod(
  52. unescape('_yourself'),
  53. smalltalk.method({
  54. selector: unescape('yourself'),
  55. category: 'accessing',
  56. fn: function () {
  57. var self = this;
  58. return self;
  59. return self;
  60. },
  61. args: [],
  62. source: unescape('yourself%0A%09%5Eself'),
  63. messageSends: [],
  64. referencedClasses: []
  65. }),
  66. smalltalk.Object);
  67. smalltalk.addMethod(
  68. unescape('_class'),
  69. smalltalk.method({
  70. selector: unescape('class'),
  71. category: 'accessing',
  72. fn: function () {
  73. var self = this;
  74. return self.klass;
  75. return self;
  76. },
  77. args: [],
  78. source: unescape('class%0A%09%3Creturn%20self.klass%3E'),
  79. messageSends: [],
  80. referencedClasses: []
  81. }),
  82. smalltalk.Object);
  83. smalltalk.addMethod(
  84. unescape('_size'),
  85. smalltalk.method({
  86. selector: unescape('size'),
  87. category: 'accessing',
  88. fn: function () {
  89. var self = this;
  90. smalltalk.send(self, "_error_", ["Object not indexable"]);
  91. return self;
  92. },
  93. args: [],
  94. source: unescape('size%0A%09self%20error%3A%20%27Object%20not%20indexable%27'),
  95. messageSends: ["error:"],
  96. referencedClasses: []
  97. }),
  98. smalltalk.Object);
  99. smalltalk.addMethod(
  100. unescape('_copy'),
  101. smalltalk.method({
  102. selector: unescape('copy'),
  103. category: 'copying',
  104. fn: function () {
  105. var self = this;
  106. return smalltalk.send(smalltalk.send(self, "_shallowCopy", []), "_postCopy", []);
  107. return self;
  108. },
  109. args: [],
  110. source: unescape('copy%0A%09%5Eself%20shallowCopy%20postCopy'),
  111. messageSends: ["postCopy", "shallowCopy"],
  112. referencedClasses: []
  113. }),
  114. smalltalk.Object);
  115. smalltalk.addMethod(
  116. unescape('_shallowCopy'),
  117. smalltalk.method({
  118. selector: unescape('shallowCopy'),
  119. category: 'copying',
  120. fn: function () {
  121. var self = this;
  122. var copy = self.klass._new();
  123. for (var i in self) {
  124. if (/^@.+/.test(i)) {
  125. copy[i] = self[i];
  126. }
  127. }
  128. return copy;
  129. return self;
  130. },
  131. args: [],
  132. 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'),
  133. messageSends: [],
  134. referencedClasses: []
  135. }),
  136. smalltalk.Object);
  137. smalltalk.addMethod(
  138. unescape('_deepCopy'),
  139. smalltalk.method({
  140. selector: unescape('deepCopy'),
  141. category: 'copying',
  142. fn: function () {
  143. var self = this;
  144. var copy = self.klass._new();
  145. for (var i in self) {
  146. if (/^@.+/.test(i)) {
  147. copy[i] = self[i]._deepCopy();
  148. }
  149. }
  150. return copy;
  151. return self;
  152. },
  153. args: [],
  154. 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'),
  155. messageSends: [],
  156. referencedClasses: []
  157. }),
  158. smalltalk.Object);
  159. smalltalk.addMethod(
  160. unescape('_postCopy'),
  161. smalltalk.method({
  162. selector: unescape('postCopy'),
  163. category: 'copying',
  164. fn: function () {
  165. var self = this;
  166. return self;
  167. },
  168. args: [],
  169. source: unescape('postCopy'),
  170. messageSends: [],
  171. referencedClasses: []
  172. }),
  173. smalltalk.Object);
  174. smalltalk.addMethod(
  175. unescape('__minus_gt'),
  176. smalltalk.method({
  177. selector: unescape('-%3E'),
  178. category: 'converting',
  179. fn: function (anObject) {
  180. var self = this;
  181. return smalltalk.send(smalltalk.Association || Association, "_key_value_", [self, anObject]);
  182. return self;
  183. },
  184. args: ["anObject"],
  185. source: unescape('-%3E%20anObject%0A%09%5EAssociation%20key%3A%20self%20value%3A%20anObject'),
  186. messageSends: ["key:value:"],
  187. referencedClasses: ["Association"]
  188. }),
  189. smalltalk.Object);
  190. smalltalk.addMethod(
  191. unescape('_asString'),
  192. smalltalk.method({
  193. selector: unescape('asString'),
  194. category: 'converting',
  195. fn: function () {
  196. var self = this;
  197. return smalltalk.send(self, "_printString", []);
  198. return self;
  199. },
  200. args: [],
  201. source: unescape('asString%0A%09%5Eself%20printString'),
  202. messageSends: ["printString"],
  203. referencedClasses: []
  204. }),
  205. smalltalk.Object);
  206. smalltalk.addMethod(
  207. unescape('_asJavascript'),
  208. smalltalk.method({
  209. selector: unescape('asJavascript'),
  210. category: 'converting',
  211. fn: function () {
  212. var self = this;
  213. return smalltalk.send(self, "_asString", []);
  214. return self;
  215. },
  216. args: [],
  217. source: unescape('asJavascript%0A%09%5Eself%20asString'),
  218. messageSends: ["asString"],
  219. referencedClasses: []
  220. }),
  221. smalltalk.Object);
  222. smalltalk.addMethod(
  223. unescape('_perform_'),
  224. smalltalk.method({
  225. selector: unescape('perform%3A'),
  226. category: 'message handling',
  227. fn: function (aSymbol) {
  228. var self = this;
  229. return smalltalk.send(self, "_perform_withArguments_", [aSymbol, []]);
  230. return self;
  231. },
  232. args: ["aSymbol"],
  233. source: unescape('perform%3A%20aSymbol%0A%09%5Eself%20perform%3A%20aSymbol%20withArguments%3A%20%23%28%29'),
  234. messageSends: ["perform:withArguments:"],
  235. referencedClasses: []
  236. }),
  237. smalltalk.Object);
  238. smalltalk.addMethod(
  239. unescape('_perform_withArguments_'),
  240. smalltalk.method({
  241. selector: unescape('perform%3AwithArguments%3A'),
  242. category: 'message handling',
  243. fn: function (aSymbol, aCollection) {
  244. var self = this;
  245. return smalltalk.send(self, "_basicPerform_withArguments_", [smalltalk.send(aSymbol, "_asSelector", []), aCollection]);
  246. return self;
  247. },
  248. args: ["aSymbol", "aCollection"],
  249. source: unescape('perform%3A%20aSymbol%20withArguments%3A%20aCollection%0A%09%5Eself%20basicPerform%3A%20aSymbol%20asSelector%20withArguments%3A%20aCollection'),
  250. messageSends: ["basicPerform:withArguments:", "asSelector"],
  251. referencedClasses: []
  252. }),
  253. smalltalk.Object);
  254. smalltalk.addMethod(
  255. unescape('_instVarAt_'),
  256. smalltalk.method({
  257. selector: unescape('instVarAt%3A'),
  258. category: 'accessing',
  259. fn: function (aSymbol) {
  260. var self = this;
  261. var varname = nil;
  262. varname = smalltalk.send(aSymbol, "_asString", []);
  263. return self["@" + varname];
  264. return self;
  265. },
  266. args: ["aSymbol"],
  267. source: unescape('instVarAt%3A%20aSymbol%0A%09%7C%20varname%20%7C%0A%09varname%20%3A%3D%20aSymbol%20asString.%0A%09%3Creturn%20self%5B%27@%27+varname%5D%3E'),
  268. messageSends: ["asString"],
  269. referencedClasses: []
  270. }),
  271. smalltalk.Object);
  272. smalltalk.addMethod(
  273. unescape('_instVarAt_put_'),
  274. smalltalk.method({
  275. selector: unescape('instVarAt%3Aput%3A'),
  276. category: 'accessing',
  277. fn: function (aSymbol, anObject) {
  278. var self = this;
  279. var varname = nil;
  280. varname = smalltalk.send(aSymbol, "_asString", []);
  281. self["@" + varname] = anObject;
  282. return self;
  283. },
  284. args: ["aSymbol", "anObject"],
  285. source: unescape('instVarAt%3A%20aSymbol%20put%3A%20anObject%0A%09%7C%20varname%20%7C%0A%09varname%20%3A%3D%20aSymbol%20asString.%0A%09%3Cself%5B%27@%27%20+%20varname%5D%20%3D%20anObject%3E'),
  286. messageSends: ["asString"],
  287. referencedClasses: []
  288. }),
  289. smalltalk.Object);
  290. smalltalk.addMethod(
  291. unescape('_basicAt_'),
  292. smalltalk.method({
  293. selector: unescape('basicAt%3A'),
  294. category: 'accessing',
  295. fn: function (aString) {
  296. var self = this;
  297. return self[aString];
  298. return self;
  299. },
  300. args: ["aString"],
  301. source: unescape('basicAt%3A%20aString%0A%09%3Creturn%20self%5BaString%5D%3E'),
  302. messageSends: [],
  303. referencedClasses: []
  304. }),
  305. smalltalk.Object);
  306. smalltalk.addMethod(
  307. unescape('_basicAt_put_'),
  308. smalltalk.method({
  309. selector: unescape('basicAt%3Aput%3A'),
  310. category: 'accessing',
  311. fn: function (aString, anObject) {
  312. var self = this;
  313. return self[aString] = anObject;
  314. return self;
  315. },
  316. args: ["aString", "anObject"],
  317. source: unescape('basicAt%3A%20aString%20put%3A%20anObject%0A%09%3Creturn%20self%5BaString%5D%20%3D%20anObject%3E'),
  318. messageSends: [],
  319. referencedClasses: []
  320. }),
  321. smalltalk.Object);
  322. smalltalk.addMethod(
  323. unescape('_error_'),
  324. smalltalk.method({
  325. selector: unescape('error%3A'),
  326. category: 'error handling',
  327. fn: function (aString) {
  328. var self = this;
  329. smalltalk.send(smalltalk.Error || Error, "_signal_", [aString]);
  330. return self;
  331. },
  332. args: ["aString"],
  333. source: unescape('error%3A%20aString%0A%09Error%20signal%3A%20aString'),
  334. messageSends: ["signal:"],
  335. referencedClasses: ["Error"]
  336. }),
  337. smalltalk.Object);
  338. smalltalk.addMethod(
  339. unescape('_subclassResponsibility'),
  340. smalltalk.method({
  341. selector: unescape('subclassResponsibility'),
  342. category: 'error handling',
  343. fn: function () {
  344. var self = this;
  345. smalltalk.send(self, "_error_", ["This method is a responsibility of a subclass"]);
  346. return self;
  347. },
  348. args: [],
  349. source: unescape('subclassResponsibility%0A%09self%20error%3A%20%27This%20method%20is%20a%20responsibility%20of%20a%20subclass%27'),
  350. messageSends: ["error:"],
  351. referencedClasses: []
  352. }),
  353. smalltalk.Object);
  354. smalltalk.addMethod(
  355. unescape('_shouldNotImplement'),
  356. smalltalk.method({
  357. selector: unescape('shouldNotImplement'),
  358. category: 'error handling',
  359. fn: function () {
  360. var self = this;
  361. smalltalk.send(self, "_error_", [smalltalk.send("This method should not be implemented in ", "__comma", [smalltalk.send(smalltalk.send(self, "_class", []), "_name", [])])]);
  362. return self;
  363. },
  364. args: [],
  365. source: unescape('shouldNotImplement%0A%09self%20error%3A%20%27This%20method%20should%20not%20be%20implemented%20in%20%27%2C%20self%20class%20name'),
  366. messageSends: ["error:", unescape("%2C"), "name", "class"],
  367. referencedClasses: []
  368. }),
  369. smalltalk.Object);
  370. smalltalk.addMethod(
  371. unescape('_try_catch_'),
  372. smalltalk.method({
  373. selector: unescape('try%3Acatch%3A'),
  374. category: 'error handling',
  375. fn: function (aBlock, anotherBlock) {
  376. var self = this;
  377. try {
  378. result = aBlock();
  379. } catch (e) {
  380. result = anotherBlock(e);
  381. }
  382. return result;
  383. return self;
  384. },
  385. args: ["aBlock", "anotherBlock"],
  386. source: unescape('try%3A%20aBlock%20catch%3A%20anotherBlock%0A%09%3Ctry%7Bresult%20%3D%20aBlock%28%29%7D%20catch%28e%29%20%7Bresult%20%3D%20anotherBlock%28e%29%7D%3B%0A%09return%20result%3B%3E'),
  387. messageSends: [],
  388. referencedClasses: []
  389. }),
  390. smalltalk.Object);
  391. smalltalk.addMethod(
  392. unescape('_printString'),
  393. smalltalk.method({
  394. selector: unescape('printString'),
  395. category: 'printing',
  396. fn: function () {
  397. var self = this;
  398. return smalltalk.send("a ", "__comma", [smalltalk.send(smalltalk.send(self, "_class", []), "_name", [])]);
  399. return self;
  400. },
  401. args: [],
  402. source: unescape('printString%0A%09%5E%27a%20%27%2C%20self%20class%20name'),
  403. messageSends: [unescape("%2C"), "name", "class"],
  404. referencedClasses: []
  405. }),
  406. smalltalk.Object);
  407. smalltalk.addMethod(
  408. unescape('_printNl'),
  409. smalltalk.method({
  410. selector: unescape('printNl'),
  411. category: 'printing',
  412. fn: function () {
  413. var self = this;
  414. console.log(self);
  415. return self;
  416. },
  417. args: [],
  418. source: unescape('printNl%0A%09%3Cconsole.log%28self%29%3E'),
  419. messageSends: [],
  420. referencedClasses: []
  421. }),
  422. smalltalk.Object);
  423. smalltalk.addMethod(
  424. unescape('_isKindOf_'),
  425. smalltalk.method({
  426. selector: unescape('isKindOf%3A'),
  427. category: 'testing',
  428. fn: function (aClass) {
  429. var self = this;
  430. 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]);}]);
  431. return self;
  432. },
  433. args: ["aClass"],
  434. 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'),
  435. messageSends: ["ifTrue:ifFalse:", "isMemberOf:", "inheritsFrom:", "class"],
  436. referencedClasses: []
  437. }),
  438. smalltalk.Object);
  439. smalltalk.addMethod(
  440. unescape('_isMemberOf_'),
  441. smalltalk.method({
  442. selector: unescape('isMemberOf%3A'),
  443. category: 'testing',
  444. fn: function (aClass) {
  445. var self = this;
  446. return smalltalk.send(smalltalk.send(self, "_class", []), "__eq", [aClass]);
  447. return self;
  448. },
  449. args: ["aClass"],
  450. source: unescape('isMemberOf%3A%20aClass%0A%09%5Eself%20class%20%3D%20aClass'),
  451. messageSends: [unescape("%3D"), "class"],
  452. referencedClasses: []
  453. }),
  454. smalltalk.Object);
  455. smalltalk.addMethod(
  456. unescape('_ifNil_'),
  457. smalltalk.method({
  458. selector: unescape('ifNil%3A'),
  459. category: 'testing',
  460. fn: function (aBlock) {
  461. var self = this;
  462. return self;
  463. return self;
  464. },
  465. args: ["aBlock"],
  466. source: unescape('ifNil%3A%20aBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5Eself'),
  467. messageSends: [],
  468. referencedClasses: []
  469. }),
  470. smalltalk.Object);
  471. smalltalk.addMethod(
  472. unescape('_ifNil_ifNotNil_'),
  473. smalltalk.method({
  474. selector: unescape('ifNil%3AifNotNil%3A'),
  475. category: 'testing',
  476. fn: function (aBlock, anotherBlock) {
  477. var self = this;
  478. return smalltalk.send(anotherBlock, "_value", []);
  479. return self;
  480. },
  481. args: ["aBlock", "anotherBlock"],
  482. source: unescape('ifNil%3A%20aBlock%20ifNotNil%3A%20anotherBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5EanotherBlock%20value'),
  483. messageSends: ["value"],
  484. referencedClasses: []
  485. }),
  486. smalltalk.Object);
  487. smalltalk.addMethod(
  488. unescape('_ifNotNil_'),
  489. smalltalk.method({
  490. selector: unescape('ifNotNil%3A'),
  491. category: 'testing',
  492. fn: function (aBlock) {
  493. var self = this;
  494. return smalltalk.send(aBlock, "_value", []);
  495. return self;
  496. },
  497. args: ["aBlock"],
  498. source: unescape('ifNotNil%3A%20aBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5EaBlock%20value'),
  499. messageSends: ["value"],
  500. referencedClasses: []
  501. }),
  502. smalltalk.Object);
  503. smalltalk.addMethod(
  504. unescape('_ifNotNil_ifNil_'),
  505. smalltalk.method({
  506. selector: unescape('ifNotNil%3AifNil%3A'),
  507. category: 'testing',
  508. fn: function (aBlock, anotherBlock) {
  509. var self = this;
  510. return smalltalk.send(aBlock, "_value", []);
  511. return self;
  512. },
  513. args: ["aBlock", "anotherBlock"],
  514. source: unescape('ifNotNil%3A%20aBlock%20ifNil%3A%20anotherBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5EaBlock%20value'),
  515. messageSends: ["value"],
  516. referencedClasses: []
  517. }),
  518. smalltalk.Object);
  519. smalltalk.addMethod(
  520. unescape('_isNil'),
  521. smalltalk.method({
  522. selector: unescape('isNil'),
  523. category: 'testing',
  524. fn: function () {
  525. var self = this;
  526. return false;
  527. return self;
  528. },
  529. args: [],
  530. source: unescape('isNil%0A%09%5Efalse'),
  531. messageSends: [],
  532. referencedClasses: []
  533. }),
  534. smalltalk.Object);
  535. smalltalk.addMethod(
  536. unescape('_notNil'),
  537. smalltalk.method({
  538. selector: unescape('notNil'),
  539. category: 'testing',
  540. fn: function () {
  541. var self = this;
  542. return smalltalk.send(smalltalk.send(self, "_isNil", []), "_not", []);
  543. return self;
  544. },
  545. args: [],
  546. source: unescape('notNil%0A%09%5Eself%20isNil%20not'),
  547. messageSends: ["not", "isNil"],
  548. referencedClasses: []
  549. }),
  550. smalltalk.Object);
  551. smalltalk.addMethod(
  552. unescape('_isClass'),
  553. smalltalk.method({
  554. selector: unescape('isClass'),
  555. category: 'testing',
  556. fn: function () {
  557. var self = this;
  558. return false;
  559. return self;
  560. },
  561. args: [],
  562. source: unescape('isClass%0A%09%5Efalse'),
  563. messageSends: [],
  564. referencedClasses: []
  565. }),
  566. smalltalk.Object);
  567. smalltalk.addMethod(
  568. unescape('_isMetaclass'),
  569. smalltalk.method({
  570. selector: unescape('isMetaclass'),
  571. category: 'testing',
  572. fn: function () {
  573. var self = this;
  574. return false;
  575. return self;
  576. },
  577. args: [],
  578. source: unescape('isMetaclass%0A%09%5Efalse'),
  579. messageSends: [],
  580. referencedClasses: []
  581. }),
  582. smalltalk.Object);
  583. smalltalk.addMethod(
  584. unescape('_isNumber'),
  585. smalltalk.method({
  586. selector: unescape('isNumber'),
  587. category: 'testing',
  588. fn: function () {
  589. var self = this;
  590. return false;
  591. return self;
  592. },
  593. args: [],
  594. source: unescape('isNumber%0A%09%5Efalse'),
  595. messageSends: [],
  596. referencedClasses: []
  597. }),
  598. smalltalk.Object);
  599. smalltalk.addMethod(
  600. unescape('_isString'),
  601. smalltalk.method({
  602. selector: unescape('isString'),
  603. category: 'testing',
  604. fn: function () {
  605. var self = this;
  606. return false;
  607. return self;
  608. },
  609. args: [],
  610. source: unescape('isString%0A%09%5Efalse'),
  611. messageSends: [],
  612. referencedClasses: []
  613. }),
  614. smalltalk.Object);
  615. smalltalk.addMethod(
  616. unescape('_isParseFailure'),
  617. smalltalk.method({
  618. selector: unescape('isParseFailure'),
  619. category: 'testing',
  620. fn: function () {
  621. var self = this;
  622. return false;
  623. return self;
  624. },
  625. args: [],
  626. source: unescape('isParseFailure%0A%09%5Efalse'),
  627. messageSends: [],
  628. referencedClasses: []
  629. }),
  630. smalltalk.Object);
  631. smalltalk.addMethod(
  632. unescape('_basicPerform_'),
  633. smalltalk.method({
  634. selector: unescape('basicPerform%3A'),
  635. category: 'message handling',
  636. fn: function (aSymbol) {
  637. var self = this;
  638. return smalltalk.send(self, "_basicPerform_withArguments_", [aSymbol, []]);
  639. return self;
  640. },
  641. args: ["aSymbol"],
  642. source: unescape('basicPerform%3A%20aSymbol%20%0A%09%5Eself%20basicPerform%3A%20aSymbol%20withArguments%3A%20%23%28%29'),
  643. messageSends: ["basicPerform:withArguments:"],
  644. referencedClasses: []
  645. }),
  646. smalltalk.Object);
  647. smalltalk.addMethod(
  648. unescape('_basicPerform_withArguments_'),
  649. smalltalk.method({
  650. selector: unescape('basicPerform%3AwithArguments%3A'),
  651. category: 'message handling',
  652. fn: function (aSymbol, aCollection) {
  653. var self = this;
  654. return self[aSymbol].apply(self, aCollection);
  655. return self;
  656. },
  657. args: ["aSymbol", "aCollection"],
  658. source: unescape('basicPerform%3A%20aSymbol%20withArguments%3A%20aCollection%0A%09%3Creturn%20self%5BaSymbol%5D.apply%28self%2C%20aCollection%29%3B%3E'),
  659. messageSends: [],
  660. referencedClasses: []
  661. }),
  662. smalltalk.Object);
  663. smalltalk.addMethod(
  664. unescape('_basicDelete_'),
  665. smalltalk.method({
  666. selector: unescape('basicDelete%3A'),
  667. category: 'accessing',
  668. fn: function (aString) {
  669. var self = this;
  670. delete self[aString];
  671. return aString;
  672. return self;
  673. },
  674. args: ["aString"],
  675. source: unescape('basicDelete%3A%20aString%0A%20%20%20%20%3Cdelete%20self%5BaString%5D%3B%20return%20aString%3E'),
  676. messageSends: [],
  677. referencedClasses: []
  678. }),
  679. smalltalk.Object);
  680. smalltalk.addMethod(
  681. unescape('_doesNotUnderstand_'),
  682. smalltalk.method({
  683. selector: unescape('doesNotUnderstand%3A'),
  684. category: 'error handling',
  685. fn: function (aMessage) {
  686. var self = this;
  687. (function ($rec) {smalltalk.send($rec, "_receiver_", [self]);smalltalk.send($rec, "_message_", [aMessage]);return smalltalk.send($rec, "_signal", []);}(smalltalk.send(smalltalk.MessageNotUnderstood || MessageNotUnderstood, "_new", [])));
  688. return self;
  689. },
  690. args: ["aMessage"],
  691. source: unescape('doesNotUnderstand%3A%20aMessage%0A%09MessageNotUnderstood%20new%0A%09%09receiver%3A%20self%3B%0A%09%09message%3A%20aMessage%3B%0A%09%09signal'),
  692. messageSends: ["receiver:", "message:", "signal", "new"],
  693. referencedClasses: ["MessageNotUnderstood"]
  694. }),
  695. smalltalk.Object);
  696. smalltalk.addMethod(
  697. unescape('_asJSON'),
  698. smalltalk.method({
  699. selector: unescape('asJSON'),
  700. category: 'converting',
  701. fn: function () {
  702. var self = this;
  703. return smalltalk.send(smalltalk.JSON || JSON, "_parse_", [smalltalk.send(self, "_asJSONString", [])]);
  704. return self;
  705. },
  706. args: [],
  707. source: unescape('asJSON%0A%09%5EJSON%20parse%3A%20self%20asJSONString'),
  708. messageSends: ["parse:", "asJSONString"],
  709. referencedClasses: ["JSON"]
  710. }),
  711. smalltalk.Object);
  712. smalltalk.addMethod(
  713. unescape('_halt'),
  714. smalltalk.method({
  715. selector: unescape('halt'),
  716. category: 'error handling',
  717. fn: function () {
  718. var self = this;
  719. smalltalk.send(self, "_error_", ["Halt encountered"]);
  720. return self;
  721. },
  722. args: [],
  723. source: unescape('halt%0A%09self%20error%3A%20%27Halt%20encountered%27'),
  724. messageSends: ["error:"],
  725. referencedClasses: []
  726. }),
  727. smalltalk.Object);
  728. smalltalk.addMethod(
  729. unescape('_log_block_'),
  730. smalltalk.method({
  731. selector: unescape('log%3Ablock%3A'),
  732. category: 'printing',
  733. fn: function (aString, aBlock) {
  734. var self = this;
  735. var result = nil;
  736. 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", [])])]);
  737. return result;
  738. return self;
  739. },
  740. args: ["aString", "aBlock"],
  741. 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'),
  742. messageSends: ["log:", unescape("%2C"), "printString", "millisecondsToRun:", "value"],
  743. referencedClasses: ["Date"]
  744. }),
  745. smalltalk.Object);
  746. smalltalk.addMethod(
  747. unescape('__eq_eq'),
  748. smalltalk.method({
  749. selector: unescape('%3D%3D'),
  750. category: 'comparing',
  751. fn: function (anObject) {
  752. var self = this;
  753. return smalltalk.send(smalltalk.send(self, "_identityHash", []), "__eq", [smalltalk.send(anObject, "_identityHash", [])]);
  754. return self;
  755. },
  756. args: ["anObject"],
  757. source: unescape('%3D%3D%20anObject%0A%09%5Eself%20identityHash%20%3D%20anObject%20identityHash'),
  758. messageSends: [unescape("%3D"), "identityHash"],
  759. referencedClasses: []
  760. }),
  761. smalltalk.Object);
  762. smalltalk.addMethod(
  763. unescape('_%7E%7E'),
  764. smalltalk.method({
  765. selector: unescape('%7E%7E'),
  766. category: 'comparing',
  767. fn: function (anObject) {
  768. var self = this;
  769. return smalltalk.send(smalltalk.send(self, "__eq_eq", [anObject]), "__eq", [false]);
  770. return self;
  771. },
  772. args: ["anObject"],
  773. source: unescape('%7E%7E%20anObject%0A%09%5E%28self%20%3D%3D%20anObject%29%20%3D%20false'),
  774. messageSends: [unescape("%3D"), unescape("%3D%3D")],
  775. referencedClasses: []
  776. }),
  777. smalltalk.Object);
  778. smalltalk.addMethod(
  779. unescape('_deprecatedAPI'),
  780. smalltalk.method({
  781. selector: unescape('deprecatedAPI'),
  782. category: 'error handling',
  783. fn: function () {
  784. var self = this;
  785. smalltalk.send(typeof console == "undefined" ? nil : console, "_warn_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.getThisContext(), "_home", []), "_asString", []), "__comma", [unescape("%20is%20deprecated%21%20%28in%20")]), "__comma", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.getThisContext(), "_home", []), "_home", []), "_asString", [])]), "__comma", [unescape("%29")])]);
  786. return self;
  787. },
  788. args: [],
  789. 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%20%28in%20%27%2C%20thisContext%20home%20home%20asString%2C%20%27%29%27'),
  790. messageSends: ["warn:", unescape("%2C"), "asString", "home"],
  791. referencedClasses: []
  792. }),
  793. smalltalk.Object);
  794. smalltalk.addMethod(
  795. unescape('_storeString'),
  796. smalltalk.method({
  797. selector: unescape('storeString'),
  798. category: 'printing',
  799. fn: function () {
  800. var self = this;
  801. return smalltalk.send(smalltalk.String || String, "_streamContents_", [function (s) {return smalltalk.send(self, "_storeOn_", [s]);}]);
  802. return self;
  803. },
  804. args: [],
  805. 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'),
  806. messageSends: ["streamContents:", "storeOn:"],
  807. referencedClasses: ["String"]
  808. }),
  809. smalltalk.Object);
  810. smalltalk.addMethod(
  811. unescape('_storeOn_'),
  812. smalltalk.method({
  813. selector: unescape('storeOn%3A'),
  814. category: 'printing',
  815. fn: function (aStream) {
  816. var self = this;
  817. smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send(self, "_printString", [])]);
  818. return self;
  819. },
  820. args: ["aStream"],
  821. source: unescape('storeOn%3A%20aStream%0A%09aStream%20nextPutAll%3A%20self%20printString'),
  822. messageSends: ["nextPutAll:", "printString"],
  823. referencedClasses: []
  824. }),
  825. smalltalk.Object);
  826. smalltalk.addMethod(
  827. unescape('_asJSONString'),
  828. smalltalk.method({
  829. selector: unescape('asJSONString'),
  830. category: 'converting',
  831. fn: function () {
  832. var self = this;
  833. return smalltalk.send(smalltalk.JSON || JSON, "_stringify_", [self]);
  834. return self;
  835. },
  836. args: [],
  837. source: unescape('asJSONString%0A%09%5EJSON%20stringify%3A%20self'),
  838. messageSends: ["stringify:"],
  839. referencedClasses: ["JSON"]
  840. }),
  841. smalltalk.Object);
  842. smalltalk.addMethod(
  843. unescape('_identityHash'),
  844. smalltalk.method({
  845. selector: unescape('identityHash'),
  846. category: 'accessing',
  847. fn: function () {
  848. var self = this;
  849. return self.identityHash || (self.identityHash = smalltalk.nextId());
  850. return self;
  851. },
  852. args: [],
  853. source: unescape('identityHash%0A%09%3Creturn%20self.identityHash%20%7C%7C%20%28self.identityHash%20%3D%20smalltalk.nextId%28%29%29%3B%3E'),
  854. messageSends: [],
  855. referencedClasses: []
  856. }),
  857. smalltalk.Object);
  858. smalltalk.addMethod(
  859. unescape('_isSymbol'),
  860. smalltalk.method({
  861. selector: unescape('isSymbol'),
  862. category: 'testing',
  863. fn: function () {
  864. var self = this;
  865. return false;
  866. return self;
  867. },
  868. args: [],
  869. source: unescape('isSymbol%0A%09%5Efalse'),
  870. messageSends: [],
  871. referencedClasses: []
  872. }),
  873. smalltalk.Object);
  874. smalltalk.addMethod(
  875. unescape('_initialize'),
  876. smalltalk.method({
  877. selector: unescape('initialize'),
  878. category: 'initialization',
  879. fn: function () {
  880. var self = this;
  881. return self;
  882. },
  883. args: [],
  884. source: unescape('initialize%0A%09%22no%20op%22'),
  885. messageSends: [],
  886. referencedClasses: []
  887. }),
  888. smalltalk.Object.klass);
  889. smalltalk.addClass('Smalltalk', smalltalk.Object, [], 'Kernel-Objects');
  890. smalltalk.Smalltalk.comment=unescape('Smalltalk%20has%20only%20one%20instance%2C%20accessed%20with%20%60Smalltalk%20current%60.%20%0AIt%20represents%20the%20global%20JavaScript%20variable%20%60smalltalk%60%20declared%20in%20%60js/boot.js%60.%0A%0AThe%20%60smalltalk%60%20object%20holds%20all%20class%20and%20packages%20defined%20in%20the%20system.%0A%0A%23%23%20Classes%0A%0AClasses%20can%20be%20accessed%20using%20the%20following%20methods%3A%0A%0A-%20%60%23classes%60%20answers%20the%20full%20list%20of%20Smalltalk%20classes%20in%20the%20system%0A-%20%60%23at%3A%60%20answers%20a%20specific%20class%20of%20%60nil%60%0A%0A%23%23%20Packages%0A%0APackages%20can%20be%20accessed%20using%20the%20following%20methods%3A%0A%0A-%20%60%23packages%60%20answers%20the%20full%20list%20of%20packages%0A-%20%60%23packageAt%3A%60%20answers%20a%20specific%20class%20of%20%60nil%60%0A%0A__note%3A__%20classes%20and%20packages%20are%20accessed%20using%20strings%2C%20not%20symbols%0A%0A%23%23%20Parsing%0A%0AThe%20%60%23parse%3A%60%20method%20is%20used%20to%20parse%20Smalltalk%20source%20code.%20%0AIt%20requires%20the%20%60Compiler%60%20package%20and%20the%20%60js/parser.js%60%20parser%20file%20in%20order%20to%20work')
  891. smalltalk.addMethod(
  892. unescape('_classes'),
  893. smalltalk.method({
  894. selector: unescape('classes'),
  895. category: 'accessing',
  896. fn: function () {
  897. var self = this;
  898. return self.classes();
  899. return self;
  900. },
  901. args: [],
  902. source: unescape('classes%0A%09%3Creturn%20self.classes%28%29%3E'),
  903. messageSends: [],
  904. referencedClasses: []
  905. }),
  906. smalltalk.Smalltalk);
  907. smalltalk.addMethod(
  908. unescape('_at_'),
  909. smalltalk.method({
  910. selector: unescape('at%3A'),
  911. category: 'accessing',
  912. fn: function (aString) {
  913. var self = this;
  914. return self[aString];
  915. return self;
  916. },
  917. args: ["aString"],
  918. source: unescape('at%3A%20aString%0A%09%3Creturn%20self%5BaString%5D%3E'),
  919. messageSends: [],
  920. referencedClasses: []
  921. }),
  922. smalltalk.Smalltalk);
  923. smalltalk.addMethod(
  924. unescape('_removeClass_'),
  925. smalltalk.method({
  926. selector: unescape('removeClass%3A'),
  927. category: 'classes',
  928. fn: function (aClass) {
  929. var self = this;
  930. ($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")])]);}]);
  931. smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_methodDictionary", []), "_values", []), "_do_", [function (each) {return smalltalk.send(aClass, "_removeCompiledMethod_", [each]);}]);
  932. smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_class", []), "_methodDictionary", []), "_values", []), "_do_", [function (each) {return smalltalk.send(smalltalk.send(aClass, "_class", []), "_removeCompiledMethod_", [each]);}]);
  933. smalltalk.send(self, "_basicDelete_", [smalltalk.send(aClass, "_name", [])]);
  934. return self;
  935. },
  936. args: ["aClass"],
  937. 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'),
  938. messageSends: ["ifTrue:", "isMetaclass", "error:", unescape("%2C"), "asString", "do:", "values", "methodDictionary", "removeCompiledMethod:", "class", "basicDelete:", "name"],
  939. referencedClasses: []
  940. }),
  941. smalltalk.Smalltalk);
  942. smalltalk.addMethod(
  943. unescape('_basicParse_'),
  944. smalltalk.method({
  945. selector: unescape('basicParse%3A'),
  946. category: 'accessing',
  947. fn: function (aString) {
  948. var self = this;
  949. return smalltalk.parser.parse(aString);
  950. return self;
  951. },
  952. args: ["aString"],
  953. source: unescape('basicParse%3A%20aString%0A%09%3Creturn%20smalltalk.parser.parse%28aString%29%3E'),
  954. messageSends: [],
  955. referencedClasses: []
  956. }),
  957. smalltalk.Smalltalk);
  958. smalltalk.addMethod(
  959. unescape('_parse_'),
  960. smalltalk.method({
  961. selector: unescape('parse%3A'),
  962. category: 'accessing',
  963. fn: function (aString) {
  964. var self = this;
  965. var result = nil;
  966. 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", []);}]);
  967. return result;
  968. return self;
  969. },
  970. args: ["aString"],
  971. 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'),
  972. messageSends: ["try:catch:", "basicParse:", "signal", "parseError:parsing:"],
  973. referencedClasses: []
  974. }),
  975. smalltalk.Smalltalk);
  976. smalltalk.addMethod(
  977. unescape('_parseError_parsing_'),
  978. smalltalk.method({
  979. selector: unescape('parseError%3Aparsing%3A'),
  980. category: 'accessing',
  981. fn: function (anException, aString) {
  982. var self = this;
  983. var row = nil;
  984. var col = nil;
  985. var message = nil;
  986. var lines = nil;
  987. var badLine = nil;
  988. var code = nil;
  989. row = anException.line;
  990. col = anException.column;
  991. message = anException.message;
  992. lines = smalltalk.send(aString, "_lines", []);
  993. badLine = smalltalk.send(lines, "_at_", [row]);
  994. 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", [])])]);
  995. smalltalk.send(lines, "_at_put_", [row, badLine]);
  996. 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", [])])]);}]);}]);
  997. 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])]);
  998. return self;
  999. },
  1000. args: ["anException", "aString"],
  1001. 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'),
  1002. messageSends: ["lines", "at:", unescape("%2C"), "copyFrom:to:", unescape("-"), "size", "at:put:", "streamContents:", "withIndexDo:", "nextPutAll:", "asString", "lf", "messageText:", "new"],
  1003. referencedClasses: ["String", "Error"]
  1004. }),
  1005. smalltalk.Smalltalk);
  1006. smalltalk.addMethod(
  1007. unescape('_packages'),
  1008. smalltalk.method({
  1009. selector: unescape('packages'),
  1010. category: 'packages',
  1011. fn: function () {
  1012. var self = this;
  1013. return self.packages.all();
  1014. return self;
  1015. },
  1016. args: [],
  1017. source: unescape('packages%0A%09%22Return%20all%20Package%20instances%20in%20the%20system.%22%0A%0A%09%3Creturn%20self.packages.all%28%29%3E'),
  1018. messageSends: [],
  1019. referencedClasses: []
  1020. }),
  1021. smalltalk.Smalltalk);
  1022. smalltalk.addMethod(
  1023. unescape('_packageAt_'),
  1024. smalltalk.method({
  1025. selector: unescape('packageAt%3A'),
  1026. category: 'packages',
  1027. fn: function (packageName) {
  1028. var self = this;
  1029. return self.packages[packageName];
  1030. return self;
  1031. },
  1032. args: ["packageName"],
  1033. source: unescape('packageAt%3A%20packageName%0A%20%20%20%20%20%20%20%3Creturn%20self.packages%5BpackageName%5D%3E'),
  1034. messageSends: [],
  1035. referencedClasses: []
  1036. }),
  1037. smalltalk.Smalltalk);
  1038. smalltalk.addMethod(
  1039. unescape('_packageAt_ifAbsent_'),
  1040. smalltalk.method({
  1041. selector: unescape('packageAt%3AifAbsent%3A'),
  1042. category: 'packages',
  1043. fn: function (packageName, aBlock) {
  1044. var self = this;
  1045. return smalltalk.send(smalltalk.send(self, "_packageAt_", [packageName]), "_ifNil_", [aBlock]);
  1046. return self;
  1047. },
  1048. args: ["packageName", "aBlock"],
  1049. 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'),
  1050. messageSends: ["ifNil:", "packageAt:"],
  1051. referencedClasses: []
  1052. }),
  1053. smalltalk.Smalltalk);
  1054. smalltalk.addMethod(
  1055. unescape('_createPackage_'),
  1056. smalltalk.method({
  1057. selector: unescape('createPackage%3A'),
  1058. category: 'private',
  1059. fn: function (packageName) {
  1060. var self = this;
  1061. return smalltalk.addPackage(packageName, nil);
  1062. return self;
  1063. },
  1064. args: ["packageName"],
  1065. 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'),
  1066. messageSends: [],
  1067. referencedClasses: []
  1068. }),
  1069. smalltalk.Smalltalk);
  1070. smalltalk.addMethod(
  1071. unescape('_deletePackage_'),
  1072. smalltalk.method({
  1073. selector: unescape('deletePackage%3A'),
  1074. category: 'private',
  1075. fn: function (packageName) {
  1076. var self = this;
  1077. delete smalltalk.packages[packageName];
  1078. return self;
  1079. },
  1080. args: ["packageName"],
  1081. 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'),
  1082. messageSends: [],
  1083. referencedClasses: []
  1084. }),
  1085. smalltalk.Smalltalk);
  1086. smalltalk.addMethod(
  1087. unescape('_removePackage_'),
  1088. smalltalk.method({
  1089. selector: unescape('removePackage%3A'),
  1090. category: 'packages',
  1091. fn: function (packageName) {
  1092. var self = this;
  1093. var pkg = nil;
  1094. pkg = smalltalk.send(self, "_packageAt_ifAbsent_", [packageName, function () {return smalltalk.send(self, "_error_", [smalltalk.send("Missing package: ", "__comma", [packageName])]);}]);
  1095. smalltalk.send(smalltalk.send(pkg, "_classes", []), "_do_", [function (each) {return smalltalk.send(self, "_removeClass_", [each]);}]);
  1096. smalltalk.send(self, "_deletePackage_", [packageName]);
  1097. return self;
  1098. },
  1099. args: ["packageName"],
  1100. 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'),
  1101. messageSends: ["packageAt:ifAbsent:", "error:", unescape("%2C"), "do:", "classes", "removeClass:", "deletePackage:"],
  1102. referencedClasses: []
  1103. }),
  1104. smalltalk.Smalltalk);
  1105. smalltalk.addMethod(
  1106. unescape('_renamePackage_to_'),
  1107. smalltalk.method({
  1108. selector: unescape('renamePackage%3Ato%3A'),
  1109. category: 'packages',
  1110. fn: function (packageName, newName) {
  1111. var self = this;
  1112. var pkg = nil;
  1113. pkg = smalltalk.send(self, "_packageAt_ifAbsent_", [packageName, function () {return smalltalk.send(self, "_error_", [smalltalk.send("Missing package: ", "__comma", [packageName])]);}]);
  1114. ($receiver = smalltalk.send(self, "_packageAt_", [newName])) != nil &&
  1115. $receiver != undefined ? function () {return smalltalk.send(self, "_error_", [smalltalk.send("Already exists a package called: ", "__comma", [newName])]);}() : nil;
  1116. smalltalk.packages[newName] = smalltalk.packages[packageName];
  1117. smalltalk.send(pkg, "_name_", [newName]);
  1118. smalltalk.send(self, "_deletePackage_", [packageName]);
  1119. return self;
  1120. },
  1121. args: ["packageName", "newName"],
  1122. 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.'),
  1123. messageSends: ["packageAt:ifAbsent:", "error:", unescape("%2C"), "ifNotNil:", "packageAt:", "name:", "deletePackage:"],
  1124. referencedClasses: []
  1125. }),
  1126. smalltalk.Smalltalk);
  1127. smalltalk.addMethod(
  1128. unescape('_reservedWords'),
  1129. smalltalk.method({
  1130. selector: unescape('reservedWords'),
  1131. category: 'accessing',
  1132. fn: function () {
  1133. var self = this;
  1134. return self.reservedWords;
  1135. return self;
  1136. },
  1137. args: [],
  1138. source: unescape('reservedWords%0A%09%22JavaScript%20reserved%20words%22%0A%09%3Creturn%20self.reservedWords%3E'),
  1139. messageSends: [],
  1140. referencedClasses: []
  1141. }),
  1142. smalltalk.Smalltalk);
  1143. smalltalk.addMethod(
  1144. unescape('_createPackage_properties_'),
  1145. smalltalk.method({
  1146. selector: unescape('createPackage%3Aproperties%3A'),
  1147. category: 'private',
  1148. fn: function (packageName, aDict) {
  1149. var self = this;
  1150. var object = nil;
  1151. object = {};
  1152. smalltalk.send(aDict, "_keysAndValuesDo_", [function (key, value) {return object[key] = value;}]);
  1153. return smalltalk.addPackage(packageName, object);
  1154. return self;
  1155. },
  1156. args: ["packageName", "aDict"],
  1157. 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'),
  1158. messageSends: ["keysAndValuesDo:"],
  1159. referencedClasses: []
  1160. }),
  1161. smalltalk.Smalltalk);
  1162. smalltalk.addMethod(
  1163. unescape('_readJSObject_'),
  1164. smalltalk.method({
  1165. selector: unescape('readJSObject%3A'),
  1166. category: 'accessing',
  1167. fn: function (anObject) {
  1168. var self = this;
  1169. return self.readJSObject(anObject);
  1170. return self;
  1171. },
  1172. args: ["anObject"],
  1173. source: unescape('readJSObject%3A%20anObject%0A%09%3Creturn%20self.readJSObject%28anObject%29%3E'),
  1174. messageSends: [],
  1175. referencedClasses: []
  1176. }),
  1177. smalltalk.Smalltalk);
  1178. smalltalk.addMethod(
  1179. unescape('_send_to_arguments_'),
  1180. smalltalk.method({
  1181. selector: unescape('send%3Ato%3Aarguments%3A'),
  1182. category: 'accessing',
  1183. fn: function (aSelector, anObject, aCollection) {
  1184. var self = this;
  1185. var selector = nil;
  1186. selector = smalltalk.send(smalltalk.send(aSelector, "_asString", []), "_asSelector", []);
  1187. self.send(anObject, selector, aCollection);
  1188. return self;
  1189. },
  1190. args: ["aSelector", "anObject", "aCollection"],
  1191. source: unescape('send%3A%20aSelector%20to%3A%20anObject%20arguments%3A%20aCollection%0A%09%7C%20selector%20%7C%0A%09selector%20%3A%3D%20aSelector%20asString%20asSelector.%0A%09%3Cself.send%28anObject%2C%20selector%2C%20aCollection%29%3E'),
  1192. messageSends: ["asSelector", "asString"],
  1193. referencedClasses: []
  1194. }),
  1195. smalltalk.Smalltalk);
  1196. smalltalk.Smalltalk.klass.iVarNames = ['current'];
  1197. smalltalk.addMethod(
  1198. unescape('_current'),
  1199. smalltalk.method({
  1200. selector: unescape('current'),
  1201. category: 'accessing',
  1202. fn: function () {
  1203. var self = this;
  1204. return smalltalk;
  1205. return self;
  1206. },
  1207. args: [],
  1208. source: unescape('current%0A%09%3Creturn%20smalltalk%3E'),
  1209. messageSends: [],
  1210. referencedClasses: []
  1211. }),
  1212. smalltalk.Smalltalk.klass);
  1213. smalltalk.addClass('Package', smalltalk.Object, ['commitPathJs', 'commitPathSt'], 'Kernel-Objects');
  1214. 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.%0A%0AYou%20can%20fetch%20a%20package%20from%20the%20server%3A%0A%0A%09Package%20fetch%3A%20%27Additional-Examples%27')
  1215. smalltalk.addMethod(
  1216. unescape('_name'),
  1217. smalltalk.method({
  1218. selector: unescape('name'),
  1219. category: 'accessing',
  1220. fn: function () {
  1221. var self = this;
  1222. return self.pkgName;
  1223. return self;
  1224. },
  1225. args: [],
  1226. source: unescape('name%0A%09%3Creturn%20self.pkgName%3E'),
  1227. messageSends: [],
  1228. referencedClasses: []
  1229. }),
  1230. smalltalk.Package);
  1231. smalltalk.addMethod(
  1232. unescape('_name_'),
  1233. smalltalk.method({
  1234. selector: unescape('name%3A'),
  1235. category: 'accessing',
  1236. fn: function (aString) {
  1237. var self = this;
  1238. self.pkgName = aString;
  1239. return self;
  1240. },
  1241. args: ["aString"],
  1242. source: unescape('name%3A%20aString%0A%09%3Cself.pkgName%20%3D%20aString%3E'),
  1243. messageSends: [],
  1244. referencedClasses: []
  1245. }),
  1246. smalltalk.Package);
  1247. smalltalk.addMethod(
  1248. unescape('_classes'),
  1249. smalltalk.method({
  1250. selector: unescape('classes'),
  1251. category: 'classes',
  1252. fn: function () {
  1253. var self = this;
  1254. 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]);}]);
  1255. return self;
  1256. },
  1257. args: [],
  1258. 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'),
  1259. messageSends: ["select:", "classes", "current", unescape("%3D%3D"), "package"],
  1260. referencedClasses: ["Smalltalk"]
  1261. }),
  1262. smalltalk.Package);
  1263. smalltalk.addMethod(
  1264. unescape('_printString'),
  1265. smalltalk.method({
  1266. selector: unescape('printString'),
  1267. category: 'printing',
  1268. fn: function () {
  1269. var self = this;
  1270. return smalltalk.send(self, "_name", []);
  1271. return self;
  1272. },
  1273. args: [],
  1274. source: unescape('printString%0A%09%5Eself%20name'),
  1275. messageSends: ["name"],
  1276. referencedClasses: []
  1277. }),
  1278. smalltalk.Package);
  1279. smalltalk.addMethod(
  1280. unescape('_dependencies'),
  1281. smalltalk.method({
  1282. selector: unescape('dependencies'),
  1283. category: 'accessing',
  1284. fn: function () {
  1285. var self = this;
  1286. return smalltalk.send(self, "_propertyAt_ifAbsent_", ["dependencies", function () {return [];}]);
  1287. return self;
  1288. },
  1289. args: [],
  1290. source: unescape('dependencies%0A%09%5Eself%20propertyAt%3A%20%27dependencies%27%20ifAbsent%3A%20%5B%23%28%29%5D'),
  1291. messageSends: ["propertyAt:ifAbsent:"],
  1292. referencedClasses: []
  1293. }),
  1294. smalltalk.Package);
  1295. smalltalk.addMethod(
  1296. unescape('_dependencies_'),
  1297. smalltalk.method({
  1298. selector: unescape('dependencies%3A'),
  1299. category: 'accessing',
  1300. fn: function (anArray) {
  1301. var self = this;
  1302. return smalltalk.send(self, "_propertyAt_put_", ["dependencies", anArray]);
  1303. return self;
  1304. },
  1305. args: ["anArray"],
  1306. source: unescape('dependencies%3A%20anArray%0A%09%5Eself%20propertyAt%3A%20%27dependencies%27%20put%3A%20anArray'),
  1307. messageSends: ["propertyAt:put:"],
  1308. referencedClasses: []
  1309. }),
  1310. smalltalk.Package);
  1311. smalltalk.addMethod(
  1312. unescape('_properties'),
  1313. smalltalk.method({
  1314. selector: unescape('properties'),
  1315. category: 'accessing',
  1316. fn: function () {
  1317. var self = this;
  1318. return smalltalk.send(smalltalk.send(smalltalk.Smalltalk || Smalltalk, "_current", []), "_readJSObject_", [smalltalk.send(self, "_basicAt_", ["properties"])]);
  1319. return self;
  1320. },
  1321. args: [],
  1322. source: unescape('properties%0A%09%5ESmalltalk%20current%20readJSObject%3A%20%28self%20basicAt%3A%20%27properties%27%29'),
  1323. messageSends: ["readJSObject:", "current", "basicAt:"],
  1324. referencedClasses: ["Smalltalk"]
  1325. }),
  1326. smalltalk.Package);
  1327. smalltalk.addMethod(
  1328. unescape('_propertiesAsJSON'),
  1329. smalltalk.method({
  1330. selector: unescape('propertiesAsJSON'),
  1331. category: 'private',
  1332. fn: function () {
  1333. var self = this;
  1334. return JSON.stringify(self.properties);
  1335. return self;
  1336. },
  1337. args: [],
  1338. source: unescape('propertiesAsJSON%0A%09%3Creturn%20JSON.stringify%28self.properties%29%3E'),
  1339. messageSends: [],
  1340. referencedClasses: []
  1341. }),
  1342. smalltalk.Package);
  1343. smalltalk.addMethod(
  1344. unescape('_properties_'),
  1345. smalltalk.method({
  1346. selector: unescape('properties%3A'),
  1347. category: 'accessing',
  1348. fn: function (aDict) {
  1349. var self = this;
  1350. var object = nil;
  1351. object = {};
  1352. smalltalk.send(aDict, "_keysAndValuesDo_", [function (key, value) {return object[key] = value;}]);
  1353. return self.properties = object;
  1354. return self;
  1355. },
  1356. args: ["aDict"],
  1357. 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'),
  1358. messageSends: ["keysAndValuesDo:"],
  1359. referencedClasses: []
  1360. }),
  1361. smalltalk.Package);
  1362. smalltalk.addMethod(
  1363. unescape('_jsProperties'),
  1364. smalltalk.method({
  1365. selector: unescape('jsProperties'),
  1366. category: 'private',
  1367. fn: function () {
  1368. var self = this;
  1369. return self.properties;
  1370. return self;
  1371. },
  1372. args: [],
  1373. source: unescape('jsProperties%0A%09%3Creturn%20self.properties%3E'),
  1374. messageSends: [],
  1375. referencedClasses: []
  1376. }),
  1377. smalltalk.Package);
  1378. smalltalk.addMethod(
  1379. unescape('_jsProperties_'),
  1380. smalltalk.method({
  1381. selector: unescape('jsProperties%3A'),
  1382. category: 'private',
  1383. fn: function (aJSObject) {
  1384. var self = this;
  1385. return self.properties = aJSObject;
  1386. return self;
  1387. },
  1388. args: ["aJSObject"],
  1389. source: unescape('jsProperties%3A%20aJSObject%0A%09%3Creturn%20self.properties%20%3D%20aJSObject%3E'),
  1390. messageSends: [],
  1391. referencedClasses: []
  1392. }),
  1393. smalltalk.Package);
  1394. smalltalk.addMethod(
  1395. unescape('_propertyAt_'),
  1396. smalltalk.method({
  1397. selector: unescape('propertyAt%3A'),
  1398. category: 'properties',
  1399. fn: function (key) {
  1400. var self = this;
  1401. return self.properties[key];
  1402. return self;
  1403. },
  1404. args: ["key"],
  1405. source: unescape('propertyAt%3A%20key%0A%0A%09%3Creturn%20self.properties%5Bkey%5D%3E'),
  1406. messageSends: [],
  1407. referencedClasses: []
  1408. }),
  1409. smalltalk.Package);
  1410. smalltalk.addMethod(
  1411. unescape('_propertyAt_put_'),
  1412. smalltalk.method({
  1413. selector: unescape('propertyAt%3Aput%3A'),
  1414. category: 'properties',
  1415. fn: function (key, value) {
  1416. var self = this;
  1417. return self.properties[key] = value;
  1418. return self;
  1419. },
  1420. args: ["key", "value"],
  1421. source: unescape('propertyAt%3A%20key%20put%3A%20value%0A%0A%09%3Creturn%20self.properties%5Bkey%5D%20%3D%20value%3E'),
  1422. messageSends: [],
  1423. referencedClasses: []
  1424. }),
  1425. smalltalk.Package);
  1426. smalltalk.addMethod(
  1427. unescape('_propertyAt_ifAbsent_'),
  1428. smalltalk.method({
  1429. selector: unescape('propertyAt%3AifAbsent%3A'),
  1430. category: 'properties',
  1431. fn: function (key, block) {
  1432. var self = this;
  1433. return ($receiver = smalltalk.send(self, "_propertyAt_", [key])) == nil ||
  1434. $receiver == undefined ? function () {return smalltalk.send(block, "_value", []);}() : $receiver;
  1435. return self;
  1436. },
  1437. args: ["key", "block"],
  1438. source: unescape('propertyAt%3A%20key%20ifAbsent%3A%20block%0A%0A%09%5E%28self%20propertyAt%3A%20key%29%20ifNil%3A%20%5Bblock%20value%5D'),
  1439. messageSends: ["ifNil:", "propertyAt:", "value"],
  1440. referencedClasses: []
  1441. }),
  1442. smalltalk.Package);
  1443. smalltalk.addMethod(
  1444. unescape('_commitPathJs'),
  1445. smalltalk.method({
  1446. selector: unescape('commitPathJs'),
  1447. category: 'accessing',
  1448. fn: function () {
  1449. var self = this;
  1450. return ($receiver = self['@commitPathJs']) == nil ||
  1451. $receiver == undefined ? function () {return smalltalk.send(smalltalk.send(self, "_class", []), "_defaultCommitPathJs", []);}() : $receiver;
  1452. return self;
  1453. },
  1454. args: [],
  1455. source: unescape('commitPathJs%0A%09%5E%20commitPathJs%20ifNil%3A%20%5Bself%20class%20defaultCommitPathJs%5D'),
  1456. messageSends: ["ifNil:", "defaultCommitPathJs", "class"],
  1457. referencedClasses: []
  1458. }),
  1459. smalltalk.Package);
  1460. smalltalk.addMethod(
  1461. unescape('_commitPathJs_'),
  1462. smalltalk.method({
  1463. selector: unescape('commitPathJs%3A'),
  1464. category: 'accessing',
  1465. fn: function (aString) {
  1466. var self = this;
  1467. self['@commitPathJs'] = aString;
  1468. return self;
  1469. },
  1470. args: ["aString"],
  1471. source: unescape('commitPathJs%3A%20aString%0A%09commitPathJs%A0%3A%3D%20aString'),
  1472. messageSends: [],
  1473. referencedClasses: []
  1474. }),
  1475. smalltalk.Package);
  1476. smalltalk.addMethod(
  1477. unescape('_commitPathSt'),
  1478. smalltalk.method({
  1479. selector: unescape('commitPathSt'),
  1480. category: 'accessing',
  1481. fn: function () {
  1482. var self = this;
  1483. return ($receiver = self['@commitPathSt']) == nil ||
  1484. $receiver == undefined ? function () {return smalltalk.send(smalltalk.send(self, "_class", []), "_defaultCommitPathSt", []);}() : $receiver;
  1485. return self;
  1486. },
  1487. args: [],
  1488. source: unescape('commitPathSt%0A%09%5E%20commitPathSt%20ifNil%3A%20%5Bself%20class%20defaultCommitPathSt%5D'),
  1489. messageSends: ["ifNil:", "defaultCommitPathSt", "class"],
  1490. referencedClasses: []
  1491. }),
  1492. smalltalk.Package);
  1493. smalltalk.addMethod(
  1494. unescape('_commitPathSt_'),
  1495. smalltalk.method({
  1496. selector: unescape('commitPathSt%3A'),
  1497. category: 'accessing',
  1498. fn: function (aString) {
  1499. var self = this;
  1500. self['@commitPathSt'] = aString;
  1501. return self;
  1502. },
  1503. args: ["aString"],
  1504. source: unescape('commitPathSt%3A%20aString%0A%09commitPathSt%A0%3A%3D%20aString'),
  1505. messageSends: [],
  1506. referencedClasses: []
  1507. }),
  1508. smalltalk.Package);
  1509. smalltalk.addMethod(
  1510. unescape('_sortedClasses'),
  1511. smalltalk.method({
  1512. selector: unescape('sortedClasses'),
  1513. category: 'classes',
  1514. fn: function () {
  1515. var self = this;
  1516. return smalltalk.send(smalltalk.send(self, "_classes", []), "_inject_into_", [[], function (acc, each) {return ($receiver = smalltalk.send(acc, "_isEmpty", [])).klass === smalltalk.Boolean ? $receiver ? function () {return function ($rec) {smalltalk.send($rec, "_add_", [each]);return smalltalk.send($rec, "_yourself", []);}(acc);}() : function () {return ($receiver = smalltalk.send(acc, "_includes_", [smalltalk.send(each, "_superclass", [])])).klass === smalltalk.Boolean ? $receiver ? function () {return function ($rec) {smalltalk.send($rec, "_add_", [each]);return smalltalk.send($rec, "_yourself", []);}(acc);}() : function () {return smalltalk.send([each], "__comma", [acc]);}() : smalltalk.send($receiver, "_ifTrue_ifFalse_", [function () {return function ($rec) {smalltalk.send($rec, "_add_", [each]);return smalltalk.send($rec, "_yourself", []);}(acc);}, function () {return smalltalk.send([each], "__comma", [acc]);}]);}() : smalltalk.send($receiver, "_ifTrue_ifFalse_", [function () {return function ($rec) {smalltalk.send($rec, "_add_", [each]);return smalltalk.send($rec, "_yourself", []);}(acc);}, function () {return ($receiver = smalltalk.send(acc, "_includes_", [smalltalk.send(each, "_superclass", [])])).klass === smalltalk.Boolean ? $receiver ? function () {return function ($rec) {smalltalk.send($rec, "_add_", [each]);return smalltalk.send($rec, "_yourself", []);}(acc);}() : function () {return smalltalk.send([each], "__comma", [acc]);}() : smalltalk.send($receiver, "_ifTrue_ifFalse_", [function () {return function ($rec) {smalltalk.send($rec, "_add_", [each]);return smalltalk.send($rec, "_yourself", []);}(acc);}, function () {return smalltalk.send([each], "__comma", [acc]);}]);}]);}]);
  1517. return self;
  1518. },
  1519. args: [],
  1520. source: unescape('sortedClasses%0A%09%22Answer%20all%20classes%20in%20the%20receiver%2C%20sorted%20by%20superclass/subclasses%22%0A%09%0A%09%5Eself%20classes%20inject%3A%20%23%28%29%20into%3A%20%5B%3Aacc%20%3Aeach%20%7C%20%0A%09%09acc%20isEmpty%20%0A%09%09%09ifTrue%3A%20%5Bacc%20add%3A%20each%3B%20yourself%5D%0A%09%09%09ifFalse%3A%20%5B%28acc%20includes%3A%20each%20superclass%29%0A%09%09%09%09ifTrue%3A%20%5Bacc%20add%3A%20each%3B%20yourself%5D%0A%09%09%09%09ifFalse%3A%20%5B%7Beach%7D%2C%20acc%5D%5D%5D'),
  1521. messageSends: ["inject:into:", "classes", "ifTrue:ifFalse:", "isEmpty", "add:", "yourself", "includes:", "superclass", unescape("%2C")],
  1522. referencedClasses: []
  1523. }),
  1524. smalltalk.Package);
  1525. smalltalk.Package.klass.iVarNames = ['defaultCommitPathJs','defaultCommitPathSt'];
  1526. smalltalk.addMethod(
  1527. unescape('_named_'),
  1528. smalltalk.method({
  1529. selector: unescape('named%3A'),
  1530. category: 'not yet classified',
  1531. fn: function (aPackageName) {
  1532. var self = this;
  1533. return smalltalk.send(smalltalk.send(smalltalk.Smalltalk || Smalltalk, "_current", []), "_packageAt_", [aPackageName]);
  1534. return self;
  1535. },
  1536. args: ["aPackageName"],
  1537. source: unescape('named%3A%20aPackageName%0A%0A%09%5ESmalltalk%20current%20packageAt%3A%20aPackageName'),
  1538. messageSends: ["packageAt:", "current"],
  1539. referencedClasses: ["Smalltalk"]
  1540. }),
  1541. smalltalk.Package.klass);
  1542. smalltalk.addMethod(
  1543. unescape('_named_ifAbsent_'),
  1544. smalltalk.method({
  1545. selector: unescape('named%3AifAbsent%3A'),
  1546. category: 'not yet classified',
  1547. fn: function (aPackageName, aBlock) {
  1548. var self = this;
  1549. return smalltalk.send(smalltalk.send(smalltalk.Smalltalk || Smalltalk, "_current", []), "_packageAt_ifAbsent_", [aPackageName, aBlock]);
  1550. return self;
  1551. },
  1552. args: ["aPackageName", "aBlock"],
  1553. source: unescape('named%3A%20aPackageName%20ifAbsent%3A%20aBlock%0A%0A%09%5ESmalltalk%20current%20packageAt%3A%20aPackageName%20ifAbsent%3A%20aBlock'),
  1554. messageSends: ["packageAt:ifAbsent:", "current"],
  1555. referencedClasses: ["Smalltalk"]
  1556. }),
  1557. smalltalk.Package.klass);
  1558. smalltalk.addMethod(
  1559. unescape('_defaultCommitPathJs'),
  1560. smalltalk.method({
  1561. selector: unescape('defaultCommitPathJs'),
  1562. category: 'commit paths',
  1563. fn: function () {
  1564. var self = this;
  1565. return ($receiver = self['@defaultCommitPathJs']) == nil ||
  1566. $receiver == undefined ? function () {return self['@defaultCommitPathJs'] = "js";}() : $receiver;
  1567. return self;
  1568. },
  1569. args: [],
  1570. source: unescape('defaultCommitPathJs%0A%09%5E%20defaultCommitPathJs%20ifNil%3A%20%5B%20defaultCommitPathJs%20%3A%3D%20%27js%27%5D'),
  1571. messageSends: ["ifNil:"],
  1572. referencedClasses: []
  1573. }),
  1574. smalltalk.Package.klass);
  1575. smalltalk.addMethod(
  1576. unescape('_defaultCommitPathJs_'),
  1577. smalltalk.method({
  1578. selector: unescape('defaultCommitPathJs%3A'),
  1579. category: 'commit paths',
  1580. fn: function (aString) {
  1581. var self = this;
  1582. self['@defaultCommitPathJs'] = aString;
  1583. return self;
  1584. },
  1585. args: ["aString"],
  1586. source: unescape('defaultCommitPathJs%3A%20aString%0A%09defaultCommitPathJs%20%3A%3D%20aString'),
  1587. messageSends: [],
  1588. referencedClasses: []
  1589. }),
  1590. smalltalk.Package.klass);
  1591. smalltalk.addMethod(
  1592. unescape('_defaultCommitPathSt'),
  1593. smalltalk.method({
  1594. selector: unescape('defaultCommitPathSt'),
  1595. category: 'commit paths',
  1596. fn: function () {
  1597. var self = this;
  1598. return ($receiver = self['@defaultCommitPathSt']) == nil ||
  1599. $receiver == undefined ? function () {return self['@defaultCommitPathSt'] = "st";}() : $receiver;
  1600. return self;
  1601. },
  1602. args: [],
  1603. source: unescape('defaultCommitPathSt%0A%09%5E%20defaultCommitPathSt%20ifNil%3A%20%5B%20defaultCommitPathSt%20%3A%3D%20%27st%27%5D'),
  1604. messageSends: ["ifNil:"],
  1605. referencedClasses: []
  1606. }),
  1607. smalltalk.Package.klass);
  1608. smalltalk.addMethod(
  1609. unescape('_defaultCommitPathSt_'),
  1610. smalltalk.method({
  1611. selector: unescape('defaultCommitPathSt%3A'),
  1612. category: 'commit paths',
  1613. fn: function (aString) {
  1614. var self = this;
  1615. self['@defaultCommitPathSt'] = aString;
  1616. return self;
  1617. },
  1618. args: ["aString"],
  1619. source: unescape('defaultCommitPathSt%3A%20aString%0A%09defaultCommitPathSt%20%3A%3D%20aString'),
  1620. messageSends: [],
  1621. referencedClasses: []
  1622. }),
  1623. smalltalk.Package.klass);
  1624. smalltalk.addMethod(
  1625. unescape('_resetCommitPaths'),
  1626. smalltalk.method({
  1627. selector: unescape('resetCommitPaths'),
  1628. category: 'commit paths',
  1629. fn: function () {
  1630. var self = this;
  1631. self['@defaultCommitPathJs'] = nil;
  1632. self['@defaultCommitPathSt'] = nil;
  1633. return self;
  1634. },
  1635. args: [],
  1636. source: unescape('resetCommitPaths%0A%20%20%20%20%20%20%20%20defaultCommitPathJs%20%3A%3D%20nil.%0A%20%20%20%20%20%20%20%20defaultCommitPathSt%20%3A%3D%20nil.'),
  1637. messageSends: [],
  1638. referencedClasses: []
  1639. }),
  1640. smalltalk.Package.klass);
  1641. smalltalk.addMethod(
  1642. unescape('_fetch_prefix_'),
  1643. smalltalk.method({
  1644. selector: unescape('fetch%3Aprefix%3A'),
  1645. category: 'loading-storing',
  1646. fn: function (aPackageName, aPrefix) {
  1647. var self = this;
  1648. smalltalk.send(typeof jQuery == "undefined" ? nil : jQuery, "_getScript_onSuccess_", [smalltalk.send(smalltalk.send(aPrefix, "__comma", [aPackageName]), "__comma", [".js"]), function () {return smalltalk.send(smalltalk.Package || Package, "_init_", [aPackageName]);}]);
  1649. return self;
  1650. },
  1651. args: ["aPackageName", "aPrefix"],
  1652. source: unescape('fetch%3A%20aPackageName%20prefix%3A%20aPrefix%0A%09jQuery%20getScript%3A%20%28aPrefix%20%2C%20aPackageName%20%2C%20%27.js%27%29%20onSuccess%3A%20%5B%20Package%20init%3A%20aPackageName%20%5D'),
  1653. messageSends: ["getScript:onSuccess:", unescape("%2C"), "init:"],
  1654. referencedClasses: ["Package"]
  1655. }),
  1656. smalltalk.Package.klass);
  1657. smalltalk.addMethod(
  1658. unescape('_fetch_'),
  1659. smalltalk.method({
  1660. selector: unescape('fetch%3A'),
  1661. category: 'loading-storing',
  1662. fn: function (aPackageName) {
  1663. var self = this;
  1664. smalltalk.send(self, "_fetch_prefix_", [aPackageName, smalltalk.send(smalltalk.send(self, "_defaultCommitPathJs", []), "__comma", [unescape("/")])]);
  1665. return self;
  1666. },
  1667. args: ["aPackageName"],
  1668. source: unescape('fetch%3A%20aPackageName%0A%09self%20fetch%3A%20aPackageName%20prefix%3A%20self%20defaultCommitPathJs%2C%20%27/%27'),
  1669. messageSends: ["fetch:prefix:", unescape("%2C"), "defaultCommitPathJs"],
  1670. referencedClasses: []
  1671. }),
  1672. smalltalk.Package.klass);
  1673. smalltalk.addMethod(
  1674. unescape('_commitToLocalStorage_'),
  1675. smalltalk.method({
  1676. selector: unescape('commitToLocalStorage%3A'),
  1677. category: 'loading-storing',
  1678. fn: function (aPackageName) {
  1679. var self = this;
  1680. var key = nil;
  1681. var sourceCode = nil;
  1682. key = smalltalk.send("smalltalk.packages.", "__comma", [aPackageName]);
  1683. sourceCode = smalltalk.send(smalltalk.send(smalltalk.Exporter || Exporter, "_new", []), "_exportPackage_", [aPackageName]);
  1684. localStorage[key] = escape(sourceCode);
  1685. return self;
  1686. },
  1687. args: ["aPackageName"],
  1688. source: unescape('commitToLocalStorage%3A%20aPackageName%0A%09%7C%20key%20sourceCode%20%7C%0A%09key%20%3A%3D%20%27smalltalk.packages.%27%20%2C%20aPackageName.%0A%09sourceCode%20%3A%3D%20Exporter%20new%20exportPackage%3A%20aPackageName.%0A%09%3ClocalStorage%5Bkey%5D%20%3D%20escape%28sourceCode%29%3E'),
  1689. messageSends: [unescape("%2C"), "exportPackage:", "new"],
  1690. referencedClasses: ["Exporter"]
  1691. }),
  1692. smalltalk.Package.klass);
  1693. smalltalk.addMethod(
  1694. unescape('_init_'),
  1695. smalltalk.method({
  1696. selector: unescape('init%3A'),
  1697. category: 'loading-storing',
  1698. fn: function (aPackageName) {
  1699. var self = this;
  1700. (function ($rec) {smalltalk.send($rec, "_do_", [function (each) {return smalltalk.init(each);}]);return smalltalk.send($rec, "_do_", [function (each) {return smalltalk.send(each, "_initialize", []);}]);}(smalltalk.send(smalltalk.send(typeof smalltalk == "undefined" ? nil : smalltalk, "_classes", []), "_select_", [function (each) {return each.pkg.pkgName == aPackageName;}])));
  1701. return self;
  1702. },
  1703. args: ["aPackageName"],
  1704. source: unescape('init%3A%20aPackageName%0A%09%28smalltalk%20classes%20select%3A%20%5B%20%3Aeach%20%7C%20%3Ceach.pkg.pkgName%20%3D%3D%20aPackageName%3E%20%5D%29%0A%09%09do%3A%20%5B%20%3Aeach%20%7C%20%3Csmalltalk.init%28each%29%3E%20%5D%3B%0A%09%09do%3A%20%5B%20%3Aeach%20%7C%20each%20initialize%20%5D'),
  1705. messageSends: ["do:", "initialize", "select:", "classes"],
  1706. referencedClasses: []
  1707. }),
  1708. smalltalk.Package.klass);
  1709. smalltalk.addClass('Number', smalltalk.Object, [], 'Kernel-Objects');
  1710. smalltalk.Number.comment=unescape('Number%20holds%20the%20most%20general%20methods%20for%20dealing%20with%20numbers.%20%20%0ANumber%20is%20directly%20mapped%20to%20JavaScript%20Number.%0A%0AMost%20arithmetic%20methods%20like%20%60%23+%60%20%60%23/%60%20%60%23-%60%20%60%23max%3A%60%20are%20directly%20inlined%20into%20javascript.%20%0A%0A%23%23Enumerating%0AA%20Number%20can%20be%20used%20to%20evaluate%20a%20Block%20a%20fixed%20number%20of%20times%3A%0A%0A%095%20timesRepeat%3A%20%5BTranscript%20show%3A%20%27This%20will%20be%20printed%205%20times%27%3B%20cr%5D.%0A%09%0A%091%20to%3A%205%20do%3A%20%5B%3AaNumber%7C%20Transcript%20show%3A%20aNumber%20asString%3B%20cr%5D.%0A%09%0A%091%20to%3A%2010%20by%3A%202%20do%3A%20%5B%3AaNumber%7C%20Transcript%20show%3A%20aNumber%20asString%3B%20cr%5D.')
  1711. smalltalk.addMethod(
  1712. unescape('__eq'),
  1713. smalltalk.method({
  1714. selector: unescape('%3D'),
  1715. category: 'comparing',
  1716. fn: function (aNumber) {
  1717. var self = this;
  1718. try {
  1719. ($receiver = smalltalk.send(aNumber, "_isNumber", [])).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;}};}();}]);
  1720. return Number(self) == aNumber;
  1721. return self;
  1722. } catch (e) {
  1723. if (e.name === "stReturn" && e.selector === "__eq") {
  1724. return e.fn();
  1725. }
  1726. throw e;
  1727. }
  1728. },
  1729. args: ["aNumber"],
  1730. source: unescape('%3D%20aNumber%0A%09aNumber%20isNumber%20ifFalse%3A%20%5B%5Efalse%5D.%20%0A%09%3Creturn%20Number%28self%29%20%3D%3D%20aNumber%3E'),
  1731. messageSends: ["ifFalse:", "isNumber"],
  1732. referencedClasses: []
  1733. }),
  1734. smalltalk.Number);
  1735. smalltalk.addMethod(
  1736. unescape('__gt'),
  1737. smalltalk.method({
  1738. selector: unescape('%3E'),
  1739. category: 'comparing',
  1740. fn: function (aNumber) {
  1741. var self = this;
  1742. return self > aNumber;
  1743. return self;
  1744. },
  1745. args: ["aNumber"],
  1746. source: unescape('%3E%20aNumber%0A%09%22Inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%20%3E%3E%20aNumber%3E'),
  1747. messageSends: [],
  1748. referencedClasses: []
  1749. }),
  1750. smalltalk.Number);
  1751. smalltalk.addMethod(
  1752. unescape('__lt'),
  1753. smalltalk.method({
  1754. selector: unescape('%3C'),
  1755. category: 'comparing',
  1756. fn: function (aNumber) {
  1757. var self = this;
  1758. return self < aNumber;
  1759. return self;
  1760. },
  1761. args: ["aNumber"],
  1762. source: unescape('%3C%20aNumber%0A%09%22Inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%20%3C%20aNumber%3E'),
  1763. messageSends: [],
  1764. referencedClasses: []
  1765. }),
  1766. smalltalk.Number);
  1767. smalltalk.addMethod(
  1768. unescape('__gt_eq'),
  1769. smalltalk.method({
  1770. selector: unescape('%3E%3D'),
  1771. category: 'comparing',
  1772. fn: function (aNumber) {
  1773. var self = this;
  1774. return self >= aNumber;
  1775. return self;
  1776. },
  1777. args: ["aNumber"],
  1778. source: unescape('%3E%3D%20aNumber%0A%09%22Inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%20%3E%3E%3D%20aNumber%3E'),
  1779. messageSends: [],
  1780. referencedClasses: []
  1781. }),
  1782. smalltalk.Number);
  1783. smalltalk.addMethod(
  1784. unescape('__lt_eq'),
  1785. smalltalk.method({
  1786. selector: unescape('%3C%3D'),
  1787. category: 'comparing',
  1788. fn: function (aNumber) {
  1789. var self = this;
  1790. return self <= aNumber;
  1791. return self;
  1792. },
  1793. args: ["aNumber"],
  1794. source: unescape('%3C%3D%20aNumber%0A%09%22Inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%20%3C%3D%20aNumber%3E'),
  1795. messageSends: [],
  1796. referencedClasses: []
  1797. }),
  1798. smalltalk.Number);
  1799. smalltalk.addMethod(
  1800. unescape('__plus'),
  1801. smalltalk.method({
  1802. selector: unescape('+'),
  1803. category: 'arithmetic',
  1804. fn: function (aNumber) {
  1805. var self = this;
  1806. return self + aNumber;
  1807. return self;
  1808. },
  1809. args: ["aNumber"],
  1810. source: unescape('+%20aNumber%0A%09%22Inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%20+%20aNumber%3E'),
  1811. messageSends: [],
  1812. referencedClasses: []
  1813. }),
  1814. smalltalk.Number);
  1815. smalltalk.addMethod(
  1816. unescape('__minus'),
  1817. smalltalk.method({
  1818. selector: unescape('-'),
  1819. category: 'arithmetic',
  1820. fn: function (aNumber) {
  1821. var self = this;
  1822. return self - aNumber;
  1823. return self;
  1824. },
  1825. args: ["aNumber"],
  1826. source: unescape('-%20aNumber%0A%09%22Inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%20-%20aNumber%3E'),
  1827. messageSends: [],
  1828. referencedClasses: []
  1829. }),
  1830. smalltalk.Number);
  1831. smalltalk.addMethod(
  1832. unescape('__star'),
  1833. smalltalk.method({
  1834. selector: unescape('*'),
  1835. category: 'arithmetic',
  1836. fn: function (aNumber) {
  1837. var self = this;
  1838. return self * aNumber;
  1839. return self;
  1840. },
  1841. args: ["aNumber"],
  1842. source: unescape('*%20aNumber%0A%09%22Inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%20*%20aNumber%3E'),
  1843. messageSends: [],
  1844. referencedClasses: []
  1845. }),
  1846. smalltalk.Number);
  1847. smalltalk.addMethod(
  1848. unescape('__slash'),
  1849. smalltalk.method({
  1850. selector: unescape('/'),
  1851. category: 'arithmetic',
  1852. fn: function (aNumber) {
  1853. var self = this;
  1854. return self / aNumber;
  1855. return self;
  1856. },
  1857. args: ["aNumber"],
  1858. source: unescape('/%20aNumber%0A%09%22Inlined%20in%20the%20Compiler%22%0A%09%3Creturn%20self%20/%20aNumber%3E'),
  1859. messageSends: [],
  1860. referencedClasses: []
  1861. }),
  1862. smalltalk.Number);
  1863. smalltalk.addMethod(
  1864. unescape('_max_'),
  1865. smalltalk.method({
  1866. selector: unescape('max%3A'),
  1867. category: 'arithmetic',
  1868. fn: function (aNumber) {
  1869. var self = this;
  1870. return Math.max(self, aNumber);
  1871. return self;
  1872. },
  1873. args: ["aNumber"],
  1874. source: unescape('max%3A%20aNumber%0A%09%3Creturn%20Math.max%28self%2C%20aNumber%29%3B%3E'),
  1875. messageSends: [],
  1876. referencedClasses: []
  1877. }),
  1878. smalltalk.Number);
  1879. smalltalk.addMethod(
  1880. unescape('_min_'),
  1881. smalltalk.method({
  1882. selector: unescape('min%3A'),
  1883. category: 'arithmetic',
  1884. fn: function (aNumber) {
  1885. var self = this;
  1886. return Math.min(self, aNumber);
  1887. return self;
  1888. },
  1889. args: ["aNumber"],
  1890. source: unescape('min%3A%20aNumber%0A%09%3Creturn%20Math.min%28self%2C%20aNumber%29%3B%3E'),
  1891. messageSends: [],
  1892. referencedClasses: []
  1893. }),
  1894. smalltalk.Number);
  1895. smalltalk.addMethod(
  1896. unescape('_rounded'),
  1897. smalltalk.method({
  1898. selector: unescape('rounded'),
  1899. category: 'converting',
  1900. fn: function () {
  1901. var self = this;
  1902. return Math.round(self);
  1903. return self;
  1904. },
  1905. args: [],
  1906. source: unescape('rounded%0A%09%3Creturn%20Math.round%28self%29%3B%3E'),
  1907. messageSends: [],
  1908. referencedClasses: []
  1909. }),
  1910. smalltalk.Number);
  1911. smalltalk.addMethod(
  1912. unescape('_truncated'),
  1913. smalltalk.method({
  1914. selector: unescape('truncated'),
  1915. category: 'converting',
  1916. fn: function () {
  1917. var self = this;
  1918. var result = nil;
  1919. ($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;}]);
  1920. return result;
  1921. return self;
  1922. },
  1923. args: [],
  1924. 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'),
  1925. messageSends: ["ifTrue:ifFalse:", unescape("%3E%3D")],
  1926. referencedClasses: []
  1927. }),
  1928. smalltalk.Number);
  1929. smalltalk.addMethod(
  1930. unescape('_to_'),
  1931. smalltalk.method({
  1932. selector: unescape('to%3A'),
  1933. category: 'converting',
  1934. fn: function (aNumber) {
  1935. var self = this;
  1936. var array = nil;
  1937. var first = nil;
  1938. var last = nil;
  1939. var count = nil;
  1940. first = smalltalk.send(self, "_truncated", []);
  1941. last = ($receiver = smalltalk.send(aNumber, "_truncated", [])).klass === smalltalk.Number ? $receiver + 1 : smalltalk.send($receiver, "__plus", [1]);
  1942. count = 1;
  1943. array = smalltalk.send(smalltalk.Array || Array, "_new", []);
  1944. 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]);}]);
  1945. return array;
  1946. return self;
  1947. },
  1948. args: ["aNumber"],
  1949. 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'),
  1950. messageSends: ["truncated", unescape("+"), "new", "timesRepeat:", unescape("-"), "at:put:"],
  1951. referencedClasses: ["Array"]
  1952. }),
  1953. smalltalk.Number);
  1954. smalltalk.addMethod(
  1955. unescape('_timesRepeat_'),
  1956. smalltalk.method({
  1957. selector: unescape('timesRepeat%3A'),
  1958. category: 'enumerating',
  1959. fn: function (aBlock) {
  1960. var self = this;
  1961. var integer = nil;
  1962. var count = nil;
  1963. integer = smalltalk.send(self, "_truncated", []);
  1964. count = 1;
  1965. (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]);}());}}());
  1966. return self;
  1967. },
  1968. args: ["aBlock"],
  1969. 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'),
  1970. messageSends: ["truncated", "whileFalse:", unescape("%3E"), "value", unescape("+")],
  1971. referencedClasses: []
  1972. }),
  1973. smalltalk.Number);
  1974. smalltalk.addMethod(
  1975. unescape('_to_do_'),
  1976. smalltalk.method({
  1977. selector: unescape('to%3Ado%3A'),
  1978. category: 'enumerating',
  1979. fn: function (stop, aBlock) {
  1980. var self = this;
  1981. var nextValue = nil;
  1982. nextValue = self;
  1983. (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]);}());}}());
  1984. return self;
  1985. },
  1986. args: ["stop", "aBlock"],
  1987. 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'),
  1988. messageSends: ["whileTrue:", unescape("%3C%3D"), "value:", unescape("+")],
  1989. referencedClasses: []
  1990. }),
  1991. smalltalk.Number);
  1992. smalltalk.addMethod(
  1993. unescape('_asString'),
  1994. smalltalk.method({
  1995. selector: unescape('asString'),
  1996. category: 'converting',
  1997. fn: function () {
  1998. var self = this;
  1999. return smalltalk.send(self, "_printString", []);
  2000. return self;
  2001. },
  2002. args: [],
  2003. source: unescape('asString%0A%09%5Eself%20printString'),
  2004. messageSends: ["printString"],
  2005. referencedClasses: []
  2006. }),
  2007. smalltalk.Number);
  2008. smalltalk.addMethod(
  2009. unescape('_asJavascript'),
  2010. smalltalk.method({
  2011. selector: unescape('asJavascript'),
  2012. category: 'converting',
  2013. fn: function () {
  2014. var self = this;
  2015. return smalltalk.send(smalltalk.send(unescape("%28"), "__comma", [smalltalk.send(self, "_printString", [])]), "__comma", [unescape("%29")]);
  2016. return self;
  2017. },
  2018. args: [],
  2019. source: unescape('asJavascript%0A%09%5E%27%28%27%2C%20self%20printString%2C%20%27%29%27'),
  2020. messageSends: [unescape("%2C"), "printString"],
  2021. referencedClasses: []
  2022. }),
  2023. smalltalk.Number);
  2024. smalltalk.addMethod(
  2025. unescape('_printString'),
  2026. smalltalk.method({
  2027. selector: unescape('printString'),
  2028. category: 'printing',
  2029. fn: function () {
  2030. var self = this;
  2031. return String(self);
  2032. return self;
  2033. },
  2034. args: [],
  2035. source: unescape('printString%0A%09%3Creturn%20String%28self%29%3E'),
  2036. messageSends: [],
  2037. referencedClasses: []
  2038. }),
  2039. smalltalk.Number);
  2040. smalltalk.addMethod(
  2041. unescape('_isNumber'),
  2042. smalltalk.method({
  2043. selector: unescape('isNumber'),
  2044. category: 'testing',
  2045. fn: function () {
  2046. var self = this;
  2047. return true;
  2048. return self;
  2049. },
  2050. args: [],
  2051. source: unescape('isNumber%0A%09%5Etrue'),
  2052. messageSends: [],
  2053. referencedClasses: []
  2054. }),
  2055. smalltalk.Number);
  2056. smalltalk.addMethod(
  2057. unescape('_atRandom'),
  2058. smalltalk.method({
  2059. selector: unescape('atRandom'),
  2060. category: 'converting',
  2061. fn: function () {
  2062. var self = this;
  2063. 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]);
  2064. return self;
  2065. },
  2066. args: [],
  2067. source: unescape('atRandom%0A%20%20%20%20%5E%28Random%20new%20next%20*%20self%29%20truncated%20+%201'),
  2068. messageSends: [unescape("+"), "truncated", unescape("*"), "next", "new"],
  2069. referencedClasses: ["Random"]
  2070. }),
  2071. smalltalk.Number);
  2072. smalltalk.addMethod(
  2073. unescape('__at'),
  2074. smalltalk.method({
  2075. selector: unescape('@'),
  2076. category: 'converting',
  2077. fn: function (aNumber) {
  2078. var self = this;
  2079. return smalltalk.send(smalltalk.Point || Point, "_x_y_", [self, aNumber]);
  2080. return self;
  2081. },
  2082. args: ["aNumber"],
  2083. source: unescape('@%20aNumber%0A%09%5EPoint%20x%3A%20self%20y%3A%20aNumber'),
  2084. messageSends: ["x:y:"],
  2085. referencedClasses: ["Point"]
  2086. }),
  2087. smalltalk.Number);
  2088. smalltalk.addMethod(
  2089. unescape('_asPoint'),
  2090. smalltalk.method({
  2091. selector: unescape('asPoint'),
  2092. category: 'converting',
  2093. fn: function () {
  2094. var self = this;
  2095. return smalltalk.send(smalltalk.Point || Point, "_x_y_", [self, self]);
  2096. return self;
  2097. },
  2098. args: [],
  2099. source: unescape('asPoint%0A%09%5EPoint%20x%3A%20self%20y%3A%20self'),
  2100. messageSends: ["x:y:"],
  2101. referencedClasses: ["Point"]
  2102. }),
  2103. smalltalk.Number);
  2104. smalltalk.addMethod(
  2105. unescape('_clearInterval'),
  2106. smalltalk.method({
  2107. selector: unescape('clearInterval'),
  2108. category: 'timeouts/intervals',
  2109. fn: function () {
  2110. var self = this;
  2111. clearInterval(Number(self));
  2112. return self;
  2113. },
  2114. args: [],
  2115. source: unescape('clearInterval%0A%09%3CclearInterval%28Number%28self%29%29%3E'),
  2116. messageSends: [],
  2117. referencedClasses: []
  2118. }),
  2119. smalltalk.Number);
  2120. smalltalk.addMethod(
  2121. unescape('_clearTimeout'),
  2122. smalltalk.method({
  2123. selector: unescape('clearTimeout'),
  2124. category: 'timeouts/intervals',
  2125. fn: function () {
  2126. var self = this;
  2127. clearTimeout(Number(self));
  2128. return self;
  2129. },
  2130. args: [],
  2131. source: unescape('clearTimeout%0A%09%3CclearTimeout%28Number%28self%29%29%3E'),
  2132. messageSends: [],
  2133. referencedClasses: []
  2134. }),
  2135. smalltalk.Number);
  2136. smalltalk.addMethod(
  2137. unescape('_even'),
  2138. smalltalk.method({
  2139. selector: unescape('even'),
  2140. category: 'testing',
  2141. fn: function () {
  2142. var self = this;
  2143. return smalltalk.send(0, "__eq", [smalltalk.send(self, "_\\\\", [2])]);
  2144. return self;
  2145. },
  2146. args: [],
  2147. source: unescape('even%0A%09%5E%200%20%3D%20%28self%20%5C%5C%202%29'),
  2148. messageSends: [unescape("%3D"), unescape("%5C%5C%5C%5C")],
  2149. referencedClasses: []
  2150. }),
  2151. smalltalk.Number);
  2152. smalltalk.addMethod(
  2153. unescape('_odd'),
  2154. smalltalk.method({
  2155. selector: unescape('odd'),
  2156. category: 'testing',
  2157. fn: function () {
  2158. var self = this;
  2159. return smalltalk.send(smalltalk.send(self, "_even", []), "_not", []);
  2160. return self;
  2161. },
  2162. args: [],
  2163. source: unescape('odd%0A%09%5E%20self%20even%20not'),
  2164. messageSends: ["not", "even"],
  2165. referencedClasses: []
  2166. }),
  2167. smalltalk.Number);
  2168. smalltalk.addMethod(
  2169. unescape('_negated'),
  2170. smalltalk.method({
  2171. selector: unescape('negated'),
  2172. category: 'arithmetic',
  2173. fn: function () {
  2174. var self = this;
  2175. return 0 - self;
  2176. return self;
  2177. },
  2178. args: [],
  2179. source: unescape('negated%0A%09%5E0%20-%20self'),
  2180. messageSends: [unescape("-")],
  2181. referencedClasses: []
  2182. }),
  2183. smalltalk.Number);
  2184. smalltalk.addMethod(
  2185. unescape('_printShowingDecimalPlaces_'),
  2186. smalltalk.method({
  2187. selector: unescape('printShowingDecimalPlaces%3A'),
  2188. category: 'printing',
  2189. fn: function (placesDesired) {
  2190. var self = this;
  2191. return self.toFixed(placesDesired);
  2192. return self;
  2193. },
  2194. args: ["placesDesired"],
  2195. source: unescape('printShowingDecimalPlaces%3A%20placesDesired%0A%09%3Creturn%20self.toFixed%28placesDesired%29%3E'),
  2196. messageSends: [],
  2197. referencedClasses: []
  2198. }),
  2199. smalltalk.Number);
  2200. smalltalk.addMethod(
  2201. unescape('_to_by_'),
  2202. smalltalk.method({
  2203. selector: unescape('to%3Aby%3A'),
  2204. category: 'converting',
  2205. fn: function (stop, step) {
  2206. var self = this;
  2207. var array = nil;
  2208. var value = nil;
  2209. var pos = nil;
  2210. value = self;
  2211. array = smalltalk.send(smalltalk.Array || Array, "_new", []);
  2212. pos = 1;
  2213. ($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")]);}]);
  2214. ($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]);}());}}();}]);
  2215. return array;
  2216. return self;
  2217. },
  2218. args: ["stop", "step"],
  2219. 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'),
  2220. messageSends: ["new", "ifTrue:", unescape("%3D"), "error:", "ifTrue:ifFalse:", unescape("%3C"), "whileTrue:", unescape("%3E%3D"), "at:put:", unescape("+"), unescape("%3C%3D")],
  2221. referencedClasses: ["Array"]
  2222. }),
  2223. smalltalk.Number);
  2224. smalltalk.addMethod(
  2225. unescape('_to_by_do_'),
  2226. smalltalk.method({
  2227. selector: unescape('to%3Aby%3Ado%3A'),
  2228. category: 'enumerating',
  2229. fn: function (stop, step, aBlock) {
  2230. var self = this;
  2231. var value = nil;
  2232. value = self;
  2233. ($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")]);}]);
  2234. ($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]);}());}}();}]);
  2235. return self;
  2236. },
  2237. args: ["stop", "step", "aBlock"],
  2238. 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'),
  2239. messageSends: ["ifTrue:", unescape("%3D"), "error:", "ifTrue:ifFalse:", unescape("%3C"), "whileTrue:", unescape("%3E%3D"), "value:", unescape("+"), unescape("%3C%3D")],
  2240. referencedClasses: []
  2241. }),
  2242. smalltalk.Number);
  2243. smalltalk.addMethod(
  2244. unescape('_deepCopy'),
  2245. smalltalk.method({
  2246. selector: unescape('deepCopy'),
  2247. category: 'copying',
  2248. fn: function () {
  2249. var self = this;
  2250. return smalltalk.send(self, "_copy", []);
  2251. return self;
  2252. },
  2253. args: [],
  2254. source: unescape('deepCopy%0A%09%5Eself%20copy'),
  2255. messageSends: ["copy"],
  2256. referencedClasses: []
  2257. }),
  2258. smalltalk.Number);
  2259. smalltalk.addMethod(
  2260. unescape('_copy'),
  2261. smalltalk.method({
  2262. selector: unescape('copy'),
  2263. category: 'copying',
  2264. fn: function () {
  2265. var self = this;
  2266. return self;
  2267. return self;
  2268. },
  2269. args: [],
  2270. source: unescape('copy%0A%09%5Eself'),
  2271. messageSends: [],
  2272. referencedClasses: []
  2273. }),
  2274. smalltalk.Number);
  2275. smalltalk.addMethod(
  2276. unescape('_%5C%5C'),
  2277. smalltalk.method({
  2278. selector: unescape('%5C%5C'),
  2279. category: 'arithmetic',
  2280. fn: function (aNumber) {
  2281. var self = this;
  2282. return self % aNumber;
  2283. return self;
  2284. },
  2285. args: ["aNumber"],
  2286. source: unescape('%5C%5C%20aNumber%0A%09%3Creturn%20self%20%25%20aNumber%3E'),
  2287. messageSends: [],
  2288. referencedClasses: []
  2289. }),
  2290. smalltalk.Number);
  2291. smalltalk.addMethod(
  2292. unescape('_sqrt'),
  2293. smalltalk.method({
  2294. selector: unescape('sqrt'),
  2295. category: 'arithmetic',
  2296. fn: function () {
  2297. var self = this;
  2298. return Math.sqrt(self);
  2299. return self;
  2300. },
  2301. args: [],
  2302. source: unescape('sqrt%0A%09%3Creturn%20Math.sqrt%28self%29%3E'),
  2303. messageSends: [],
  2304. referencedClasses: []
  2305. }),
  2306. smalltalk.Number);
  2307. smalltalk.addMethod(
  2308. unescape('_squared'),
  2309. smalltalk.method({
  2310. selector: unescape('squared'),
  2311. category: 'arithmetic',
  2312. fn: function () {
  2313. var self = this;
  2314. return self * self;
  2315. return self;
  2316. },
  2317. args: [],
  2318. source: unescape('squared%0A%09%5Eself%20*%20self'),
  2319. messageSends: [unescape("*")],
  2320. referencedClasses: []
  2321. }),
  2322. smalltalk.Number);
  2323. smalltalk.addMethod(
  2324. unescape('_identityHash'),
  2325. smalltalk.method({
  2326. selector: unescape('identityHash'),
  2327. category: 'accessing',
  2328. fn: function () {
  2329. var self = this;
  2330. return smalltalk.send(smalltalk.send(self, "_asString", []), "__comma", ["n"]);
  2331. return self;
  2332. },
  2333. args: [],
  2334. source: unescape('identityHash%0A%09%5Eself%20asString%2C%20%27n%27'),
  2335. messageSends: [unescape("%2C"), "asString"],
  2336. referencedClasses: []
  2337. }),
  2338. smalltalk.Number);
  2339. smalltalk.addMethod(
  2340. unescape('_negative'),
  2341. smalltalk.method({
  2342. selector: unescape('negative'),
  2343. category: 'testing',
  2344. fn: function () {
  2345. var self = this;
  2346. return self < 0;
  2347. return self;
  2348. },
  2349. args: [],
  2350. source: unescape('negative%0A%09%22Answer%20whether%20the%20receiver%20is%20mathematically%20negative.%22%0A%0A%09%5E%20self%20%3C%200'),
  2351. messageSends: [unescape("%3C")],
  2352. referencedClasses: []
  2353. }),
  2354. smalltalk.Number);
  2355. smalltalk.addMethod(
  2356. unescape('_positive'),
  2357. smalltalk.method({
  2358. selector: unescape('positive'),
  2359. category: 'testing',
  2360. fn: function () {
  2361. var self = this;
  2362. return self >= 0;
  2363. return self;
  2364. },
  2365. args: [],
  2366. source: unescape('positive%0A%09%22Answer%20whether%20the%20receiver%20is%20positive%20or%20equal%20to%200.%20%28ST-80%20protocol%29.%22%0A%0A%09%5E%20self%20%3E%3D%200'),
  2367. messageSends: [unescape("%3E%3D")],
  2368. referencedClasses: []
  2369. }),
  2370. smalltalk.Number);
  2371. smalltalk.addMethod(
  2372. unescape('_isZero'),
  2373. smalltalk.method({
  2374. selector: unescape('isZero'),
  2375. category: 'testing',
  2376. fn: function () {
  2377. var self = this;
  2378. return smalltalk.send(self, "__eq", [0]);
  2379. return self;
  2380. },
  2381. args: [],
  2382. source: unescape('isZero%0A%09%5Eself%20%3D%200'),
  2383. messageSends: [unescape("%3D")],
  2384. referencedClasses: []
  2385. }),
  2386. smalltalk.Number);
  2387. smalltalk.addMethod(
  2388. unescape('_pi'),
  2389. smalltalk.method({
  2390. selector: unescape('pi'),
  2391. category: 'instance creation',
  2392. fn: function () {
  2393. var self = this;
  2394. return Math.PI;
  2395. return self;
  2396. },
  2397. args: [],
  2398. source: unescape('pi%0A%09%3Creturn%20Math.PI%3E'),
  2399. messageSends: [],
  2400. referencedClasses: []
  2401. }),
  2402. smalltalk.Number.klass);
  2403. smalltalk.addClass('Boolean', smalltalk.Object, [], 'Kernel-Objects');
  2404. smalltalk.Boolean.comment=unescape('Boolean%20wraps%20the%20JavaScript%20%60Boolean%28%29%60%20constructor.%20The%20%60true%60%20and%20%60false%60%20objects%20are%20the%20JavaScript%20boolean%20objects.%0A%0ABoolean%20defines%20the%20protocol%20for%20logic%20testing%20operations%20and%20conditional%20control%20structures%20for%20the%20logical%20values.%0ABoolean%20instances%20are%20weither%20%60true%60%20or%20%60false%60.')
  2405. smalltalk.addMethod(
  2406. unescape('__eq'),
  2407. smalltalk.method({
  2408. selector: unescape('%3D'),
  2409. category: 'comparing',
  2410. fn: function (aBoolean) {
  2411. var self = this;
  2412. try {
  2413. ($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;}};}();}]);
  2414. return Boolean(self == true) == aBoolean;
  2415. return self;
  2416. } catch (e) {
  2417. if (e.name === "stReturn" && e.selector === "__eq") {
  2418. return e.fn();
  2419. }
  2420. throw e;
  2421. }
  2422. },
  2423. args: ["aBoolean"],
  2424. 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'),
  2425. messageSends: ["ifFalse:", unescape("%3D"), "class"],
  2426. referencedClasses: []
  2427. }),
  2428. smalltalk.Boolean);
  2429. smalltalk.addMethod(
  2430. unescape('_shallowCopy'),
  2431. smalltalk.method({
  2432. selector: unescape('shallowCopy'),
  2433. category: 'copying',
  2434. fn: function () {
  2435. var self = this;
  2436. return self;
  2437. return self;
  2438. },
  2439. args: [],
  2440. source: unescape('shallowCopy%0A%09%5Eself'),
  2441. messageSends: [],
  2442. referencedClasses: []
  2443. }),
  2444. smalltalk.Boolean);
  2445. smalltalk.addMethod(
  2446. unescape('_deepCopy'),
  2447. smalltalk.method({
  2448. selector: unescape('deepCopy'),
  2449. category: 'copying',
  2450. fn: function () {
  2451. var self = this;
  2452. return self;
  2453. return self;
  2454. },
  2455. args: [],
  2456. source: unescape('deepCopy%0A%09%5Eself'),
  2457. messageSends: [],
  2458. referencedClasses: []
  2459. }),
  2460. smalltalk.Boolean);
  2461. smalltalk.addMethod(
  2462. unescape('_ifTrue_'),
  2463. smalltalk.method({
  2464. selector: unescape('ifTrue%3A'),
  2465. category: 'controlling',
  2466. fn: function (aBlock) {
  2467. var self = this;
  2468. return smalltalk.send(self, "_ifTrue_ifFalse_", [aBlock, function () {return nil;}]);
  2469. return self;
  2470. },
  2471. args: ["aBlock"],
  2472. source: unescape('ifTrue%3A%20aBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5Eself%20ifTrue%3A%20aBlock%20ifFalse%3A%20%5B%5D'),
  2473. messageSends: ["ifTrue:ifFalse:"],
  2474. referencedClasses: []
  2475. }),
  2476. smalltalk.Boolean);
  2477. smalltalk.addMethod(
  2478. unescape('_ifFalse_'),
  2479. smalltalk.method({
  2480. selector: unescape('ifFalse%3A'),
  2481. category: 'controlling',
  2482. fn: function (aBlock) {
  2483. var self = this;
  2484. return smalltalk.send(self, "_ifTrue_ifFalse_", [function () {return nil;}, aBlock]);
  2485. return self;
  2486. },
  2487. args: ["aBlock"],
  2488. source: unescape('ifFalse%3A%20aBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5Eself%20ifTrue%3A%20%5B%5D%20ifFalse%3A%20aBlock'),
  2489. messageSends: ["ifTrue:ifFalse:"],
  2490. referencedClasses: []
  2491. }),
  2492. smalltalk.Boolean);
  2493. smalltalk.addMethod(
  2494. unescape('_ifFalse_ifTrue_'),
  2495. smalltalk.method({
  2496. selector: unescape('ifFalse%3AifTrue%3A'),
  2497. category: 'controlling',
  2498. fn: function (aBlock, anotherBlock) {
  2499. var self = this;
  2500. return smalltalk.send(self, "_ifTrue_ifFalse_", [anotherBlock, aBlock]);
  2501. return self;
  2502. },
  2503. args: ["aBlock", "anotherBlock"],
  2504. source: unescape('ifFalse%3A%20aBlock%20ifTrue%3A%20anotherBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5Eself%20ifTrue%3A%20anotherBlock%20ifFalse%3A%20aBlock'),
  2505. messageSends: ["ifTrue:ifFalse:"],
  2506. referencedClasses: []
  2507. }),
  2508. smalltalk.Boolean);
  2509. smalltalk.addMethod(
  2510. unescape('_ifTrue_ifFalse_'),
  2511. smalltalk.method({
  2512. selector: unescape('ifTrue%3AifFalse%3A'),
  2513. category: 'controlling',
  2514. fn: function (aBlock, anotherBlock) {
  2515. var self = this;
  2516. if (self == true) {
  2517. return aBlock();
  2518. } else {
  2519. return anotherBlock();
  2520. }
  2521. return self;
  2522. },
  2523. args: ["aBlock", "anotherBlock"],
  2524. 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'),
  2525. messageSends: [],
  2526. referencedClasses: []
  2527. }),
  2528. smalltalk.Boolean);
  2529. smalltalk.addMethod(
  2530. unescape('_and_'),
  2531. smalltalk.method({
  2532. selector: unescape('and%3A'),
  2533. category: 'controlling',
  2534. fn: function (aBlock) {
  2535. var self = this;
  2536. return smalltalk.send(smalltalk.send(self, "__eq", [true]), "_ifTrue_ifFalse_", [aBlock, function () {return false;}]);
  2537. return self;
  2538. },
  2539. args: ["aBlock"],
  2540. 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'),
  2541. messageSends: ["ifTrue:ifFalse:", unescape("%3D")],
  2542. referencedClasses: []
  2543. }),
  2544. smalltalk.Boolean);
  2545. smalltalk.addMethod(
  2546. unescape('_or_'),
  2547. smalltalk.method({
  2548. selector: unescape('or%3A'),
  2549. category: 'controlling',
  2550. fn: function (aBlock) {
  2551. var self = this;
  2552. return smalltalk.send(smalltalk.send(self, "__eq", [true]), "_ifTrue_ifFalse_", [function () {return true;}, aBlock]);
  2553. return self;
  2554. },
  2555. args: ["aBlock"],
  2556. 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'),
  2557. messageSends: ["ifTrue:ifFalse:", unescape("%3D")],
  2558. referencedClasses: []
  2559. }),
  2560. smalltalk.Boolean);
  2561. smalltalk.addMethod(
  2562. unescape('_not'),
  2563. smalltalk.method({
  2564. selector: unescape('not'),
  2565. category: 'controlling',
  2566. fn: function () {
  2567. var self = this;
  2568. return smalltalk.send(self, "__eq", [false]);
  2569. return self;
  2570. },
  2571. args: [],
  2572. source: unescape('not%0A%09%5Eself%20%3D%20false'),
  2573. messageSends: [unescape("%3D")],
  2574. referencedClasses: []
  2575. }),
  2576. smalltalk.Boolean);
  2577. smalltalk.addMethod(
  2578. unescape('_printString'),
  2579. smalltalk.method({
  2580. selector: unescape('printString'),
  2581. category: 'printing',
  2582. fn: function () {
  2583. var self = this;
  2584. return self.toString();
  2585. return self;
  2586. },
  2587. args: [],
  2588. source: unescape('printString%0A%09%3Creturn%20self.toString%28%29%3E'),
  2589. messageSends: [],
  2590. referencedClasses: []
  2591. }),
  2592. smalltalk.Boolean);
  2593. smalltalk.addMethod(
  2594. unescape('_%26'),
  2595. smalltalk.method({
  2596. selector: unescape('%26'),
  2597. category: 'controlling',
  2598. fn: function (aBoolean) {
  2599. var self = this;
  2600. if (self == true) {
  2601. return aBoolean;
  2602. } else {
  2603. return false;
  2604. }
  2605. return self;
  2606. },
  2607. args: ["aBoolean"],
  2608. 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'),
  2609. messageSends: [],
  2610. referencedClasses: []
  2611. }),
  2612. smalltalk.Boolean);
  2613. smalltalk.addMethod(
  2614. unescape('_%7C'),
  2615. smalltalk.method({
  2616. selector: unescape('%7C'),
  2617. category: 'controlling',
  2618. fn: function (aBoolean) {
  2619. var self = this;
  2620. if (self == true) {
  2621. return true;
  2622. } else {
  2623. return aBoolean;
  2624. }
  2625. return self;
  2626. },
  2627. args: ["aBoolean"],
  2628. 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'),
  2629. messageSends: [],
  2630. referencedClasses: []
  2631. }),
  2632. smalltalk.Boolean);
  2633. smalltalk.addClass('Date', smalltalk.Object, [], 'Kernel-Objects');
  2634. smalltalk.Date.comment=unescape('The%20Date%20class%20is%20used%20to%20work%20with%20dates%20and%20times.%20Therefore%20%60Date%20today%60%20and%20%60Date%20now%60%20are%20both%20valid%20in%0AAmber%20and%20answer%20the%20same%20date%20object.%0A%0ADate%20wraps%20the%20%60Date%28%29%60%20JavaScript%20constructor%2C%20and%20Smalltalk%20date%20objects%20are%20JavaScript%20date%20objects.')
  2635. smalltalk.addMethod(
  2636. unescape('_year'),
  2637. smalltalk.method({
  2638. selector: unescape('year'),
  2639. category: 'accessing',
  2640. fn: function () {
  2641. var self = this;
  2642. return self.getFullYear();
  2643. return self;
  2644. },
  2645. args: [],
  2646. source: unescape('year%0A%09%3Creturn%20self.getFullYear%28%29%3E'),
  2647. messageSends: [],
  2648. referencedClasses: []
  2649. }),
  2650. smalltalk.Date);
  2651. smalltalk.addMethod(
  2652. unescape('_month'),
  2653. smalltalk.method({
  2654. selector: unescape('month'),
  2655. category: 'accessing',
  2656. fn: function () {
  2657. var self = this;
  2658. return self.getMonth() + 1;
  2659. return self;
  2660. },
  2661. args: [],
  2662. source: unescape('month%0A%09%3Creturn%20self.getMonth%28%29%20+%201%3E'),
  2663. messageSends: [],
  2664. referencedClasses: []
  2665. }),
  2666. smalltalk.Date);
  2667. smalltalk.addMethod(
  2668. unescape('_month_'),
  2669. smalltalk.method({
  2670. selector: unescape('month%3A'),
  2671. category: 'accessing',
  2672. fn: function (aNumber) {
  2673. var self = this;
  2674. self.setMonth(aNumber - 1);
  2675. return self;
  2676. },
  2677. args: ["aNumber"],
  2678. source: unescape('month%3A%20aNumber%0A%09%3Cself.setMonth%28aNumber%20-%201%29%3E'),
  2679. messageSends: [],
  2680. referencedClasses: []
  2681. }),
  2682. smalltalk.Date);
  2683. smalltalk.addMethod(
  2684. unescape('_day'),
  2685. smalltalk.method({
  2686. selector: unescape('day'),
  2687. category: 'accessing',
  2688. fn: function () {
  2689. var self = this;
  2690. return smalltalk.send(self, "_dayOfWeek", []);
  2691. return self;
  2692. },
  2693. args: [],
  2694. source: unescape('day%0A%09%5Eself%20dayOfWeek'),
  2695. messageSends: ["dayOfWeek"],
  2696. referencedClasses: []
  2697. }),
  2698. smalltalk.Date);
  2699. smalltalk.addMethod(
  2700. unescape('_dayOfWeek'),
  2701. smalltalk.method({
  2702. selector: unescape('dayOfWeek'),
  2703. category: 'accessing',
  2704. fn: function () {
  2705. var self = this;
  2706. return self.getDay() + 1;
  2707. return self;
  2708. },
  2709. args: [],
  2710. source: unescape('dayOfWeek%0A%09%3Creturn%20self.getDay%28%29%20+%201%3E'),
  2711. messageSends: [],
  2712. referencedClasses: []
  2713. }),
  2714. smalltalk.Date);
  2715. smalltalk.addMethod(
  2716. unescape('_dayOfWeek_'),
  2717. smalltalk.method({
  2718. selector: unescape('dayOfWeek%3A'),
  2719. category: 'accessing',
  2720. fn: function (aNumber) {
  2721. var self = this;
  2722. return self.setDay(aNumber - 1);
  2723. return self;
  2724. },
  2725. args: ["aNumber"],
  2726. source: unescape('dayOfWeek%3A%20aNumber%0A%09%3Creturn%20self.setDay%28aNumber%20-%201%29%3E'),
  2727. messageSends: [],
  2728. referencedClasses: []
  2729. }),
  2730. smalltalk.Date);
  2731. smalltalk.addMethod(
  2732. unescape('_day_'),
  2733. smalltalk.method({
  2734. selector: unescape('day%3A'),
  2735. category: 'accessing',
  2736. fn: function (aNumber) {
  2737. var self = this;
  2738. smalltalk.send(self, "_day_", [aNumber]);
  2739. return self;
  2740. },
  2741. args: ["aNumber"],
  2742. source: unescape('day%3A%20aNumber%0A%09self%20day%3A%20aNumber'),
  2743. messageSends: ["day:"],
  2744. referencedClasses: []
  2745. }),
  2746. smalltalk.Date);
  2747. smalltalk.addMethod(
  2748. unescape('_year_'),
  2749. smalltalk.method({
  2750. selector: unescape('year%3A'),
  2751. category: 'accessing',
  2752. fn: function (aNumber) {
  2753. var self = this;
  2754. self.setFullYear(aNumber);
  2755. return self;
  2756. },
  2757. args: ["aNumber"],
  2758. source: unescape('year%3A%20aNumber%0A%09%3Cself.setFullYear%28aNumber%29%3E'),
  2759. messageSends: [],
  2760. referencedClasses: []
  2761. }),
  2762. smalltalk.Date);
  2763. smalltalk.addMethod(
  2764. unescape('_dayOfMonth'),
  2765. smalltalk.method({
  2766. selector: unescape('dayOfMonth'),
  2767. category: 'accessing',
  2768. fn: function () {
  2769. var self = this;
  2770. return self.getDate();
  2771. return self;
  2772. },
  2773. args: [],
  2774. source: unescape('dayOfMonth%0A%09%3Creturn%20self.getDate%28%29%3E'),
  2775. messageSends: [],
  2776. referencedClasses: []
  2777. }),
  2778. smalltalk.Date);
  2779. smalltalk.addMethod(
  2780. unescape('_dayOfMonth_'),
  2781. smalltalk.method({
  2782. selector: unescape('dayOfMonth%3A'),
  2783. category: 'accessing',
  2784. fn: function (aNumber) {
  2785. var self = this;
  2786. self.setDate(aNumber);
  2787. return self;
  2788. },
  2789. args: ["aNumber"],
  2790. source: unescape('dayOfMonth%3A%20aNumber%0A%09%3Cself.setDate%28aNumber%29%3E'),
  2791. messageSends: [],
  2792. referencedClasses: []
  2793. }),
  2794. smalltalk.Date);
  2795. smalltalk.addMethod(
  2796. unescape('_asString'),
  2797. smalltalk.method({
  2798. selector: unescape('asString'),
  2799. category: 'converting',
  2800. fn: function () {
  2801. var self = this;
  2802. return self.toString();
  2803. return self;
  2804. },
  2805. args: [],
  2806. source: unescape('asString%0A%09%3Creturn%20self.toString%28%29%3E'),
  2807. messageSends: [],
  2808. referencedClasses: []
  2809. }),
  2810. smalltalk.Date);
  2811. smalltalk.addMethod(
  2812. unescape('_printString'),
  2813. smalltalk.method({
  2814. selector: unescape('printString'),
  2815. category: 'printing',
  2816. fn: function () {
  2817. var self = this;
  2818. return smalltalk.send(self, "_asString", []);
  2819. return self;
  2820. },
  2821. args: [],
  2822. source: unescape('printString%0A%09%5Eself%20asString'),
  2823. messageSends: ["asString"],
  2824. referencedClasses: []
  2825. }),
  2826. smalltalk.Date);
  2827. smalltalk.addMethod(
  2828. unescape('_asMilliseconds'),
  2829. smalltalk.method({
  2830. selector: unescape('asMilliseconds'),
  2831. category: 'converting',
  2832. fn: function () {
  2833. var self = this;
  2834. return smalltalk.send(self, "_time", []);
  2835. return self;
  2836. },
  2837. args: [],
  2838. source: unescape('asMilliseconds%0A%09%5Eself%20time'),
  2839. messageSends: ["time"],
  2840. referencedClasses: []
  2841. }),
  2842. smalltalk.Date);
  2843. smalltalk.addMethod(
  2844. unescape('_time'),
  2845. smalltalk.method({
  2846. selector: unescape('time'),
  2847. category: 'accessing',
  2848. fn: function () {
  2849. var self = this;
  2850. return self.getTime();
  2851. return self;
  2852. },
  2853. args: [],
  2854. source: unescape('time%0A%09%3Creturn%20self.getTime%28%29%3E'),
  2855. messageSends: [],
  2856. referencedClasses: []
  2857. }),
  2858. smalltalk.Date);
  2859. smalltalk.addMethod(
  2860. unescape('_time_'),
  2861. smalltalk.method({
  2862. selector: unescape('time%3A'),
  2863. category: 'accessing',
  2864. fn: function (aNumber) {
  2865. var self = this;
  2866. self.setTime(aNumber);
  2867. return self;
  2868. },
  2869. args: ["aNumber"],
  2870. source: unescape('time%3A%20aNumber%0A%09%3Cself.setTime%28aNumber%29%3E'),
  2871. messageSends: [],
  2872. referencedClasses: []
  2873. }),
  2874. smalltalk.Date);
  2875. smalltalk.addMethod(
  2876. unescape('_asDateString'),
  2877. smalltalk.method({
  2878. selector: unescape('asDateString'),
  2879. category: 'converting',
  2880. fn: function () {
  2881. var self = this;
  2882. return self.toDateString();
  2883. return self;
  2884. },
  2885. args: [],
  2886. source: unescape('asDateString%0A%09%3Creturn%20self.toDateString%28%29%3E'),
  2887. messageSends: [],
  2888. referencedClasses: []
  2889. }),
  2890. smalltalk.Date);
  2891. smalltalk.addMethod(
  2892. unescape('_asTimeString'),
  2893. smalltalk.method({
  2894. selector: unescape('asTimeString'),
  2895. category: 'converting',
  2896. fn: function () {
  2897. var self = this;
  2898. return self.toTimeString();
  2899. return self;
  2900. },
  2901. args: [],
  2902. source: unescape('asTimeString%0A%09%3Creturn%20self.toTimeString%28%29%3E'),
  2903. messageSends: [],
  2904. referencedClasses: []
  2905. }),
  2906. smalltalk.Date);
  2907. smalltalk.addMethod(
  2908. unescape('_asLocaleString'),
  2909. smalltalk.method({
  2910. selector: unescape('asLocaleString'),
  2911. category: 'converting',
  2912. fn: function () {
  2913. var self = this;
  2914. return self.toLocaleString();
  2915. return self;
  2916. },
  2917. args: [],
  2918. source: unescape('asLocaleString%0A%09%3Creturn%20self.toLocaleString%28%29%3E'),
  2919. messageSends: [],
  2920. referencedClasses: []
  2921. }),
  2922. smalltalk.Date);
  2923. smalltalk.addMethod(
  2924. unescape('_asNumber'),
  2925. smalltalk.method({
  2926. selector: unescape('asNumber'),
  2927. category: 'converting',
  2928. fn: function () {
  2929. var self = this;
  2930. return smalltalk.send(self, "_asMilliseconds", []);
  2931. return self;
  2932. },
  2933. args: [],
  2934. source: unescape('asNumber%0A%09%5Eself%20asMilliseconds'),
  2935. messageSends: ["asMilliseconds"],
  2936. referencedClasses: []
  2937. }),
  2938. smalltalk.Date);
  2939. smalltalk.addMethod(
  2940. unescape('_hours_'),
  2941. smalltalk.method({
  2942. selector: unescape('hours%3A'),
  2943. category: 'accessing',
  2944. fn: function (aNumber) {
  2945. var self = this;
  2946. self.setHours(aNumber);
  2947. return self;
  2948. },
  2949. args: ["aNumber"],
  2950. source: unescape('hours%3A%20aNumber%0A%09%3Cself.setHours%28aNumber%29%3E'),
  2951. messageSends: [],
  2952. referencedClasses: []
  2953. }),
  2954. smalltalk.Date);
  2955. smalltalk.addMethod(
  2956. unescape('_minutes_'),
  2957. smalltalk.method({
  2958. selector: unescape('minutes%3A'),
  2959. category: 'accessing',
  2960. fn: function (aNumber) {
  2961. var self = this;
  2962. self.setMinutes(aNumber);
  2963. return self;
  2964. },
  2965. args: ["aNumber"],
  2966. source: unescape('minutes%3A%20aNumber%0A%09%3Cself.setMinutes%28aNumber%29%3E'),
  2967. messageSends: [],
  2968. referencedClasses: []
  2969. }),
  2970. smalltalk.Date);
  2971. smalltalk.addMethod(
  2972. unescape('_seconds_'),
  2973. smalltalk.method({
  2974. selector: unescape('seconds%3A'),
  2975. category: 'accessing',
  2976. fn: function (aNumber) {
  2977. var self = this;
  2978. self.setSeconds(aNumber);
  2979. return self;
  2980. },
  2981. args: ["aNumber"],
  2982. source: unescape('seconds%3A%20aNumber%0A%09%3Cself.setSeconds%28aNumber%29%3E'),
  2983. messageSends: [],
  2984. referencedClasses: []
  2985. }),
  2986. smalltalk.Date);
  2987. smalltalk.addMethod(
  2988. unescape('_milliseconds_'),
  2989. smalltalk.method({
  2990. selector: unescape('milliseconds%3A'),
  2991. category: 'accessing',
  2992. fn: function (aNumber) {
  2993. var self = this;
  2994. self.setMilliseconds(aNumber);
  2995. return self;
  2996. },
  2997. args: ["aNumber"],
  2998. source: unescape('milliseconds%3A%20aNumber%0A%09%3Cself.setMilliseconds%28aNumber%29%3E'),
  2999. messageSends: [],
  3000. referencedClasses: []
  3001. }),
  3002. smalltalk.Date);
  3003. smalltalk.addMethod(
  3004. unescape('_hours'),
  3005. smalltalk.method({
  3006. selector: unescape('hours'),
  3007. category: 'accessing',
  3008. fn: function () {
  3009. var self = this;
  3010. return self.getHours();
  3011. return self;
  3012. },
  3013. args: [],
  3014. source: unescape('hours%0A%09%3Creturn%20self.getHours%28%29%3E'),
  3015. messageSends: [],
  3016. referencedClasses: []
  3017. }),
  3018. smalltalk.Date);
  3019. smalltalk.addMethod(
  3020. unescape('_minutes'),
  3021. smalltalk.method({
  3022. selector: unescape('minutes'),
  3023. category: 'accessing',
  3024. fn: function () {
  3025. var self = this;
  3026. return self.getMinutes();
  3027. return self;
  3028. },
  3029. args: [],
  3030. source: unescape('minutes%0A%09%3Creturn%20self.getMinutes%28%29%3E'),
  3031. messageSends: [],
  3032. referencedClasses: []
  3033. }),
  3034. smalltalk.Date);
  3035. smalltalk.addMethod(
  3036. unescape('_seconds'),
  3037. smalltalk.method({
  3038. selector: unescape('seconds'),
  3039. category: 'accessing',
  3040. fn: function () {
  3041. var self = this;
  3042. return self.getSeconds();
  3043. return self;
  3044. },
  3045. args: [],
  3046. source: unescape('seconds%0A%09%3Creturn%20self.getSeconds%28%29%3E'),
  3047. messageSends: [],
  3048. referencedClasses: []
  3049. }),
  3050. smalltalk.Date);
  3051. smalltalk.addMethod(
  3052. unescape('_milliseconds'),
  3053. smalltalk.method({
  3054. selector: unescape('milliseconds'),
  3055. category: 'accessing',
  3056. fn: function () {
  3057. var self = this;
  3058. return self.getMilliseconds();
  3059. return self;
  3060. },
  3061. args: [],
  3062. source: unescape('milliseconds%0A%09%3Creturn%20self.getMilliseconds%28%29%3E'),
  3063. messageSends: [],
  3064. referencedClasses: []
  3065. }),
  3066. smalltalk.Date);
  3067. smalltalk.addMethod(
  3068. unescape('__lt'),
  3069. smalltalk.method({
  3070. selector: unescape('%3C'),
  3071. category: 'comparing',
  3072. fn: function (aDate) {
  3073. var self = this;
  3074. return self < aDate;
  3075. return self;
  3076. },
  3077. args: ["aDate"],
  3078. source: unescape('%3C%20aDate%0A%09%3Creturn%20self%20%3C%20aDate%3E'),
  3079. messageSends: [],
  3080. referencedClasses: []
  3081. }),
  3082. smalltalk.Date);
  3083. smalltalk.addMethod(
  3084. unescape('__gt'),
  3085. smalltalk.method({
  3086. selector: unescape('%3E'),
  3087. category: 'comparing',
  3088. fn: function (aDate) {
  3089. var self = this;
  3090. return self > aDate;
  3091. return self;
  3092. },
  3093. args: ["aDate"],
  3094. source: unescape('%3E%20aDate%0A%09%3Creturn%20self%20%3E%3E%20aDate%3E'),
  3095. messageSends: [],
  3096. referencedClasses: []
  3097. }),
  3098. smalltalk.Date);
  3099. smalltalk.addMethod(
  3100. unescape('__lt_eq'),
  3101. smalltalk.method({
  3102. selector: unescape('%3C%3D'),
  3103. category: 'comparing',
  3104. fn: function (aDate) {
  3105. var self = this;
  3106. return self <= aDate;
  3107. return self;
  3108. },
  3109. args: ["aDate"],
  3110. source: unescape('%3C%3D%20aDate%0A%09%3Creturn%20self%20%3C%3D%20aDate%3E'),
  3111. messageSends: [],
  3112. referencedClasses: []
  3113. }),
  3114. smalltalk.Date);
  3115. smalltalk.addMethod(
  3116. unescape('__gt_eq'),
  3117. smalltalk.method({
  3118. selector: unescape('%3E%3D'),
  3119. category: 'comparing',
  3120. fn: function (aDate) {
  3121. var self = this;
  3122. return self >= aDate;
  3123. return self;
  3124. },
  3125. args: ["aDate"],
  3126. source: unescape('%3E%3D%20aDate%0A%09%3Creturn%20self%20%3E%3E%3D%20aDate%3E'),
  3127. messageSends: [],
  3128. referencedClasses: []
  3129. }),
  3130. smalltalk.Date);
  3131. smalltalk.addMethod(
  3132. unescape('__minus'),
  3133. smalltalk.method({
  3134. selector: unescape('-'),
  3135. category: 'arithmetic',
  3136. fn: function (aDate) {
  3137. var self = this;
  3138. return self - aDate;
  3139. return self;
  3140. },
  3141. args: ["aDate"],
  3142. source: unescape('-%20aDate%0A%09%3Creturn%20self%20-%20aDate%3E'),
  3143. messageSends: [],
  3144. referencedClasses: []
  3145. }),
  3146. smalltalk.Date);
  3147. smalltalk.addMethod(
  3148. unescape('__plus'),
  3149. smalltalk.method({
  3150. selector: unescape('+'),
  3151. category: 'arithmetic',
  3152. fn: function (aDate) {
  3153. var self = this;
  3154. return self + aDate;
  3155. return self;
  3156. },
  3157. args: ["aDate"],
  3158. source: unescape('+%20aDate%0A%09%3Creturn%20self%20+%20aDate%3E'),
  3159. messageSends: [],
  3160. referencedClasses: []
  3161. }),
  3162. smalltalk.Date);
  3163. smalltalk.addMethod(
  3164. unescape('_new_'),
  3165. smalltalk.method({
  3166. selector: unescape('new%3A'),
  3167. category: 'instance creation',
  3168. fn: function (anObject) {
  3169. var self = this;
  3170. return new Date(anObject);
  3171. return self;
  3172. },
  3173. args: ["anObject"],
  3174. source: unescape('new%3A%20anObject%0A%09%3Creturn%20new%20Date%28anObject%29%3E'),
  3175. messageSends: [],
  3176. referencedClasses: []
  3177. }),
  3178. smalltalk.Date.klass);
  3179. smalltalk.addMethod(
  3180. unescape('_fromString_'),
  3181. smalltalk.method({
  3182. selector: unescape('fromString%3A'),
  3183. category: 'instance creation',
  3184. fn: function (aString) {
  3185. var self = this;
  3186. return smalltalk.send(self, "_new_", [aString]);
  3187. return self;
  3188. },
  3189. args: ["aString"],
  3190. 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'),
  3191. messageSends: ["new:"],
  3192. referencedClasses: []
  3193. }),
  3194. smalltalk.Date.klass);
  3195. smalltalk.addMethod(
  3196. unescape('_fromSeconds_'),
  3197. smalltalk.method({
  3198. selector: unescape('fromSeconds%3A'),
  3199. category: 'instance creation',
  3200. fn: function (aNumber) {
  3201. var self = this;
  3202. return smalltalk.send(self, "_fromMilliseconds_", [($receiver = aNumber).klass === smalltalk.Number ? $receiver * 1000 : smalltalk.send($receiver, "__star", [1000])]);
  3203. return self;
  3204. },
  3205. args: ["aNumber"],
  3206. source: unescape('fromSeconds%3A%20aNumber%0A%09%5Eself%20fromMilliseconds%3A%20aNumber%20*%201000'),
  3207. messageSends: ["fromMilliseconds:", unescape("*")],
  3208. referencedClasses: []
  3209. }),
  3210. smalltalk.Date.klass);
  3211. smalltalk.addMethod(
  3212. unescape('_fromMilliseconds_'),
  3213. smalltalk.method({
  3214. selector: unescape('fromMilliseconds%3A'),
  3215. category: 'instance creation',
  3216. fn: function (aNumber) {
  3217. var self = this;
  3218. return smalltalk.send(self, "_new_", [aNumber]);
  3219. return self;
  3220. },
  3221. args: ["aNumber"],
  3222. source: unescape('fromMilliseconds%3A%20aNumber%0A%09%5Eself%20new%3A%20aNumber'),
  3223. messageSends: ["new:"],
  3224. referencedClasses: []
  3225. }),
  3226. smalltalk.Date.klass);
  3227. smalltalk.addMethod(
  3228. unescape('_today'),
  3229. smalltalk.method({
  3230. selector: unescape('today'),
  3231. category: 'instance creation',
  3232. fn: function () {
  3233. var self = this;
  3234. return smalltalk.send(self, "_new", []);
  3235. return self;
  3236. },
  3237. args: [],
  3238. source: unescape('today%0A%09%5Eself%20new'),
  3239. messageSends: ["new"],
  3240. referencedClasses: []
  3241. }),
  3242. smalltalk.Date.klass);
  3243. smalltalk.addMethod(
  3244. unescape('_now'),
  3245. smalltalk.method({
  3246. selector: unescape('now'),
  3247. category: 'instance creation',
  3248. fn: function () {
  3249. var self = this;
  3250. return smalltalk.send(self, "_today", []);
  3251. return self;
  3252. },
  3253. args: [],
  3254. source: unescape('now%0A%09%5Eself%20today'),
  3255. messageSends: ["today"],
  3256. referencedClasses: []
  3257. }),
  3258. smalltalk.Date.klass);
  3259. smalltalk.addMethod(
  3260. unescape('_millisecondsToRun_'),
  3261. smalltalk.method({
  3262. selector: unescape('millisecondsToRun%3A'),
  3263. category: 'instance creation',
  3264. fn: function (aBlock) {
  3265. var self = this;
  3266. var t = nil;
  3267. t = smalltalk.send(smalltalk.Date || Date, "_now", []);
  3268. smalltalk.send(aBlock, "_value", []);
  3269. return ($receiver = smalltalk.send(smalltalk.Date || Date, "_now", [])).klass === smalltalk.Number ? $receiver - t : smalltalk.send($receiver, "__minus", [t]);
  3270. return self;
  3271. },
  3272. args: ["aBlock"],
  3273. 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'),
  3274. messageSends: ["now", "value", unescape("-")],
  3275. referencedClasses: ["Date"]
  3276. }),
  3277. smalltalk.Date.klass);
  3278. smalltalk.addClass('UndefinedObject', smalltalk.Object, [], 'Kernel-Objects');
  3279. smalltalk.UndefinedObject.comment=unescape('UndefinedObject%20describes%20the%20behavior%20of%20its%20sole%20instance%2C%20%60nil%60.%20%60nil%60%20represents%20a%20prior%20value%20for%20variables%20that%20have%20not%20been%20initialized%2C%20or%20for%20results%20which%20are%20meaningless.%0A%0A%60nil%60%20is%20the%20Smalltalk%20representation%20of%20the%20%60undefined%60%20JavaScript%20object.')
  3280. smalltalk.addMethod(
  3281. unescape('_subclass_instanceVariableNames_'),
  3282. smalltalk.method({
  3283. selector: unescape('subclass%3AinstanceVariableNames%3A'),
  3284. category: 'class creation',
  3285. fn: function (aString, anotherString) {
  3286. var self = this;
  3287. return smalltalk.send(self, "_subclass_instanceVariableNames_package_", [aString, anotherString, nil]);
  3288. return self;
  3289. },
  3290. args: ["aString", "anotherString"],
  3291. source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20anotherString%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20anotherString%20package%3A%20nil'),
  3292. messageSends: ["subclass:instanceVariableNames:package:"],
  3293. referencedClasses: []
  3294. }),
  3295. smalltalk.UndefinedObject);
  3296. smalltalk.addMethod(
  3297. unescape('_subclass_instanceVariableNames_category_'),
  3298. smalltalk.method({
  3299. selector: unescape('subclass%3AinstanceVariableNames%3Acategory%3A'),
  3300. category: 'class creation',
  3301. fn: function (aString, aString2, aString3) {
  3302. var self = this;
  3303. smalltalk.send(self, "_deprecatedAPI", []);
  3304. return smalltalk.send(self, "_subclass_instanceVariableNames_package_", [aString, aString2, aString3]);
  3305. return self;
  3306. },
  3307. args: ["aString", "aString2", "aString3"],
  3308. source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20category%3A%20aString3%0A%09%22Kept%20for%20compatibility.%22%0A%09self%20deprecatedAPI.%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20package%3A%20aString3'),
  3309. messageSends: ["deprecatedAPI", "subclass:instanceVariableNames:package:"],
  3310. referencedClasses: []
  3311. }),
  3312. smalltalk.UndefinedObject);
  3313. smalltalk.addMethod(
  3314. unescape('_shallowCopy'),
  3315. smalltalk.method({
  3316. selector: unescape('shallowCopy'),
  3317. category: 'copying',
  3318. fn: function () {
  3319. var self = this;
  3320. return self;
  3321. return self;
  3322. },
  3323. args: [],
  3324. source: unescape('shallowCopy%0A%09%5Eself'),
  3325. messageSends: [],
  3326. referencedClasses: []
  3327. }),
  3328. smalltalk.UndefinedObject);
  3329. smalltalk.addMethod(
  3330. unescape('_deepCopy'),
  3331. smalltalk.method({
  3332. selector: unescape('deepCopy'),
  3333. category: 'copying',
  3334. fn: function () {
  3335. var self = this;
  3336. return self;
  3337. return self;
  3338. },
  3339. args: [],
  3340. source: unescape('deepCopy%0A%09%5Eself'),
  3341. messageSends: [],
  3342. referencedClasses: []
  3343. }),
  3344. smalltalk.UndefinedObject);
  3345. smalltalk.addMethod(
  3346. unescape('_ifNil_'),
  3347. smalltalk.method({
  3348. selector: unescape('ifNil%3A'),
  3349. category: 'testing',
  3350. fn: function (aBlock) {
  3351. var self = this;
  3352. return smalltalk.send(self, "_ifNil_ifNotNil_", [aBlock, function () {return nil;}]);
  3353. return self;
  3354. },
  3355. args: ["aBlock"],
  3356. source: unescape('ifNil%3A%20aBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5Eself%20ifNil%3A%20aBlock%20ifNotNil%3A%20%5B%5D'),
  3357. messageSends: ["ifNil:ifNotNil:"],
  3358. referencedClasses: []
  3359. }),
  3360. smalltalk.UndefinedObject);
  3361. smalltalk.addMethod(
  3362. unescape('_ifNotNil_'),
  3363. smalltalk.method({
  3364. selector: unescape('ifNotNil%3A'),
  3365. category: 'testing',
  3366. fn: function (aBlock) {
  3367. var self = this;
  3368. return self;
  3369. return self;
  3370. },
  3371. args: ["aBlock"],
  3372. source: unescape('ifNotNil%3A%20aBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5Eself'),
  3373. messageSends: [],
  3374. referencedClasses: []
  3375. }),
  3376. smalltalk.UndefinedObject);
  3377. smalltalk.addMethod(
  3378. unescape('_ifNil_ifNotNil_'),
  3379. smalltalk.method({
  3380. selector: unescape('ifNil%3AifNotNil%3A'),
  3381. category: 'testing',
  3382. fn: function (aBlock, anotherBlock) {
  3383. var self = this;
  3384. return smalltalk.send(aBlock, "_value", []);
  3385. return self;
  3386. },
  3387. args: ["aBlock", "anotherBlock"],
  3388. source: unescape('ifNil%3A%20aBlock%20ifNotNil%3A%20anotherBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5EaBlock%20value'),
  3389. messageSends: ["value"],
  3390. referencedClasses: []
  3391. }),
  3392. smalltalk.UndefinedObject);
  3393. smalltalk.addMethod(
  3394. unescape('_ifNotNil_ifNil_'),
  3395. smalltalk.method({
  3396. selector: unescape('ifNotNil%3AifNil%3A'),
  3397. category: 'testing',
  3398. fn: function (aBlock, anotherBlock) {
  3399. var self = this;
  3400. return smalltalk.send(anotherBlock, "_value", []);
  3401. return self;
  3402. },
  3403. args: ["aBlock", "anotherBlock"],
  3404. source: unescape('ifNotNil%3A%20aBlock%20ifNil%3A%20anotherBlock%0A%09%22inlined%20in%20the%20Compiler%22%0A%09%5EanotherBlock%20value'),
  3405. messageSends: ["value"],
  3406. referencedClasses: []
  3407. }),
  3408. smalltalk.UndefinedObject);
  3409. smalltalk.addMethod(
  3410. unescape('_isNil'),
  3411. smalltalk.method({
  3412. selector: unescape('isNil'),
  3413. category: 'testing',
  3414. fn: function () {
  3415. var self = this;
  3416. return true;
  3417. return self;
  3418. },
  3419. args: [],
  3420. source: unescape('isNil%0A%09%5Etrue'),
  3421. messageSends: [],
  3422. referencedClasses: []
  3423. }),
  3424. smalltalk.UndefinedObject);
  3425. smalltalk.addMethod(
  3426. unescape('_notNil'),
  3427. smalltalk.method({
  3428. selector: unescape('notNil'),
  3429. category: 'testing',
  3430. fn: function () {
  3431. var self = this;
  3432. return false;
  3433. return self;
  3434. },
  3435. args: [],
  3436. source: unescape('notNil%0A%09%5Efalse'),
  3437. messageSends: [],
  3438. referencedClasses: []
  3439. }),
  3440. smalltalk.UndefinedObject);
  3441. smalltalk.addMethod(
  3442. unescape('_printString'),
  3443. smalltalk.method({
  3444. selector: unescape('printString'),
  3445. category: 'printing',
  3446. fn: function () {
  3447. var self = this;
  3448. return "nil";
  3449. return self;
  3450. },
  3451. args: [],
  3452. source: unescape('printString%0A%20%20%20%20%5E%27nil%27'),
  3453. messageSends: [],
  3454. referencedClasses: []
  3455. }),
  3456. smalltalk.UndefinedObject);
  3457. smalltalk.addMethod(
  3458. unescape('_subclass_instanceVariableNames_package_'),
  3459. smalltalk.method({
  3460. selector: unescape('subclass%3AinstanceVariableNames%3Apackage%3A'),
  3461. category: 'class creation',
  3462. fn: function (aString, aString2, aString3) {
  3463. var self = this;
  3464. return smalltalk.send(smalltalk.send(smalltalk.ClassBuilder || ClassBuilder, "_new", []), "_superclass_subclass_instanceVariableNames_package_", [self, aString, aString2, aString3]);
  3465. return self;
  3466. },
  3467. args: ["aString", "aString2", "aString3"],
  3468. 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'),
  3469. messageSends: ["superclass:subclass:instanceVariableNames:package:", "new"],
  3470. referencedClasses: ["ClassBuilder"]
  3471. }),
  3472. smalltalk.UndefinedObject);
  3473. smalltalk.addMethod(
  3474. unescape('_new'),
  3475. smalltalk.method({
  3476. selector: unescape('new'),
  3477. category: 'instance creation',
  3478. fn: function () {
  3479. var self = this;
  3480. smalltalk.send(self, "_error_", ["You cannot create new instances of UndefinedObject. Use nil"]);
  3481. return self;
  3482. },
  3483. args: [],
  3484. source: unescape('new%0A%09%20%20%20%20self%20error%3A%20%27You%20cannot%20create%20new%20instances%20of%20UndefinedObject.%20Use%20nil%27'),
  3485. messageSends: ["error:"],
  3486. referencedClasses: []
  3487. }),
  3488. smalltalk.UndefinedObject.klass);
  3489. smalltalk.addClass('Date', smalltalk.Object, [], 'Kernel-Objects');
  3490. smalltalk.Date.comment=unescape('The%20Date%20class%20is%20used%20to%20work%20with%20dates%20and%20times.%20Therefore%20%60Date%20today%60%20and%20%60Date%20now%60%20are%20both%20valid%20in%0AAmber%20and%20answer%20the%20same%20date%20object.%0A%0ADate%20wraps%20the%20%60Date%28%29%60%20JavaScript%20constructor%2C%20and%20Smalltalk%20date%20objects%20are%20JavaScript%20date%20objects.')
  3491. smalltalk.addMethod(
  3492. unescape('_year'),
  3493. smalltalk.method({
  3494. selector: unescape('year'),
  3495. category: 'accessing',
  3496. fn: function () {
  3497. var self = this;
  3498. return self.getFullYear();
  3499. return self;
  3500. },
  3501. args: [],
  3502. source: unescape('year%0A%09%3Creturn%20self.getFullYear%28%29%3E'),
  3503. messageSends: [],
  3504. referencedClasses: []
  3505. }),
  3506. smalltalk.Date);
  3507. smalltalk.addMethod(
  3508. unescape('_month'),
  3509. smalltalk.method({
  3510. selector: unescape('month'),
  3511. category: 'accessing',
  3512. fn: function () {
  3513. var self = this;
  3514. return self.getMonth() + 1;
  3515. return self;
  3516. },
  3517. args: [],
  3518. source: unescape('month%0A%09%3Creturn%20self.getMonth%28%29%20+%201%3E'),
  3519. messageSends: [],
  3520. referencedClasses: []
  3521. }),
  3522. smalltalk.Date);
  3523. smalltalk.addMethod(
  3524. unescape('_month_'),
  3525. smalltalk.method({
  3526. selector: unescape('month%3A'),
  3527. category: 'accessing',
  3528. fn: function (aNumber) {
  3529. var self = this;
  3530. self.setMonth(aNumber - 1);
  3531. return self;
  3532. },
  3533. args: ["aNumber"],
  3534. source: unescape('month%3A%20aNumber%0A%09%3Cself.setMonth%28aNumber%20-%201%29%3E'),
  3535. messageSends: [],
  3536. referencedClasses: []
  3537. }),
  3538. smalltalk.Date);
  3539. smalltalk.addMethod(
  3540. unescape('_day'),
  3541. smalltalk.method({
  3542. selector: unescape('day'),
  3543. category: 'accessing',
  3544. fn: function () {
  3545. var self = this;
  3546. return smalltalk.send(self, "_dayOfWeek", []);
  3547. return self;
  3548. },
  3549. args: [],
  3550. source: unescape('day%0A%09%5Eself%20dayOfWeek'),
  3551. messageSends: ["dayOfWeek"],
  3552. referencedClasses: []
  3553. }),
  3554. smalltalk.Date);
  3555. smalltalk.addMethod(
  3556. unescape('_dayOfWeek'),
  3557. smalltalk.method({
  3558. selector: unescape('dayOfWeek'),
  3559. category: 'accessing',
  3560. fn: function () {
  3561. var self = this;
  3562. return self.getDay() + 1;
  3563. return self;
  3564. },
  3565. args: [],
  3566. source: unescape('dayOfWeek%0A%09%3Creturn%20self.getDay%28%29%20+%201%3E'),
  3567. messageSends: [],
  3568. referencedClasses: []
  3569. }),
  3570. smalltalk.Date);
  3571. smalltalk.addMethod(
  3572. unescape('_dayOfWeek_'),
  3573. smalltalk.method({
  3574. selector: unescape('dayOfWeek%3A'),
  3575. category: 'accessing',
  3576. fn: function (aNumber) {
  3577. var self = this;
  3578. return self.setDay(aNumber - 1);
  3579. return self;
  3580. },
  3581. args: ["aNumber"],
  3582. source: unescape('dayOfWeek%3A%20aNumber%0A%09%3Creturn%20self.setDay%28aNumber%20-%201%29%3E'),
  3583. messageSends: [],
  3584. referencedClasses: []
  3585. }),
  3586. smalltalk.Date);
  3587. smalltalk.addMethod(
  3588. unescape('_day_'),
  3589. smalltalk.method({
  3590. selector: unescape('day%3A'),
  3591. category: 'accessing',
  3592. fn: function (aNumber) {
  3593. var self = this;
  3594. smalltalk.send(self, "_day_", [aNumber]);
  3595. return self;
  3596. },
  3597. args: ["aNumber"],
  3598. source: unescape('day%3A%20aNumber%0A%09self%20day%3A%20aNumber'),
  3599. messageSends: ["day:"],
  3600. referencedClasses: []
  3601. }),
  3602. smalltalk.Date);
  3603. smalltalk.addMethod(
  3604. unescape('_year_'),
  3605. smalltalk.method({
  3606. selector: unescape('year%3A'),
  3607. category: 'accessing',
  3608. fn: function (aNumber) {
  3609. var self = this;
  3610. self.setFullYear(aNumber);
  3611. return self;
  3612. },
  3613. args: ["aNumber"],
  3614. source: unescape('year%3A%20aNumber%0A%09%3Cself.setFullYear%28aNumber%29%3E'),
  3615. messageSends: [],
  3616. referencedClasses: []
  3617. }),
  3618. smalltalk.Date);
  3619. smalltalk.addMethod(
  3620. unescape('_dayOfMonth'),
  3621. smalltalk.method({
  3622. selector: unescape('dayOfMonth'),
  3623. category: 'accessing',
  3624. fn: function () {
  3625. var self = this;
  3626. return self.getDate();
  3627. return self;
  3628. },
  3629. args: [],
  3630. source: unescape('dayOfMonth%0A%09%3Creturn%20self.getDate%28%29%3E'),
  3631. messageSends: [],
  3632. referencedClasses: []
  3633. }),
  3634. smalltalk.Date);
  3635. smalltalk.addMethod(
  3636. unescape('_dayOfMonth_'),
  3637. smalltalk.method({
  3638. selector: unescape('dayOfMonth%3A'),
  3639. category: 'accessing',
  3640. fn: function (aNumber) {
  3641. var self = this;
  3642. self.setDate(aNumber);
  3643. return self;
  3644. },
  3645. args: ["aNumber"],
  3646. source: unescape('dayOfMonth%3A%20aNumber%0A%09%3Cself.setDate%28aNumber%29%3E'),
  3647. messageSends: [],
  3648. referencedClasses: []
  3649. }),
  3650. smalltalk.Date);
  3651. smalltalk.addMethod(
  3652. unescape('_asString'),
  3653. smalltalk.method({
  3654. selector: unescape('asString'),
  3655. category: 'converting',
  3656. fn: function () {
  3657. var self = this;
  3658. return self.toString();
  3659. return self;
  3660. },
  3661. args: [],
  3662. source: unescape('asString%0A%09%3Creturn%20self.toString%28%29%3E'),
  3663. messageSends: [],
  3664. referencedClasses: []
  3665. }),
  3666. smalltalk.Date);
  3667. smalltalk.addMethod(
  3668. unescape('_printString'),
  3669. smalltalk.method({
  3670. selector: unescape('printString'),
  3671. category: 'printing',
  3672. fn: function () {
  3673. var self = this;
  3674. return smalltalk.send(self, "_asString", []);
  3675. return self;
  3676. },
  3677. args: [],
  3678. source: unescape('printString%0A%09%5Eself%20asString'),
  3679. messageSends: ["asString"],
  3680. referencedClasses: []
  3681. }),
  3682. smalltalk.Date);
  3683. smalltalk.addMethod(
  3684. unescape('_asMilliseconds'),
  3685. smalltalk.method({
  3686. selector: unescape('asMilliseconds'),
  3687. category: 'converting',
  3688. fn: function () {
  3689. var self = this;
  3690. return smalltalk.send(self, "_time", []);
  3691. return self;
  3692. },
  3693. args: [],
  3694. source: unescape('asMilliseconds%0A%09%5Eself%20time'),
  3695. messageSends: ["time"],
  3696. referencedClasses: []
  3697. }),
  3698. smalltalk.Date);
  3699. smalltalk.addMethod(
  3700. unescape('_time'),
  3701. smalltalk.method({
  3702. selector: unescape('time'),
  3703. category: 'accessing',
  3704. fn: function () {
  3705. var self = this;
  3706. return self.getTime();
  3707. return self;
  3708. },
  3709. args: [],
  3710. source: unescape('time%0A%09%3Creturn%20self.getTime%28%29%3E'),
  3711. messageSends: [],
  3712. referencedClasses: []
  3713. }),
  3714. smalltalk.Date);
  3715. smalltalk.addMethod(
  3716. unescape('_time_'),
  3717. smalltalk.method({
  3718. selector: unescape('time%3A'),
  3719. category: 'accessing',
  3720. fn: function (aNumber) {
  3721. var self = this;
  3722. self.setTime(aNumber);
  3723. return self;
  3724. },
  3725. args: ["aNumber"],
  3726. source: unescape('time%3A%20aNumber%0A%09%3Cself.setTime%28aNumber%29%3E'),
  3727. messageSends: [],
  3728. referencedClasses: []
  3729. }),
  3730. smalltalk.Date);
  3731. smalltalk.addMethod(
  3732. unescape('_asDateString'),
  3733. smalltalk.method({
  3734. selector: unescape('asDateString'),
  3735. category: 'converting',
  3736. fn: function () {
  3737. var self = this;
  3738. return self.toDateString();
  3739. return self;
  3740. },
  3741. args: [],
  3742. source: unescape('asDateString%0A%09%3Creturn%20self.toDateString%28%29%3E'),
  3743. messageSends: [],
  3744. referencedClasses: []
  3745. }),
  3746. smalltalk.Date);
  3747. smalltalk.addMethod(
  3748. unescape('_asTimeString'),
  3749. smalltalk.method({
  3750. selector: unescape('asTimeString'),
  3751. category: 'converting',
  3752. fn: function () {
  3753. var self = this;
  3754. return self.toTimeString();
  3755. return self;
  3756. },
  3757. args: [],
  3758. source: unescape('asTimeString%0A%09%3Creturn%20self.toTimeString%28%29%3E'),
  3759. messageSends: [],
  3760. referencedClasses: []
  3761. }),
  3762. smalltalk.Date);
  3763. smalltalk.addMethod(
  3764. unescape('_asLocaleString'),
  3765. smalltalk.method({
  3766. selector: unescape('asLocaleString'),
  3767. category: 'converting',
  3768. fn: function () {
  3769. var self = this;
  3770. return self.toLocaleString();
  3771. return self;
  3772. },
  3773. args: [],
  3774. source: unescape('asLocaleString%0A%09%3Creturn%20self.toLocaleString%28%29%3E'),
  3775. messageSends: [],
  3776. referencedClasses: []
  3777. }),
  3778. smalltalk.Date);
  3779. smalltalk.addMethod(
  3780. unescape('_asNumber'),
  3781. smalltalk.method({
  3782. selector: unescape('asNumber'),
  3783. category: 'converting',
  3784. fn: function () {
  3785. var self = this;
  3786. return smalltalk.send(self, "_asMilliseconds", []);
  3787. return self;
  3788. },
  3789. args: [],
  3790. source: unescape('asNumber%0A%09%5Eself%20asMilliseconds'),
  3791. messageSends: ["asMilliseconds"],
  3792. referencedClasses: []
  3793. }),
  3794. smalltalk.Date);
  3795. smalltalk.addMethod(
  3796. unescape('_hours_'),
  3797. smalltalk.method({
  3798. selector: unescape('hours%3A'),
  3799. category: 'accessing',
  3800. fn: function (aNumber) {
  3801. var self = this;
  3802. self.setHours(aNumber);
  3803. return self;
  3804. },
  3805. args: ["aNumber"],
  3806. source: unescape('hours%3A%20aNumber%0A%09%3Cself.setHours%28aNumber%29%3E'),
  3807. messageSends: [],
  3808. referencedClasses: []
  3809. }),
  3810. smalltalk.Date);
  3811. smalltalk.addMethod(
  3812. unescape('_minutes_'),
  3813. smalltalk.method({
  3814. selector: unescape('minutes%3A'),
  3815. category: 'accessing',
  3816. fn: function (aNumber) {
  3817. var self = this;
  3818. self.setMinutes(aNumber);
  3819. return self;
  3820. },
  3821. args: ["aNumber"],
  3822. source: unescape('minutes%3A%20aNumber%0A%09%3Cself.setMinutes%28aNumber%29%3E'),
  3823. messageSends: [],
  3824. referencedClasses: []
  3825. }),
  3826. smalltalk.Date);
  3827. smalltalk.addMethod(
  3828. unescape('_seconds_'),
  3829. smalltalk.method({
  3830. selector: unescape('seconds%3A'),
  3831. category: 'accessing',
  3832. fn: function (aNumber) {
  3833. var self = this;
  3834. self.setSeconds(aNumber);
  3835. return self;
  3836. },
  3837. args: ["aNumber"],
  3838. source: unescape('seconds%3A%20aNumber%0A%09%3Cself.setSeconds%28aNumber%29%3E'),
  3839. messageSends: [],
  3840. referencedClasses: []
  3841. }),
  3842. smalltalk.Date);
  3843. smalltalk.addMethod(
  3844. unescape('_milliseconds_'),
  3845. smalltalk.method({
  3846. selector: unescape('milliseconds%3A'),
  3847. category: 'accessing',
  3848. fn: function (aNumber) {
  3849. var self = this;
  3850. self.setMilliseconds(aNumber);
  3851. return self;
  3852. },
  3853. args: ["aNumber"],
  3854. source: unescape('milliseconds%3A%20aNumber%0A%09%3Cself.setMilliseconds%28aNumber%29%3E'),
  3855. messageSends: [],
  3856. referencedClasses: []
  3857. }),
  3858. smalltalk.Date);
  3859. smalltalk.addMethod(
  3860. unescape('_hours'),
  3861. smalltalk.method({
  3862. selector: unescape('hours'),
  3863. category: 'accessing',
  3864. fn: function () {
  3865. var self = this;
  3866. return self.getHours();
  3867. return self;
  3868. },
  3869. args: [],
  3870. source: unescape('hours%0A%09%3Creturn%20self.getHours%28%29%3E'),
  3871. messageSends: [],
  3872. referencedClasses: []
  3873. }),
  3874. smalltalk.Date);
  3875. smalltalk.addMethod(
  3876. unescape('_minutes'),
  3877. smalltalk.method({
  3878. selector: unescape('minutes'),
  3879. category: 'accessing',
  3880. fn: function () {
  3881. var self = this;
  3882. return self.getMinutes();
  3883. return self;
  3884. },
  3885. args: [],
  3886. source: unescape('minutes%0A%09%3Creturn%20self.getMinutes%28%29%3E'),
  3887. messageSends: [],
  3888. referencedClasses: []
  3889. }),
  3890. smalltalk.Date);
  3891. smalltalk.addMethod(
  3892. unescape('_seconds'),
  3893. smalltalk.method({
  3894. selector: unescape('seconds'),
  3895. category: 'accessing',
  3896. fn: function () {
  3897. var self = this;
  3898. return self.getSeconds();
  3899. return self;
  3900. },
  3901. args: [],
  3902. source: unescape('seconds%0A%09%3Creturn%20self.getSeconds%28%29%3E'),
  3903. messageSends: [],
  3904. referencedClasses: []
  3905. }),
  3906. smalltalk.Date);
  3907. smalltalk.addMethod(
  3908. unescape('_milliseconds'),
  3909. smalltalk.method({
  3910. selector: unescape('milliseconds'),
  3911. category: 'accessing',
  3912. fn: function () {
  3913. var self = this;
  3914. return self.getMilliseconds();
  3915. return self;
  3916. },
  3917. args: [],
  3918. source: unescape('milliseconds%0A%09%3Creturn%20self.getMilliseconds%28%29%3E'),
  3919. messageSends: [],
  3920. referencedClasses: []
  3921. }),
  3922. smalltalk.Date);
  3923. smalltalk.addMethod(
  3924. unescape('__lt'),
  3925. smalltalk.method({
  3926. selector: unescape('%3C'),
  3927. category: 'comparing',
  3928. fn: function (aDate) {
  3929. var self = this;
  3930. return self < aDate;
  3931. return self;
  3932. },
  3933. args: ["aDate"],
  3934. source: unescape('%3C%20aDate%0A%09%3Creturn%20self%20%3C%20aDate%3E'),
  3935. messageSends: [],
  3936. referencedClasses: []
  3937. }),
  3938. smalltalk.Date);
  3939. smalltalk.addMethod(
  3940. unescape('__gt'),
  3941. smalltalk.method({
  3942. selector: unescape('%3E'),
  3943. category: 'comparing',
  3944. fn: function (aDate) {
  3945. var self = this;
  3946. return self > aDate;
  3947. return self;
  3948. },
  3949. args: ["aDate"],
  3950. source: unescape('%3E%20aDate%0A%09%3Creturn%20self%20%3E%3E%20aDate%3E'),
  3951. messageSends: [],
  3952. referencedClasses: []
  3953. }),
  3954. smalltalk.Date);
  3955. smalltalk.addMethod(
  3956. unescape('__lt_eq'),
  3957. smalltalk.method({
  3958. selector: unescape('%3C%3D'),
  3959. category: 'comparing',
  3960. fn: function (aDate) {
  3961. var self = this;
  3962. return self <= aDate;
  3963. return self;
  3964. },
  3965. args: ["aDate"],
  3966. source: unescape('%3C%3D%20aDate%0A%09%3Creturn%20self%20%3C%3D%20aDate%3E'),
  3967. messageSends: [],
  3968. referencedClasses: []
  3969. }),
  3970. smalltalk.Date);
  3971. smalltalk.addMethod(
  3972. unescape('__gt_eq'),
  3973. smalltalk.method({
  3974. selector: unescape('%3E%3D'),
  3975. category: 'comparing',
  3976. fn: function (aDate) {
  3977. var self = this;
  3978. return self >= aDate;
  3979. return self;
  3980. },
  3981. args: ["aDate"],
  3982. source: unescape('%3E%3D%20aDate%0A%09%3Creturn%20self%20%3E%3E%3D%20aDate%3E'),
  3983. messageSends: [],
  3984. referencedClasses: []
  3985. }),
  3986. smalltalk.Date);
  3987. smalltalk.addMethod(
  3988. unescape('__minus'),
  3989. smalltalk.method({
  3990. selector: unescape('-'),
  3991. category: 'arithmetic',
  3992. fn: function (aDate) {
  3993. var self = this;
  3994. return self - aDate;
  3995. return self;
  3996. },
  3997. args: ["aDate"],
  3998. source: unescape('-%20aDate%0A%09%3Creturn%20self%20-%20aDate%3E'),
  3999. messageSends: [],
  4000. referencedClasses: []
  4001. }),
  4002. smalltalk.Date);
  4003. smalltalk.addMethod(
  4004. unescape('__plus'),
  4005. smalltalk.method({
  4006. selector: unescape('+'),
  4007. category: 'arithmetic',
  4008. fn: function (aDate) {
  4009. var self = this;
  4010. return self + aDate;
  4011. return self;
  4012. },
  4013. args: ["aDate"],
  4014. source: unescape('+%20aDate%0A%09%3Creturn%20self%20+%20aDate%3E'),
  4015. messageSends: [],
  4016. referencedClasses: []
  4017. }),
  4018. smalltalk.Date);
  4019. smalltalk.addMethod(
  4020. unescape('_new_'),
  4021. smalltalk.method({
  4022. selector: unescape('new%3A'),
  4023. category: 'instance creation',
  4024. fn: function (anObject) {
  4025. var self = this;
  4026. return new Date(anObject);
  4027. return self;
  4028. },
  4029. args: ["anObject"],
  4030. source: unescape('new%3A%20anObject%0A%09%3Creturn%20new%20Date%28anObject%29%3E'),
  4031. messageSends: [],
  4032. referencedClasses: []
  4033. }),
  4034. smalltalk.Date.klass);
  4035. smalltalk.addMethod(
  4036. unescape('_fromString_'),
  4037. smalltalk.method({
  4038. selector: unescape('fromString%3A'),
  4039. category: 'instance creation',
  4040. fn: function (aString) {
  4041. var self = this;
  4042. return smalltalk.send(self, "_new_", [aString]);
  4043. return self;
  4044. },
  4045. args: ["aString"],
  4046. 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'),
  4047. messageSends: ["new:"],
  4048. referencedClasses: []
  4049. }),
  4050. smalltalk.Date.klass);
  4051. smalltalk.addMethod(
  4052. unescape('_fromSeconds_'),
  4053. smalltalk.method({
  4054. selector: unescape('fromSeconds%3A'),
  4055. category: 'instance creation',
  4056. fn: function (aNumber) {
  4057. var self = this;
  4058. return smalltalk.send(self, "_fromMilliseconds_", [($receiver = aNumber).klass === smalltalk.Number ? $receiver * 1000 : smalltalk.send($receiver, "__star", [1000])]);
  4059. return self;
  4060. },
  4061. args: ["aNumber"],
  4062. source: unescape('fromSeconds%3A%20aNumber%0A%09%5Eself%20fromMilliseconds%3A%20aNumber%20*%201000'),
  4063. messageSends: ["fromMilliseconds:", unescape("*")],
  4064. referencedClasses: []
  4065. }),
  4066. smalltalk.Date.klass);
  4067. smalltalk.addMethod(
  4068. unescape('_fromMilliseconds_'),
  4069. smalltalk.method({
  4070. selector: unescape('fromMilliseconds%3A'),
  4071. category: 'instance creation',
  4072. fn: function (aNumber) {
  4073. var self = this;
  4074. return smalltalk.send(self, "_new_", [aNumber]);
  4075. return self;
  4076. },
  4077. args: ["aNumber"],
  4078. source: unescape('fromMilliseconds%3A%20aNumber%0A%09%5Eself%20new%3A%20aNumber'),
  4079. messageSends: ["new:"],
  4080. referencedClasses: []
  4081. }),
  4082. smalltalk.Date.klass);
  4083. smalltalk.addMethod(
  4084. unescape('_today'),
  4085. smalltalk.method({
  4086. selector: unescape('today'),
  4087. category: 'instance creation',
  4088. fn: function () {
  4089. var self = this;
  4090. return smalltalk.send(self, "_new", []);
  4091. return self;
  4092. },
  4093. args: [],
  4094. source: unescape('today%0A%09%5Eself%20new'),
  4095. messageSends: ["new"],
  4096. referencedClasses: []
  4097. }),
  4098. smalltalk.Date.klass);
  4099. smalltalk.addMethod(
  4100. unescape('_now'),
  4101. smalltalk.method({
  4102. selector: unescape('now'),
  4103. category: 'instance creation',
  4104. fn: function () {
  4105. var self = this;
  4106. return smalltalk.send(self, "_today", []);
  4107. return self;
  4108. },
  4109. args: [],
  4110. source: unescape('now%0A%09%5Eself%20today'),
  4111. messageSends: ["today"],
  4112. referencedClasses: []
  4113. }),
  4114. smalltalk.Date.klass);
  4115. smalltalk.addMethod(
  4116. unescape('_millisecondsToRun_'),
  4117. smalltalk.method({
  4118. selector: unescape('millisecondsToRun%3A'),
  4119. category: 'instance creation',
  4120. fn: function (aBlock) {
  4121. var self = this;
  4122. var t = nil;
  4123. t = smalltalk.send(smalltalk.Date || Date, "_now", []);
  4124. smalltalk.send(aBlock, "_value", []);
  4125. return ($receiver = smalltalk.send(smalltalk.Date || Date, "_now", [])).klass === smalltalk.Number ? $receiver - t : smalltalk.send($receiver, "__minus", [t]);
  4126. return self;
  4127. },
  4128. args: ["aBlock"],
  4129. 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'),
  4130. messageSends: ["now", "value", unescape("-")],
  4131. referencedClasses: ["Date"]
  4132. }),
  4133. smalltalk.Date.klass);
  4134. smalltalk.addClass('JSObjectProxy', smalltalk.Object, ['jsObject'], 'Kernel-Objects');
  4135. smalltalk.JSObjectProxy.comment=unescape('JSObjectProxy%20handles%20sending%20messages%20to%20JavaScript%20object%2C%20therefore%20accessing%20JavaScript%20objects%20from%20Amber%20is%20transparent.%0AJSOjbectProxy%20makes%20intensive%20use%20of%20%60%23doesNotUnderstand%3A%60.%0A%0A%23%23%20Examples%0A%0AJSObjectProxy%20objects%20are%20instanciated%20by%20Amber%20when%20a%20Smalltalk%20message%20is%20sent%20to%20a%20JavaScript%20object.%0A%0A%20%20%20%20window%20alert%3A%20%27hello%20world%27.%0A%20%20%20%20window%20inspect.%0A%20%20%20%20%28window%20jQuery%3A%20%27body%27%29%20append%3A%20%27hello%20world%27%0A%0ASmalltalk%20messages%20sends%20are%20converted%20to%20JavaScript%20function%20calls%20or%20object%20property%20access%20_%28in%20this%20order%29_.%20If%20n%20one%20of%20them%20match%2C%20a%20%60MessageNotUnderstood%60%20error%20will%20be%20thrown.%20%0A%0A%23%23%20Message%20conversion%20rules%0A%0A-%20%60someUser%20name%60%20becomes%20%20%60someUser.name%60%0A-%20%60someUser%20name%3A%20%27John%27%60%20becomes%20%60someUser%20name%20%3D%20%22John%22%60%0A-%20%60console%20log%3A%20%27hello%20world%27%60%20becomes%20%60console.log%28%27hello%20world%27%29%60%0A-%20%60%28window%20jQuery%3A%20%27foo%27%29%20css%3A%20%27background%27%20color%3A%20%27red%27%60%20becomes%20%60window.jQuery%28%27foo%27%29.css%28%27background%27%2C%20%27red%27%29%60%0A%0A__Note%3A__%20For%20keyword-based%20messages%2C%20only%20the%20first%20keyword%20is%20kept%3A%20%60window%20foo%3A%201%20bar%3A%202%60%20is%20equivalent%20to%20%60window%20foo%3A%201%20baz%3A%202%60.')
  4136. smalltalk.addMethod(
  4137. unescape('_jsObject_'),
  4138. smalltalk.method({
  4139. selector: unescape('jsObject%3A'),
  4140. category: 'accessing',
  4141. fn: function (aJSObject) {
  4142. var self = this;
  4143. self['@jsObject'] = aJSObject;
  4144. return self;
  4145. },
  4146. args: ["aJSObject"],
  4147. source: unescape('jsObject%3A%20aJSObject%0A%09jsObject%20%3A%3D%20aJSObject'),
  4148. messageSends: [],
  4149. referencedClasses: []
  4150. }),
  4151. smalltalk.JSObjectProxy);
  4152. smalltalk.addMethod(
  4153. unescape('_jsObject'),
  4154. smalltalk.method({
  4155. selector: unescape('jsObject'),
  4156. category: 'accessing',
  4157. fn: function () {
  4158. var self = this;
  4159. return self['@jsObject'];
  4160. return self;
  4161. },
  4162. args: [],
  4163. source: unescape('jsObject%0A%09%5EjsObject'),
  4164. messageSends: [],
  4165. referencedClasses: []
  4166. }),
  4167. smalltalk.JSObjectProxy);
  4168. smalltalk.addMethod(
  4169. unescape('_printString'),
  4170. smalltalk.method({
  4171. selector: unescape('printString'),
  4172. category: 'proxy',
  4173. fn: function () {
  4174. var self = this;
  4175. return smalltalk.send(smalltalk.send(self, "_jsObject", []), "_toString", []);
  4176. return self;
  4177. },
  4178. args: [],
  4179. source: unescape('printString%0A%09%5Eself%20jsObject%20toString'),
  4180. messageSends: ["toString", "jsObject"],
  4181. referencedClasses: []
  4182. }),
  4183. smalltalk.JSObjectProxy);
  4184. smalltalk.addMethod(
  4185. unescape('_inspectOn_'),
  4186. smalltalk.method({
  4187. selector: unescape('inspectOn%3A'),
  4188. category: 'proxy',
  4189. fn: function (anInspector) {
  4190. var self = this;
  4191. var variables = nil;
  4192. variables = smalltalk.send(smalltalk.Dictionary || Dictionary, "_new", []);
  4193. smalltalk.send(variables, "_at_put_", [unescape("%23self"), smalltalk.send(self, "_jsObject", [])]);
  4194. smalltalk.send(anInspector, "_setLabel_", [smalltalk.send(self, "_printString", [])]);
  4195. for (var i in self['@jsObject']) {
  4196. variables._at_put_(i, self['@jsObject'][i]);
  4197. }
  4198. smalltalk.send(anInspector, "_setVariables_", [variables]);
  4199. return self;
  4200. },
  4201. args: ["anInspector"],
  4202. 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'),
  4203. messageSends: ["new", "at:put:", "jsObject", "setLabel:", "printString", "setVariables:"],
  4204. referencedClasses: ["Dictionary"]
  4205. }),
  4206. smalltalk.JSObjectProxy);
  4207. smalltalk.addMethod(
  4208. unescape('_doesNotUnderstand_'),
  4209. smalltalk.method({
  4210. selector: unescape('doesNotUnderstand%3A'),
  4211. category: 'proxy',
  4212. fn: function (aMessage) {
  4213. var self = this;
  4214. var obj = nil;
  4215. var selector = nil;
  4216. var jsSelector = nil;
  4217. var arguments = nil;
  4218. obj = smalltalk.send(self, "_jsObject", []);
  4219. selector = smalltalk.send(aMessage, "_selector", []);
  4220. jsSelector = smalltalk.send(selector, "_asJavaScriptSelector", []);
  4221. arguments = smalltalk.send(aMessage, "_arguments", []);
  4222. if (obj[jsSelector] != undefined) {
  4223. return smalltalk.send(obj, jsSelector, arguments);
  4224. }
  4225. smalltalk.send(self, "_doesNotUnderstand_", [aMessage], smalltalk.Object);
  4226. return self;
  4227. },
  4228. args: ["aMessage"],
  4229. 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'),
  4230. messageSends: ["jsObject", "selector", "asJavaScriptSelector", "arguments", "doesNotUnderstand:"],
  4231. referencedClasses: []
  4232. }),
  4233. smalltalk.JSObjectProxy);
  4234. smalltalk.addMethod(
  4235. unescape('_at_'),
  4236. smalltalk.method({
  4237. selector: unescape('at%3A'),
  4238. category: 'accessing',
  4239. fn: function (aSymbol) {
  4240. var self = this;
  4241. var attr = nil;
  4242. attr = smalltalk.send(aSymbol, "_asString", []);
  4243. return self['@jsObject'][attr];
  4244. return self;
  4245. },
  4246. args: ["aSymbol"],
  4247. source: unescape('at%3A%20aSymbol%0A%09%7C%20attr%20%7C%0A%09attr%20%3A%3D%20aSymbol%20asString.%0A%09%3Creturn%20self%5B%27@jsObject%27%5D%5Battr%5D%3E'),
  4248. messageSends: ["asString"],
  4249. referencedClasses: []
  4250. }),
  4251. smalltalk.JSObjectProxy);
  4252. smalltalk.addMethod(
  4253. unescape('_at_put_'),
  4254. smalltalk.method({
  4255. selector: unescape('at%3Aput%3A'),
  4256. category: 'accessing',
  4257. fn: function (aSymbol, anObject) {
  4258. var self = this;
  4259. var attr = nil;
  4260. attr = smalltalk.send(aSymbol, "_asString", []);
  4261. self['@jsObject'][attr] = anObject;
  4262. return self;
  4263. },
  4264. args: ["aSymbol", "anObject"],
  4265. source: unescape('at%3A%20aSymbol%20put%3A%20anObject%0A%09%7C%20attr%20%7C%0A%09attr%20%3A%3D%20aSymbol%20asString.%0A%09%3Cself%5B%27@jsObject%27%5D%5Battr%5D%20%3D%20anObject%3E'),
  4266. messageSends: ["asString"],
  4267. referencedClasses: []
  4268. }),
  4269. smalltalk.JSObjectProxy);
  4270. smalltalk.addMethod(
  4271. unescape('_on_'),
  4272. smalltalk.method({
  4273. selector: unescape('on%3A'),
  4274. category: 'instance creation',
  4275. fn: function (aJSObject) {
  4276. var self = this;
  4277. return function ($rec) {smalltalk.send($rec, "_jsObject_", [aJSObject]);return smalltalk.send($rec, "_yourself", []);}(smalltalk.send(self, "_new", []));
  4278. return self;
  4279. },
  4280. args: ["aJSObject"],
  4281. source: unescape('on%3A%20aJSObject%0A%09%5Eself%20new%0A%09%09jsObject%3A%20aJSObject%3B%0A%09%09yourself'),
  4282. messageSends: ["jsObject:", "yourself", "new"],
  4283. referencedClasses: []
  4284. }),
  4285. smalltalk.JSObjectProxy.klass);
  4286. smalltalk.addClass('Point', smalltalk.Object, ['x', 'y'], 'Kernel-Objects');
  4287. smalltalk.Point.comment=unescape('A%20%60Point%60%20represents%20an%20x-y%20pair%20of%20numbers%20usually%20designating%20a%20geometric%20coordinate.%0APoints%20are%20traditionally%20created%20using%20the%20binary%20%60%23@%60%20message%20to%20a%20number%3A%0A%0A%09100@120%0A%0APoints%20can%20then%20be%20arithmetically%20manipulated%3A%0A%0A%09100@100%20+%20%2810@10%29%0A%0A...or%20for%20example%3A%0A%0A%09%28100@100%29%20*%202%0A%0A**NOTE%3A**%20Creating%20a%20Point%20with%20a%20negative%20y-value%20will%20need%20a%20space%20after%20%60@%60%20in%20order%20to%20avoid%20a%20parsing%20error%3A%0A%0A%09100@%20-100%20%22but%20100@-100%20would%20not%20parse%22%0A%0AAmber%20does%20not%20have%20much%20behavior%20in%20this%20class%20out-of-the-box.')
  4288. smalltalk.addMethod(
  4289. unescape('_x'),
  4290. smalltalk.method({
  4291. selector: unescape('x'),
  4292. category: 'accessing',
  4293. fn: function () {
  4294. var self = this;
  4295. return self['@x'];
  4296. return self;
  4297. },
  4298. args: [],
  4299. source: unescape('x%0A%09%5Ex'),
  4300. messageSends: [],
  4301. referencedClasses: []
  4302. }),
  4303. smalltalk.Point);
  4304. smalltalk.addMethod(
  4305. unescape('_y'),
  4306. smalltalk.method({
  4307. selector: unescape('y'),
  4308. category: 'accessing',
  4309. fn: function () {
  4310. var self = this;
  4311. return self['@y'];
  4312. return self;
  4313. },
  4314. args: [],
  4315. source: unescape('y%0A%09%5Ey'),
  4316. messageSends: [],
  4317. referencedClasses: []
  4318. }),
  4319. smalltalk.Point);
  4320. smalltalk.addMethod(
  4321. unescape('_y_'),
  4322. smalltalk.method({
  4323. selector: unescape('y%3A'),
  4324. category: 'accessing',
  4325. fn: function (aNumber) {
  4326. var self = this;
  4327. self['@y'] = aNumber;
  4328. return self;
  4329. },
  4330. args: ["aNumber"],
  4331. source: unescape('y%3A%20aNumber%0A%09y%20%3A%3D%20aNumber'),
  4332. messageSends: [],
  4333. referencedClasses: []
  4334. }),
  4335. smalltalk.Point);
  4336. smalltalk.addMethod(
  4337. unescape('_x_'),
  4338. smalltalk.method({
  4339. selector: unescape('x%3A'),
  4340. category: 'accessing',
  4341. fn: function (aNumber) {
  4342. var self = this;
  4343. self['@x'] = aNumber;
  4344. return self;
  4345. },
  4346. args: ["aNumber"],
  4347. source: unescape('x%3A%20aNumber%0A%09x%20%3A%3D%20aNumber'),
  4348. messageSends: [],
  4349. referencedClasses: []
  4350. }),
  4351. smalltalk.Point);
  4352. smalltalk.addMethod(
  4353. unescape('__star'),
  4354. smalltalk.method({
  4355. selector: unescape('*'),
  4356. category: 'arithmetic',
  4357. fn: function (aPoint) {
  4358. var self = this;
  4359. 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", [])])]);
  4360. return self;
  4361. },
  4362. args: ["aPoint"],
  4363. source: unescape('*%20aPoint%0A%09%5EPoint%20x%3A%20self%20x%20*%20aPoint%20asPoint%20x%20y%3A%20self%20y%20*%20aPoint%20asPoint%20y'),
  4364. messageSends: ["x:y:", unescape("*"), "x", "asPoint", "y"],
  4365. referencedClasses: ["Point"]
  4366. }),
  4367. smalltalk.Point);
  4368. smalltalk.addMethod(
  4369. unescape('__plus'),
  4370. smalltalk.method({
  4371. selector: unescape('+'),
  4372. category: 'arithmetic',
  4373. fn: function (aPoint) {
  4374. var self = this;
  4375. 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", [])])]);
  4376. return self;
  4377. },
  4378. args: ["aPoint"],
  4379. source: unescape('+%20aPoint%0A%09%5EPoint%20x%3A%20self%20x%20+%20aPoint%20asPoint%20x%20y%3A%20self%20y%20+%20aPoint%20asPoint%20y'),
  4380. messageSends: ["x:y:", unescape("+"), "x", "asPoint", "y"],
  4381. referencedClasses: ["Point"]
  4382. }),
  4383. smalltalk.Point);
  4384. smalltalk.addMethod(
  4385. unescape('__minus'),
  4386. smalltalk.method({
  4387. selector: unescape('-'),
  4388. category: 'arithmetic',
  4389. fn: function (aPoint) {
  4390. var self = this;
  4391. 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", [])])]);
  4392. return self;
  4393. },
  4394. args: ["aPoint"],
  4395. source: unescape('-%20aPoint%0A%09%5EPoint%20x%3A%20self%20x%20-%20aPoint%20asPoint%20x%20y%3A%20self%20y%20-%20aPoint%20asPoint%20y'),
  4396. messageSends: ["x:y:", unescape("-"), "x", "asPoint", "y"],
  4397. referencedClasses: ["Point"]
  4398. }),
  4399. smalltalk.Point);
  4400. smalltalk.addMethod(
  4401. unescape('__slash'),
  4402. smalltalk.method({
  4403. selector: unescape('/'),
  4404. category: 'arithmetic',
  4405. fn: function (aPoint) {
  4406. var self = this;
  4407. 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", [])])]);
  4408. return self;
  4409. },
  4410. args: ["aPoint"],
  4411. source: unescape('/%20aPoint%0A%09%5EPoint%20x%3A%20self%20x%20/%20aPoint%20asPoint%20x%20y%3A%20self%20y%20/%20aPoint%20asPoint%20y'),
  4412. messageSends: ["x:y:", unescape("/"), "x", "asPoint", "y"],
  4413. referencedClasses: ["Point"]
  4414. }),
  4415. smalltalk.Point);
  4416. smalltalk.addMethod(
  4417. unescape('_asPoint'),
  4418. smalltalk.method({
  4419. selector: unescape('asPoint'),
  4420. category: 'converting',
  4421. fn: function () {
  4422. var self = this;
  4423. return self;
  4424. return self;
  4425. },
  4426. args: [],
  4427. source: unescape('asPoint%0A%09%5Eself'),
  4428. messageSends: [],
  4429. referencedClasses: []
  4430. }),
  4431. smalltalk.Point);
  4432. smalltalk.addMethod(
  4433. unescape('__eq'),
  4434. smalltalk.method({
  4435. selector: unescape('%3D'),
  4436. category: 'arithmetic',
  4437. fn: function (aPoint) {
  4438. var self = this;
  4439. 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", [])])]);}]);
  4440. return self;
  4441. },
  4442. args: ["aPoint"],
  4443. 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'),
  4444. messageSends: ["and:", unescape("%3D"), "class", unescape("%26"), "x", "y"],
  4445. referencedClasses: []
  4446. }),
  4447. smalltalk.Point);
  4448. smalltalk.addMethod(
  4449. unescape('_printString'),
  4450. smalltalk.method({
  4451. selector: unescape('printString'),
  4452. category: 'printing',
  4453. fn: function () {
  4454. var self = this;
  4455. return smalltalk.send(smalltalk.String || String, "_streamContents_", [function (stream) {smalltalk.send(stream, "_nextPutAll_", [smalltalk.send(smalltalk.send(self['@x'], "_printString", []), "__comma", [unescape("@")])]);($receiver = smalltalk.send(smalltalk.send(self['@y'], "_notNil", []), "_and_", [function () {return smalltalk.send(self['@y'], "_negative", []);}])).klass === smalltalk.Boolean ? $receiver ? function () {return smalltalk.send(stream, "_space", []);}() : nil : smalltalk.send($receiver, "_ifTrue_", [function () {return smalltalk.send(stream, "_space", []);}]);return smalltalk.send(stream, "_nextPutAll_", [smalltalk.send(self['@y'], "_printString", [])]);}]);
  4456. return self;
  4457. },
  4458. args: [],
  4459. source: unescape('printString%0A%09%22Print%20receiver%20in%20classic%20x@y%20notation.%22%0A%0A%09%5EString%20streamContents%3A%20%5B%3Astream%20%7C%0A%09%09stream%20nextPutAll%3A%20x%20printString%2C%20%27@%27.%0A%09%09%28y%20notNil%20and%3A%20%5By%20negative%5D%29%0A%09%09%09ifTrue%3A%20%5B%0A%09%09%09%09%22Avoid%20ambiguous%20@-%20construct%22%0A%09%09%09%09stream%20space%5D.%0A%09%09stream%20nextPutAll%3A%20y%20printString%5D'),
  4460. messageSends: ["streamContents:", "nextPutAll:", unescape("%2C"), "printString", "ifTrue:", "and:", "notNil", "negative", "space"],
  4461. referencedClasses: ["String"]
  4462. }),
  4463. smalltalk.Point);
  4464. smalltalk.addMethod(
  4465. unescape('_translateBy_'),
  4466. smalltalk.method({
  4467. selector: unescape('translateBy%3A'),
  4468. category: 'transforming',
  4469. fn: function (delta){
  4470. var self=this;
  4471. return smalltalk.send(((($receiver = smalltalk.send(delta, "_x", [])).klass === smalltalk.Number) ? $receiver +self['@x'] : smalltalk.send($receiver, "__plus", [self['@x']])), "__at", [((($receiver = smalltalk.send(delta, "_y", [])).klass === smalltalk.Number) ? $receiver +self['@y'] : smalltalk.send($receiver, "__plus", [self['@y']]))]);
  4472. return self;},
  4473. args: ["delta"],
  4474. source: unescape('translateBy%3A%20delta%20%0A%09%22Answer%20a%20Point%20translated%20by%20delta%20%28an%20instance%20of%20Point%29.%22%0A%09%5E%28delta%20x%20+%20x%29%20@%20%28delta%20y%20+%20y%29'),
  4475. messageSends: [unescape("@"), unescape("+"), "x", "y"],
  4476. referencedClasses: []
  4477. }),
  4478. smalltalk.Point);
  4479. smalltalk.addMethod(
  4480. unescape('_x_y_'),
  4481. smalltalk.method({
  4482. selector: unescape('x%3Ay%3A'),
  4483. category: 'instance creation',
  4484. fn: function (aNumber, anotherNumber) {
  4485. var self = this;
  4486. return function ($rec) {smalltalk.send($rec, "_x_", [aNumber]);smalltalk.send($rec, "_y_", [anotherNumber]);return smalltalk.send($rec, "_yourself", []);}(smalltalk.send(self, "_new", []));
  4487. return self;
  4488. },
  4489. args: ["aNumber", "anotherNumber"],
  4490. 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'),
  4491. messageSends: ["x:", "y:", "yourself", "new"],
  4492. referencedClasses: []
  4493. }),
  4494. smalltalk.Point.klass);
  4495. smalltalk.addClass('Random', smalltalk.Object, [], 'Kernel-Objects');
  4496. smalltalk.Random.comment=unescape('%60Random%60%20is%20a%20random%20number%20generator%20and%20is%20implemented%20as%20a%20trivial%20wrapper%20around%20javascript%20%60Math.random%28%29%60%20and%20is%20used%20like%20this%3A%0A%0A%09Random%20new%20next%0A%0AThis%20will%20return%20a%20float%20x%20where%20x%20%3C%201%20and%20x%20%3E%200.%20If%20you%20want%20a%20random%20integer%20from%201%20to%2010%20you%20can%20use%20%60%23atRandom%60%0A%0A%0910%20atRandom%0A%0A...and%20if%20you%20want%20a%20random%20number%20in%20a%20specific%20interval%20this%20also%20works%3A%0A%0A%09%283%20to%3A%207%29%20atRandom%0A%0A...but%20be%20aware%20that%20%60%23to%3A%60%20does%20not%20create%20an%20Interval%20as%20in%20other%20Smalltalk%20implementations%20but%20in%20fact%20an%20%60Array%60%20of%20numbers%2C%20so%20it%27s%20better%20to%20use%3A%0A%0A%095%20atRandom%20+%202%0A%0ASince%20%60%23atRandom%60%20is%20implemented%20in%20%60SequencableCollection%60%20you%20can%20easy%20pick%20an%20element%20at%20random%3A%0A%0A%09%23%28%27a%27%20%27b%27%20%27c%27%29%20atRandom%0A%0A...or%20perhaps%20a%20letter%20from%20a%20%60String%60%3A%0A%0A%09%27abc%27%20atRandom%0A%0ASince%20Amber%20does%20not%20have%20Characters%20this%20will%20return%20a%20%60String%60%20of%20length%201%20like%20for%20example%20%60%27b%27%60.')
  4497. smalltalk.addMethod(
  4498. unescape('_next'),
  4499. smalltalk.method({
  4500. selector: unescape('next'),
  4501. category: 'accessing',
  4502. fn: function () {
  4503. var self = this;
  4504. return Math.random();
  4505. return self;
  4506. },
  4507. args: [],
  4508. source: unescape('next%0A%09%3Creturn%20Math.random%28%29%3E'),
  4509. messageSends: [],
  4510. referencedClasses: []
  4511. }),
  4512. smalltalk.Random);
  4513. smalltalk.addMethod(
  4514. unescape('_next_'),
  4515. smalltalk.method({
  4516. selector: unescape('next%3A'),
  4517. category: 'accessing',
  4518. fn: function (anInteger) {
  4519. var self = this;
  4520. return smalltalk.send(smalltalk.send(1, "_to_", [anInteger]), "_collect_", [function (each) {return smalltalk.send(self, "_next", []);}]);
  4521. return self;
  4522. },
  4523. args: ["anInteger"],
  4524. 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'),
  4525. messageSends: ["collect:", "to:", "next"],
  4526. referencedClasses: []
  4527. }),
  4528. smalltalk.Random);