Pārlūkot izejas kodu

Domite >> allAt:, Domite class >> allAt:

Herbert Vojčík 9 gadi atpakaļ
vecāks
revīzija
56057ad1f9
2 mainītis faili ar 129 papildinājumiem un 0 dzēšanām
  1. 111 0
      src/DOMite.js
  2. 18 0
      src/DOMite.st

+ 111 - 0
src/DOMite.js

@@ -72,6 +72,35 @@ messageSends: ["and:", "=", "class", "element", "reference"]
 }),
 $globals.Domite);
 
+$core.addMethod(
+$core.method({
+selector: "allAt:",
+protocol: 'accessing',
+fn: function (aString){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $2,$1;
+$2=self._class();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["class"]=1;
+//>>excludeEnd("ctx");
+$1=$recv($2)._wrap_($recv(self._class())._domListAsArray_($recv(self._element())._querySelectorAll_(aString)));
+return $1;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"allAt:",{aString:aString},$globals.Domite)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aString"],
+source: "allAt: aString\x0a\x09^ self class wrap: (self class domListAsArray: (self element querySelectorAll: aString))",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["wrap:", "class", "domListAsArray:", "querySelectorAll:", "element"]
+}),
+$globals.Domite);
+
 $core.addMethod(
 $core.method({
 selector: "asJQuery",
@@ -913,6 +942,31 @@ messageSends: ["ifFalse:", "atStart", "reference:", "ifNil:ifNotNil:", "referenc
 $globals.Domite);
 
 
+$core.addMethod(
+$core.method({
+selector: "allAt:",
+protocol: 'instance creation',
+fn: function (aString){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=self._wrap_(self._domListAsArray_($recv(document)._querySelectorAll_(aString)));
+return $1;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"allAt:",{aString:aString},$globals.Domite.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aString"],
+source: "allAt: aString\x0a\x09^ self wrap: (self domListAsArray: (document querySelectorAll: aString))",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["wrap:", "domListAsArray:", "querySelectorAll:"]
+}),
+$globals.Domite.klass);
+
 $core.addMethod(
 $core.method({
 selector: "at:",
@@ -938,6 +992,30 @@ messageSends: ["fromElement:", "querySelector:"]
 }),
 $globals.Domite.klass);
 
+$core.addMethod(
+$core.method({
+selector: "domListAsArray:",
+protocol: 'converting',
+fn: function (aDomList){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+return Array.prototype.slice.call(aDomList);
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"domListAsArray:",{aDomList:aDomList},$globals.Domite.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aDomList"],
+source: "domListAsArray: aDomList\x0a<return Array.prototype.slice.call(aDomList)>\x0a\x09",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: []
+}),
+$globals.Domite.klass);
+
 $core.addMethod(
 $core.method({
 selector: "fromElement:",
@@ -1112,6 +1190,39 @@ messageSends: ["fromElement:", "createDocumentFragment"]
 }),
 $globals.Domite.klass);
 
+$core.addMethod(
+$core.method({
+selector: "wrap:",
+protocol: 'converting',
+fn: function (aCollection){
+var self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=$recv(aCollection)._collect_((function(each){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
+return self._fromElement_(each);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
+return $1;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"wrap:",{aCollection:aCollection},$globals.Domite.klass)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["aCollection"],
+source: "wrap: aCollection\x0a\x09^ aCollection collect: [ :each | self fromElement: each ]",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["collect:", "fromElement:"]
+}),
+$globals.Domite.klass);
+
 $core.addMethod(
 $core.method({
 selector: "nextPutDomNode:",

+ 18 - 0
src/DOMite.st

@@ -54,6 +54,10 @@ in combination with `copy`, like
 
 !Domite methodsFor: 'accessing'!
 
+allAt: aString
+	^ self class wrap: (self class domListAsArray: (self element querySelectorAll: aString))
+!
+
 at: aString
 	^ self class fromElement: (self element querySelector: aString)
 !
@@ -237,8 +241,22 @@ isInvalid
 	^ self element isNil
 ! !
 
+!Domite class methodsFor: 'converting'!
+
+domListAsArray: aDomList
+<return Array.prototype.slice.call(aDomList)>
+!
+
+wrap: aCollection
+	^ aCollection collect: [ :each | self fromElement: each ]
+! !
+
 !Domite class methodsFor: 'instance creation'!
 
+allAt: aString
+	^ self wrap: (self domListAsArray: (document querySelectorAll: aString))
+!
+
 at: aString
 	^ self fromElement: (document querySelector: aString)
 !