Smalltalk createPackage: 'DOMite'! Object subclass: #Domite instanceVariableNames: 'element reference' package: 'DOMite'! !Domite methodsFor: 'accessing'! element ^ element ! element: anObject element := anObject ! reference ^ reference ! reference: anObject reference := anObject ! ! !Domite methodsFor: 'deletion'! clearHere < var element = self['@element'], child; while (child = element.firstChild) element.removeChild(child); self['@reference'] = null; > ! ! !Domite methodsFor: 'insertion'! insertDomite: aDomite self insertElement: aDomite element. ^ aDomite ! insertElement: aDomElement self element insertBefore: aDomElement reference: self reference ! insertString: aString self insertElement: ( document createTextNode: aString asString ) ! ! !Domite methodsFor: 'navigation'! seekAfterHere self reference: self element nextSibling; element: self element parentNode ! seekBeforeHere self reference: self element; element: self element parentNode ! seekHereEnd self reference: nil asJSON "null" ! seekHereStart self reference: self element firstChild ! ! !Domite methodsFor: 'testing'! canSeekOutOfHere ^ self element parentNode notNil ! ! !Domite class methodsFor: 'instance creation'! fromElement: aDomElement ^ self new element: aDomElement; yourself ! fromElement: aDomElement cursorBefore: anotherDomElement ^ self new element: aDomElement; referenceElement: anotherDomElement; yourself ! newElement: aString ^ self fromElement: (document createElement: aString) ! open ^ self fromElement: document createDocumentFragment ! !