DOMite.st 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. Smalltalk createPackage: 'DOMite'!
  2. Object subclass: #Domite
  3. instanceVariableNames: 'element reference'
  4. package: 'DOMite'!
  5. !Domite methodsFor: 'accessing'!
  6. element
  7. ^ element
  8. !
  9. element: anObject
  10. element := anObject
  11. !
  12. reference
  13. ^ reference
  14. !
  15. reference: anObject
  16. reference := anObject
  17. ! !
  18. !Domite methodsFor: 'deletion'!
  19. clearHere
  20. <
  21. var element = self['@element'], child;
  22. while (child = element.firstChild) element.removeChild(child);
  23. self['@reference'] = null;
  24. >
  25. ! !
  26. !Domite methodsFor: 'insertion'!
  27. insertDomite: aDomite
  28. self insertElement: aDomite element.
  29. ^ aDomite
  30. !
  31. insertElement: aDomElement
  32. self element
  33. insertBefore: aDomElement
  34. reference: self reference
  35. !
  36. insertString: aString
  37. self insertElement: (
  38. document createTextNode: aString asString )
  39. ! !
  40. !Domite methodsFor: 'navigation'!
  41. seekAfterHere
  42. self
  43. reference: self element nextSibling;
  44. element: self element parentNode
  45. !
  46. seekBeforeHere
  47. self
  48. reference: self element;
  49. element: self element parentNode
  50. !
  51. seekHereEnd
  52. self reference: nil asJSON "null"
  53. !
  54. seekHereStart
  55. self reference: self element firstChild
  56. ! !
  57. !Domite methodsFor: 'testing'!
  58. canSeekOutOfHere
  59. ^ self element parentNode notNil
  60. ! !
  61. !Domite class methodsFor: 'instance creation'!
  62. fromElement: aDomElement
  63. ^ self new
  64. element: aDomElement;
  65. yourself
  66. !
  67. fromElement: aDomElement cursorBefore: anotherDomElement
  68. ^ self new
  69. element: aDomElement;
  70. referenceElement: anotherDomElement;
  71. yourself
  72. !
  73. newElement: aString
  74. ^ self fromElement: (document createElement: aString)
  75. !
  76. open
  77. ^ self fromElement: document createDocumentFragment
  78. ! !