Herbert Vojčík 9 роки тому
батько
коміт
ced2903e88
2 змінених файлів з 121 додано та 0 видалено
  1. 99 0
      src/DOMite.js
  2. 22 0
      src/DOMite.st

+ 99 - 0
src/DOMite.js

@@ -349,6 +349,41 @@ messageSends: ["isNil", "element"]
 }),
 $globals.Domite);
 
+$core.addMethod(
+$core.method({
+selector: "next",
+protocol: 'reading',
+fn: function (){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1,$2;
+$1=self._atEnd();
+if($core.assert($1)){
+return nil;
+} else {
+var result;
+result=self._peek();
+result;
+self._setToNext();
+$2=result;
+return $2;
+};
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"next",{},$globals.Domite)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "next\x0a\x09self atEnd\x0a\x09\x09ifTrue: [ ^ nil ]\x0a\x09\x09ifFalse: [ | result |\x0a\x09\x09\x09result := self peek.\x0a\x09\x09\x09self setToNext.\x0a\x09\x09\x09^ result ]",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["ifTrue:ifFalse:", "atEnd", "peek", "setToNext"]
+}),
+$globals.Domite);
+
 $core.addMethod(
 $core.method({
 selector: "nextPut:",
@@ -500,6 +535,70 @@ messageSends: ["addEventListener:block:useCapture:", "element"]
 }),
 $globals.Domite);
 
+$core.addMethod(
+$core.method({
+selector: "peek",
+protocol: 'reading',
+fn: function (){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $2,$1,$receiver;
+$2=self._reference();
+if(($receiver = $2) == null || $receiver.isNil){
+$1=$2;
+} else {
+var ref;
+ref=$receiver;
+$1=$recv(self._class())._fromElement_(ref);
+};
+return $1;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"peek",{},$globals.Domite)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "peek\x0a\x09^ self reference\x0a\x09\x09ifNotNil: [ :ref | self class fromElement: ref ]",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["ifNotNil:", "reference", "fromElement:", "class"]
+}),
+$globals.Domite);
+
+$core.addMethod(
+$core.method({
+selector: "prev",
+protocol: 'reading',
+fn: function (){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1,$2;
+$1=self._atStart();
+if($core.assert($1)){
+return nil;
+} else {
+self._setToPrev();
+$2=self._peek();
+return $2;
+};
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"prev",{},$globals.Domite)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "prev\x0a\x09self atStart\x0a\x09\x09ifTrue: [ ^ nil ]\x0a\x09\x09ifFalse: [ self setToPrev. ^ self peek ]",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["ifTrue:ifFalse:", "atStart", "setToPrev", "peek"]
+}),
+$globals.Domite);
+
 $core.addMethod(
 $core.method({
 selector: "propAt:",

+ 22 - 0
src/DOMite.st

@@ -191,6 +191,28 @@ setToPrev
 			ifNotNil: [ :ref | ref previousSibling ])]
 ! !
 
+!Domite methodsFor: 'reading'!
+
+next
+	self atEnd
+		ifTrue: [ ^ nil ]
+		ifFalse: [ | result |
+			result := self peek.
+			self setToNext.
+			^ result ]
+!
+
+peek
+	^ self reference
+		ifNotNil: [ :ref | self class fromElement: ref ]
+!
+
+prev
+	self atStart
+		ifTrue: [ ^ nil ]
+		ifFalse: [ self setToPrev. ^ self peek ]
+! !
+
 !Domite methodsFor: 'streaming'!
 
 putOn: aStream