Lively Kernel canvas // this script is evaluated on world load= 0) { if (string[lineStart] == nl) startFound = true; else lineStart-- } while (!endFound && lineEnd < string.length) { if (string[lineEnd] == nl) endFound = true; else lineEnd++ } var before = string.substring(0, lineStart + 1); var after = string.substring(lineEnd, string.length); this.updateTextString(before + replacement + after) }, })]]>savehmmmmmhmmmmmmmmmmhttp://www.lively-kernel.org/repository/webwerkstatt/ometa/codebaselocalbs-ometa-compiler.js(notparsed)bs-ometa-js-compiler.js(notparsed)bs-ometa-optimizer.js(notparsed)lk-parser-extensions.ometa(notparsed)ometa-base.js---------------AddmoduleLoadallLineNoRefreshEvalonSortViewas...classesfunctionsobjectsometa-base.jshttp://www.lively-kernel.org/repository/webwerkstatt/lively/codebaselocalFileUploadWidget.js(notparsed)Widgets.jsWikiWidget.js(notparsed)ButtonMorphButtonBehaviorMorphScriptableButtonMorphImageMorphImageButtonMorphClipMorphHandleMorphSelectionMorphPanelMorphPanelMorph(extension)CheapListMorphTextListMorphListMorphArray.prototype(extension)DragWrapperDragnDropListMorphMorph(extension)FilterableListMorphMenuItemSubMenuItemMenuMorphSliderMorphScrollPaneColorPickerMorphXenoMorphVideoMorphVideoMorph(extension)WidgetModelWidgetDialogConfirmDialogPromptDialogConsoleWidgetXenoBrowserWidgetTitleBarMorphTitleTabMorphWindowControlMorphStatusBarMorphWindowMorphMorph(extension)TabbedPanelMorphPieMenuMorphPieMenuMorph(extension)ArrowHeadMorphConnectorMorphNodeMorphNodeMorph(extension)NodeEnergySliderMarkerMorphMouseHandlerMarkerMorphProgressBarMorphPromptDialogMorphPromptDialogMorphExampleClientMorphPromptDialogMorph(extension)HorizontalDividerStatusMessageContainerScaleMorphColorChooserWidgetCheckBoxMorphMiniMapEntryMorphMiniMapWindowMorphMiniMapMorph--all--defaultcategorydescription(proto)style(proto)scrollBarWidth(proto)ScrollBarFormalRelay(proto)openForDragAndDrop(proto)initialize(proto)calcClipR(proto)initializeScrollBar(proto)getScrollBar(proto)disableScrollBar(proto)enableScrollBar(proto)onDeserialize(proto)submorphBounds(proto)innerMorph(proto)connectModel(proto)disconnectModel(proto)getModel(proto)getModelPlug(proto)updateView(proto)addMenuButton(proto)menuButtonPressed(proto)slideRoom(proto)getScrollPosition(proto)setScrollPosition(proto)getVisibleExtent(proto)scrollToTop(proto)scrollToBottom(proto)scrollRectIntoView(proto)adjustForNewBounds(proto)scrollBarWidth:14,AddmoduleLoadallLineNoRefreshEvalonSortViewas...classesfunctionsobjectsWidgets.js:ScrollPane:--all--:scrollBarWidth(proto)t=$morph('text2')tt.addOrRemoveCommentt.replaceCurrentLine('hmmmmm')t.constructor.functionNames()space'\r'.charCodeAt(0)http://www.lively-kernel.org/repository/webwerkstatt/lively/codebaselocalLKFileParser.js(notparsed)LKFileParser.ometaLKFileParserisLKParserloglogPoswhereAreYoufromTostackSizenumgetStackassignStackstartTimestopTimeopencloseaddremoveeverythingButnonRecursiverecursivechunksomethingRelatedsomethingBigRelateddefEndclassElemDefEndspacenlspacesNoNlnameFirstnameRestiNameisKeywordnamekeywordnamespaceIdSplittednamespaceIdnsFollowedBynsWithbasicFunctionfuncfunctionDefstaticPropertymethodModificationDefprotoDefgetterOrSetterpropertyDefclassElemscategoryDefcategorycategoryNameclassElemsInCategoryrestKlassDefklassklassNameklassDefbasicKlassExtklassExtensionDefrestObjDefobjectDefometaParameterometaParametersometaRuleDefometaInheritometaDefcommentblankLinecopDefcopSubElementcopRefinementunknown-----/**Copyright(c)2006-2009SunMicrosystems,Inc.**Permissionisherebygranted,freeofcharge,toanypersonobtainingacopy*ofthissoftwareandassociateddocumentationfiles(the"Software"),todeal*intheSoftwarewithoutrestriction,includingwithoutlimitationtherights*touse,copy,modify,merge,publish,distribute,sublicense,and/orsell*copiesoftheSoftware,andtopermitpersonstowhomtheSoftwareis*furnishedtodoso,subjecttothefollowingconditions:**Theabovecopyrightnoticeandthispermissionnoticeshallbeincludedin*allcopiesorsubstantialportionsoftheSoftware.*THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSOR*IMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY,*FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.INNOEVENTSHALLTHE*AUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHER*LIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISINGFROM,*OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHERDEALINGSIN*THESOFTWARE.*/ometaLKFileParser<:Parser{isLKParser->true,/*helperproductions*/log:msg->{console.log(msg);true},logPos->{console.log(this.pos());true},whereAreYou->{varcharsBefore=120;varcharsAfter=120;varsrc=this._originalInput.arr;varstartIndex=Math.max(0,this.pos()-charsBefore);varstopIndex=Math.min(src.length,this.pos()+charsAfter);console.log(src.substring(startIndex,this.pos())+'<--Iamhere-->'+src.substring(this.pos(),stopIndex));console.log('Rules:'+this._ruleStack);console.log('Stack:'+this.stack);true},fromTo:x:y=seq(x)(~seq(y)char)*:csseq(y)->cs,stackSize->{this.stack.length},num:x->{this.stack.select(function(ea){returnea===x}).length},getStack->{this.stack.clone()},assignStack:s->{this.stack=s},startTime->{/*console.log('startmeasuringtime');newDate().getTime()*/},stopTime:t->{/*console.log('time:'+(newDate().getTime()-t)+'ms');*/true},open:x=add(x)->{x},close:x:y=add(y)remove(y)remove(x)->{y},add:x=exactly(x)->{this.stack.push(x)},remove:x->{if(this.stack.length==0){this.whereAreYou();thrownewError('Stackisempty,cannotremove'+x);};varrem=this.stack.pop();if(rem!==x){this.whereAreYou();thrownewError('Unmatched'+x+'at:'+this.pos()+'insteadfound'+rem+';stack:'+this.stack);};true},everythingBut:x:y=~exactly(x)~exactly(y)anything:a->a,nonRecursive:x:y=getStack:sopen(x)everythingBut(x,y)*:aclose(x,y)->{x+a.join('')+y}|assignStack(s)->{this._manualFail()},recursive:x:y=getStack:sopen(x)(everythingBut(x,y)|recursive(x,y))*:aclose(x,y)->{x+a.join('')+y}|assignStack(s)->{this._manualFail()},chunk:x:y=basicChunk(x,y):a/*~~exactly(x)(nonRecursive(x,y)|recursive(x,y)):a*/->a,/*chunkWith:x:y:p=~~exactly(x)(open(x)num(x):n(apply(p,'a'))*:aclose(x,y)->{x+a.join('')+y}|remove(x)),*/somethingRelated=~end(~'\n'~'\r'~';'anything)*,somethingBigRelated=~end(chunk('(',')')|chunk('{','}')|chunk('[',']')|chunk('\'','\'')|chunk('"','"')|spaces'+'spaces|~','~';'~'('~'{'~'['~'\''~'"'~nlanything)*,defEnd=';''\n'|';'spaces|"",classElemDefEnd=","|"",/*basicstringprocessing*/space=super(#space)|fromTo('//','\n')|fromTo('/*','*/'),nl='\n'|'\r'->'\n',spacesNoNl=(~nlspace)*:spcs->spcs,nameFirst=letter|'$'|'_',nameRest=nameFirst|digit,iName=firstAndRest(#nameFirst,#nameRest):r->r.join(''),isKeyword:x=?BSJSParser._isKeyword(x),name=iName:n/*~isKeyword(n)*/->n,keyword=iName:kisKeyword(k)->k,namespaceIdSplitted=name:n'.'namespaceIdSplitted:r->{[n].concat(r)}|name:n->{[n]},namespaceId=namespaceIdSplitted:nArr->nArr.join('.'),nsFollowedBy:x=namespaceIdSplitted:nArr?(nArr.last()===x)->nArr.slice(0,nArr.length-1).join('.'),nsWith:x=namespaceIdSplitted:nArr?nArr.include(x)->{vari=nArr.indexOf(x);{before:nArr.slice(0,i).join('.'),after:nArr.slice(i+1,nArr.length).join('.')}},/*functions*/basicFunction="function"spaces(name:n|empty)chunk('(',')')spaceschunk('{','}')->n,func=basicFunction:fn|"var"(space)+name:fnspaces'='spacesbasicFunction->fn,functionDef=pos:p(func:fn|'('func:fn')')somethingRelateddefEnd->{this._fragment(fn,'functionDef',p,this.pos()-1)},staticProperty=pos:pspacesNoNlnamespaceIdSplitted:nsArr?(nsArr.length>1)spaces'='somethingBigRelateddefEnd->{this._fragment(nsArr.last(),'staticProperty',p,this.pos()-1,null,{className:nsArr.slice(0,nsArr.length-1).join('.'),_isStatic:true})},/*methods*/methodModificationDef=pos:pspacesNoNlnsWith('prototype'):specspaces'='spacessomethingBigRelateddefEnd->{this._fragment(spec.after,'methodModificationDef',p,this.pos()-1,null,{className:spec.before,_isStatic:false})},/*properties*/protoDef=pos:pspacesNoNlname:pName':'spaces(basicFunction(somethingBigRelated|empty)|somethingBigRelated)classElemDefEnd->{this._fragment(pName,'protoDef',p,this.pos()-1,null,{_isStatic:false})},getterOrSetter=pos:pspacesNoNl("get"|"set")spacesname:pNamechunk('(',')')spaceschunk('{','}')classElemDefEnd->{this._fragment(pName,'protoDef',p,this.pos()-1,null,{_isStatic:false})},propertyDef=(protoDef|methodModificationDef|staticProperty|getterOrSetter):spec->{spec.type='propertyDef';spec},/*classstuff*/classElems=(categoryDef:defsclassElemDefEnd->defs)+:allDefs->allDefs.invoke('subElements').flatten(),categoryDef=spacespos:pcategory:catName(classElemsInCategory:defsclassElemDefEnd->defs)+:allDefs->{varclassElemDefs=allDefs.flatten();varcatDef=this._fragment(catName,'categoryDef',p,this.pos()-1,classElemDefs);classElemDefs.collect(function(def){def.category=catDef;returndef});catDef},category=(categoryName:namespaces','->name|empty->{Function.defaultCategoryName}),categoryName=(fromTo('\'','\'')|fromTo('"','"')):name->name.join(''),classElemsInCategory=spaces'{'(spacespropertyDef:pDspaces->pD)*:defsspaces'}'->defs,restKlassDef=','spacesclassElems:descriptors->{{classElems:descriptors}}|(','spacesklass)+:traits','spacesclassElems:descriptors->{{traits:traits,classElems:descriptors}}|(','spacesklass)+:traits->{{traits:traits,classElems:[]}}|','token('{')spacestoken('}')->{{classElems:[]}}|spaces->{{classElems:[]}},klass=namespaceId,klassName=spaces('\''|'"')klass:n('\''|'"')spaces->n,klassDef=pos:pnsFollowedBy("subclass"):sName'('klassName:kNamerestKlassDef:spec')'defEnd->{varcategories=[];spec.classElems.forEach(function(ea){ea.className=kName;if(ea.category)categories.push(ea.category);});categories=categories.uniq()this._fragment(kName,'klassDef',p,this.pos()-1,spec.classElems,{traits:spec.traits,superclassName:sName,categories:categories})},basicKlassExt="Object.extend"'('klass:nrestKlassDef:spectoken(')')->{spec.classElems.forEach(function(ea){ea.className=n;ea._isStatic=true});{name:n,traits:spec.traits,subElements:spec.classElems}}|(nsFollowedBy("addMethods"):n|nsFollowedBy("addProperties"):n)'('classElems:clElemsspaces')'->{clElems.forEach(function(ea){ea.className=n;ea._isStatic=false});{name:n,subElements:clElems}}|"layerClass"'('namespaceId:layerNamespaces','spacesklass:nrestKlassDef:spectoken(')')->{spec.classElems.forEach(function(ea){ea.layerName=layerName;ea.className=n;ea._isStatic=false});{name:n,layerName:layerName,subElements:spec.classElems}}|"layerObject"'('namespaceId:layerNamespaces','spacesklass:nrestKlassDef:spectoken(')')->{spec.classElems.forEach(function(ea){ea.layerName=layerName;ea.className=n;ea._isStatic=true});{name:n,layerName:layerName,subElements:spec.classElems}},klassExtensionDef=pos:pbasicKlassExt:specdefEnd->{this._fragment(spec.name,'klassExtensionDef',p,this.pos()-1,spec.subElements,{traits:spec.traits})},/*'object'stuff*/restObjDef=classElems:propsAndMethodDescrsspaces->{propsAndMethodDescrs.forEach(function(ea){ea._isStatic=true});propsAndMethodDescrs},objectDef=pos:p("var"spacesnamespaceId:o|namespaceId:o)spaces'='spacesrestObjDef:propsAndMethodDescrsdefEnd->{this._fragment(o,'objectDef',p,this.pos()-1,propsAndMethodDescrs)},/*ometastuff*/ometaParameter=':'name:nspaces->n,ometaParameters=ometaParameter*,ometaRuleDef=pos:pname:nspacesometaParameters:a('='|"->")(~','(chunk('(',')')|chunk('{','}')|chunk('\'','\'')|chunk('"','"')|~'}'anything))*:body(','|empty)->{this._fragment(n,'ometaRuleDef',p,this.pos()-1,[],{parameters:a})},ometaInherit="<:"spacesname:sn->sn|empty->{null},ometaDef=pos:p"ometa"spacesname:nspaceometaInherit:snspaces'{'spaces(ometaRuleDef:dspaces->d)*:defsspaces'}'defEnd->{this._fragment(n,'ometaDef',p,this.pos()-1,defs,{superclassName:sn})},/*otherStuff*///comment=descriptor:dspacesNoNl/*(fromTo('//','\n')|fromTo('/*','*/'))spacesNoNl*/->{d.stopIndex=this.pos()-1;d.type='comment';d},comment=pos:pspace+->{this._fragment(null,'comment',p,this.pos()-1)},blankLine=pos:p(nl|(char:c?(c.charCodeAt(0)===32))*nl)->{this._fragment(null,'blankLine',p,this.pos()-1)},copDef=pos:p"cop.create("klassName:n")"spacesNoNlnl*copSubElement*:subsspacesdefEnd->{this._fragment(n,'copDef',p,this.pos()-1,subs)},copSubElement=pos:pspaces'.'(copRefinement|somethingBigRelated:blob->{name:blob.flatten().join('').replace('\n',''),subElementSpec:{}}):spec->{this._fragment(spec.name,'copSubElement',p,this.pos()-1,spec.subElementSpec.classElems,{traits:spec.subElementSpec.traits,refineSelector:spec.refineSelector})},copRefinement=("refineClass"|"refineObject"):sel'('klass:nrestKlassDef:spec')'->{{name:n,refineSelector:sel,subElementSpec:spec}},unknown=pos:psomethingBigRelateddefEnd->{this._fragment(null,'unknown',p,this.pos()-1)}};AddmoduleLoadallLineNoRefreshEvalonSortViewas...classesfunctionsobjectsLKFileParser.ometa:LKFileParserWikicontrol