Browse Source

Basic creation, insertion, deletion.

Herbert Vojčík 9 years ago
parent
commit
7002c5f9ce
2 changed files with 355 additions and 2 deletions
  1. 285 1
      src/DOMite.js
  2. 70 1
      src/DOMite.st

+ 285 - 1
src/DOMite.js

@@ -4,6 +4,290 @@ $core.addPackage('DOMite');
 $core.packages["DOMite"].innerEval = function (expr) { return eval(expr); };
 $core.packages["DOMite"].transport = {"type":"amd","amdNamespace":"domite"};
 
-$core.addClass('Domite', $globals.Object, [], 'DOMite');
+$core.addClass('Domite', $globals.Object, ['element', 'reference'], 'DOMite');
+$core.addMethod(
+$core.method({
+selector: "clearHere",
+protocol: 'deletion',
+fn: function (){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+
+	var element = self['@element'], child;
+	while (child = element.firstChild) element.removeChild(child);
+	self['@reference'] = null;;
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"clearHere",{},$globals.Domite)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "clearHere\x0a<\x0a\x09var element = self['@element'], child;\x0a\x09while (child = element.firstChild) element.removeChild(child);\x0a\x09self['@reference'] = null;\x0a>",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
+}),
+$globals.Domite);
+
+$core.addMethod(
+$core.method({
+selector: "element",
+protocol: 'accessing',
+fn: function (){
+var self=this;
+var $1;
+$1=self["@element"];
+return $1;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "element\x0a\x09^ element",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
+}),
+$globals.Domite);
+
+$core.addMethod(
+$core.method({
+selector: "element:",
+protocol: 'accessing',
+fn: function (anObject){
+var self=this;
+self["@element"]=anObject;
+return self;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["anObject"],
+source: "element: anObject\x0a\x09element := anObject",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
+}),
+$globals.Domite);
+
+$core.addMethod(
+$core.method({
+selector: "insertDomite:",
+protocol: 'insertion',
+fn: function (aDomite){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+self._insertElement_($recv(aDomite)._element());
+return aDomite;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"insertDomite:",{aDomite:aDomite},$globals.Domite)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aDomite"],
+source: "insertDomite: aDomite\x0a\x09self insertElement: aDomite element.\x0a\x09^ aDomite",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["insertElement:", "element"]
+}),
+$globals.Domite);
+
+$core.addMethod(
+$core.method({
+selector: "insertElement:",
+protocol: 'insertion',
+fn: function (aDomElement){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+$recv(self._element())._insertBefore_reference_(aDomElement,self._reference());
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"insertElement:",{aDomElement:aDomElement},$globals.Domite)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aDomElement"],
+source: "insertElement: aDomElement\x0a\x09self element\x0a\x09\x09insertBefore: aDomElement\x0a\x09\x09reference: self reference",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["insertBefore:reference:", "element", "reference"]
+}),
+$globals.Domite);
+
+$core.addMethod(
+$core.method({
+selector: "insertString:",
+protocol: 'insertion',
+fn: function (aString){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+self._insertElement_($recv(document)._createTextNode_($recv(aString)._asString()));
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"insertString:",{aString:aString},$globals.Domite)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aString"],
+source: "insertString: aString\x0a\x09self insertElement: (\x0a\x09\x09document createTextNode: aString asString )",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["insertElement:", "createTextNode:", "asString"]
+}),
+$globals.Domite);
+
+$core.addMethod(
+$core.method({
+selector: "reference",
+protocol: 'accessing',
+fn: function (){
+var self=this;
+var $1;
+$1=self["@reference"];
+return $1;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "reference\x0a\x09^ reference",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
+}),
+$globals.Domite);
+
+$core.addMethod(
+$core.method({
+selector: "reference:",
+protocol: 'accessing',
+fn: function (anObject){
+var self=this;
+self["@reference"]=anObject;
+return self;
+
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["anObject"],
+source: "reference: anObject\x0a\x09reference := anObject",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
+}),
+$globals.Domite);
+
+
+$core.addMethod(
+$core.method({
+selector: "fromElement:",
+protocol: 'instance creation',
+fn: function (aDomElement){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $2,$3,$1;
+$2=self._new();
+$recv($2)._element_(aDomElement);
+$3=$recv($2)._yourself();
+$1=$3;
+return $1;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"fromElement:",{aDomElement:aDomElement},$globals.Domite.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aDomElement"],
+source: "fromElement: aDomElement\x0a\x09^ self new\x0a\x09\x09element: aDomElement;\x0a\x09\x09yourself",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["element:", "new", "yourself"]
+}),
+$globals.Domite.klass);
+
+$core.addMethod(
+$core.method({
+selector: "fromElement:cursorBefore:",
+protocol: 'instance creation',
+fn: function (aDomElement,anotherDomElement){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $2,$3,$1;
+$2=self._new();
+$recv($2)._element_(aDomElement);
+$recv($2)._referenceElement_(anotherDomElement);
+$3=$recv($2)._yourself();
+$1=$3;
+return $1;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"fromElement:cursorBefore:",{aDomElement:aDomElement,anotherDomElement:anotherDomElement},$globals.Domite.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aDomElement", "anotherDomElement"],
+source: "fromElement: aDomElement cursorBefore: anotherDomElement\x0a\x09^ self new\x0a\x09\x09element: aDomElement;\x0a\x09\x09referenceElement: anotherDomElement;\x0a\x09\x09yourself",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["element:", "new", "referenceElement:", "yourself"]
+}),
+$globals.Domite.klass);
+
+$core.addMethod(
+$core.method({
+selector: "newElement:",
+protocol: 'instance creation',
+fn: function (aString){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=self._fromElement_($recv(document)._createElement_(aString));
+return $1;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"newElement:",{aString:aString},$globals.Domite.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aString"],
+source: "newElement: aString\x0a\x09^ self fromElement: (document createElement: aString)",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["fromElement:", "createElement:"]
+}),
+$globals.Domite.klass);
+
+$core.addMethod(
+$core.method({
+selector: "open",
+protocol: 'instance creation',
+fn: function (){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=self._fromElement_($recv(document)._createDocumentFragment());
+return $1;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"open",{},$globals.Domite.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "open\x0a\x09^ self fromElement: document createDocumentFragment",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["fromElement:", "createDocumentFragment"]
+}),
+$globals.Domite.klass);
 
 });

+ 70 - 1
src/DOMite.st

@@ -1,5 +1,74 @@
 Smalltalk createPackage: 'DOMite'!
 Object subclass: #Domite
-	instanceVariableNames: ''
+	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 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
+! !
+