summaryrefslogtreecommitdiff
path: root/js/dojo/dojox/collections/_base.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo/dojox/collections/_base.js')
-rw-r--r--js/dojo/dojox/collections/_base.js105
1 files changed, 105 insertions, 0 deletions
diff --git a/js/dojo/dojox/collections/_base.js b/js/dojo/dojox/collections/_base.js
new file mode 100644
index 0000000..aaee97c
--- /dev/null
+++ b/js/dojo/dojox/collections/_base.js
@@ -0,0 +1,105 @@
+//>>built
+define("dojox/collections/_base", ["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/array"],
+ function(dojo, lang, arr){
+ var collections = lang.getObject("dojox.collections", true);
+
+/*=====
+ collections = dojox.collections;
+=====*/
+
+ collections.DictionaryEntry=function(/* string */k, /* object */v){
+ // summary
+ // return an object of type dojox.collections.DictionaryEntry
+ this.key=k;
+ this.value=v;
+ this.valueOf=function(){
+ return this.value; // object
+ };
+ this.toString=function(){
+ return String(this.value); // string
+ };
+ }
+
+ /* Iterators
+ * The collections.Iterators (Iterator and DictionaryIterator) are built to
+ * work with the Collections included in this module. However, they *can*
+ * be used with arrays and objects, respectively, should one choose to do so.
+ */
+ collections.Iterator=function(/* array */a){
+ // summary
+ // return an object of type dojox.collections.Iterator
+ var position=0;
+ this.element=a[position]||null;
+ this.atEnd=function(){
+ // summary
+ // Test to see if the internal cursor has reached the end of the internal collection.
+ return (position>=a.length); // bool
+ };
+ this.get=function(){
+ // summary
+ // Get the next member in the collection.
+ if(this.atEnd()){
+ return null; // object
+ }
+ this.element=a[position++];
+ return this.element; // object
+ };
+ this.map=function(/* function */fn, /* object? */scope){
+ // summary
+ // Functional iteration with optional scope.
+ return arr.map(a, fn, scope);
+ };
+ this.reset=function(){
+ // summary
+ // reset the internal cursor.
+ position=0;
+ this.element=a[position];
+ };
+ }
+
+ /* Notes:
+ * The DictionaryIterator no longer supports a key and value property;
+ * the reality is that you can use this to iterate over a JS object
+ * being used as a hashtable.
+ */
+ collections.DictionaryIterator=function(/* object */obj){
+ // summary
+ // return an object of type dojox.collections.DictionaryIterator
+ var a=[]; // Create an indexing array
+ var testObject={};
+ for(var p in obj){
+ if(!testObject[p]){
+ a.push(obj[p]); // fill it up
+ }
+ }
+ var position=0;
+ this.element=a[position]||null;
+ this.atEnd=function(){
+ // summary
+ // Test to see if the internal cursor has reached the end of the internal collection.
+ return (position>=a.length); // bool
+ };
+ this.get=function(){
+ // summary
+ // Get the next member in the collection.
+ if(this.atEnd()){
+ return null; // object
+ }
+ this.element=a[position++];
+ return this.element; // object
+ };
+ this.map=function(/* function */fn, /* object? */scope){
+ // summary
+ // Functional iteration with optional scope.
+ return arr.map(a, fn, scope);
+ };
+ this.reset=function() {
+ // summary
+ // reset the internal cursor.
+ position=0;
+ this.element=a[position];
+ };
+ };
+
+ return collections;
+});