]> jfr.im git - irc/quakenet/qwebirc.git/blobdiff - js/qhash.js
normalise line endings
[irc/quakenet/qwebirc.git] / js / qhash.js
index f76199b95fc90aca004d9972eed83fe3fb480fc8..f18e0fca21722df07751aacb4141414750f342fb 100644 (file)
-QHash = function(def) {\r
-  this.__map = {};\r
-  this.length = 0;\r
-\r
-  if(def !== undefined) {\r
-    var h = Object.prototype.hasOwnProperty;\r
-    for (var k in def) {\r
-      if(!h.call(def, k))\r
-        continue;\r
-      this.put(k, def[k]);\r
-    }\r
-  }\r
-};\r
-\r
-QHash.prototype.__toKey = function(key) {\r
-  if(typeof(key) !== "string")\r
-    throw new TypeError("Not a string: " + key);\r
-  return key + "$";\r
-};\r
-\r
-QHash.prototype.get = function(key) {\r
-  return this.__map[this.__toKey(key)];\r
-};\r
-\r
-QHash.prototype.put = function(key, value) {\r
-  key = this.__toKey(key);\r
-\r
-  var exists = key in this.__map;\r
-  var oldValue = this.__map[key];\r
-\r
-  this.__map[key] = value;\r
-\r
-  if(!exists) {\r
-    this.length++;\r
-    return null;\r
-  }\r
-\r
-  return oldValue;\r
-};\r
-\r
-QHash.prototype.contains = function(key) {\r
-  return this.__toKey(key) in this.__map;\r
-};\r
-\r
-QHash.prototype.remove = function(key) {\r
-  key = this.__toKey(key);\r
-\r
-  var exists = key in this.__map;\r
-  if(!exists)\r
-    return null;\r
-\r
-  var oldValue = this.__map[key];\r
-  delete this.__map[key];\r
-  this.length--;\r
-\r
-  return oldValue;\r
-};\r
-\r
-QHash.prototype.each = function(fn, def) {\r
-  var h = Object.prototype.hasOwnProperty;\r
-  var m = this.__map;\r
-  for(var k in m) {\r
-    if(!h.call(m, k))\r
-      continue;\r
-\r
-    var break_ = fn.call(def, k.substr(0, k.length - 1), m[k]) !== undefined;\r
-    if(break_)\r
-      return break_;\r
-  }\r
-};\r
-\r
-QHash.prototype.isEmpty = function() {\r
-  return this.length == 0;\r
-};\r
-\r
-QHash.prototype.map = function(fn, def) {\r
-  var l = [];\r
-  this.each(function(k, v) {\r
-    l.push(fn.call(def, k, v));\r
-  });\r
-  return l;\r
-};\r
-\r
-QHash.prototype.keys = function() {\r
-  return this.map(function(k) { return k; });\r
-};\r
-\r
-QHash.prototype.values = function() {\r
-  return this.map(function(k, v) { return v; });\r
-};\r
-\r
-QHash.prototype.items = function() {\r
-  return this.map(function(k, v) { return [k, v]; });\r
-};\r
-\r
-QHash.prototype.toString = function() {\r
-  var m = this.map(function(k, v) {\r
-    return k + "=" + v;\r
-  }, this);\r
-\r
-  return "{QHash length=" + this.length + " map={" + m + "}}";\r
-};\r
-\r
-QSet = function() {\r
-  this.__map = new QHash();\r
-\r
-  this.length = 0;\r
-  for(var i=0;i<arguments.length;i++)\r
-    this.add(arguments[i]);\r
-};\r
-\r
-QSet.prototype.add = function(value) {\r
-  var v = this.__map.put(value, true);\r
-  if(v !== true)\r
-    this.length = this.__map.length;\r
-\r
-  return v;\r
-};\r
-\r
-QSet.prototype.contains = function(value) {\r
-  return this.__map.contains(value);\r
-};\r
-\r
-QSet.prototype.remove = function(value) {\r
-  var v = this.__map.remove(value, true);\r
-  if(v)\r
-    this.length = this.__map.length;\r
-\r
-  return v;\r
-};\r
-\r
-QSet.prototype.each = function(fn, def) {\r
-  return this.__map.each(fn, def);\r
-};\r
-\r
-QSet.prototype.values = function() {\r
-  return this.__map.keys();\r
-}\r
-\r
-QSet.prototype.isEmpty = function() {\r
-  return this.length == 0;\r
-};\r
-\r
-QSet.prototype.map = function(fn, def) {\r
-  return this.__map.map(fn, def);\r
-};\r
-\r
-QSet.prototype.toString = function(value) {\r
-  return "{QSet length=" + this.length + " set={" + this.values() + "}}";\r
-};\r
+QHash = function(def) {
+  this.__map = {};
+  this.length = 0;
+
+  if(def !== undefined) {
+    var h = Object.prototype.hasOwnProperty;
+    for (var k in def) {
+      if(!h.call(def, k))
+        continue;
+      this.put(k, def[k]);
+    }
+  }
+};
+
+QHash.prototype.__toKey = function(key) {
+  if(typeof(key) !== "string")
+    throw new TypeError("Not a string: " + key);
+  return key + "$";
+};
+
+QHash.prototype.get = function(key) {
+  return this.__map[this.__toKey(key)];
+};
+
+QHash.prototype.put = function(key, value) {
+  key = this.__toKey(key);
+
+  var exists = key in this.__map;
+  var oldValue = this.__map[key];
+
+  this.__map[key] = value;
+
+  if(!exists) {
+    this.length++;
+    return null;
+  }
+
+  return oldValue;
+};
+
+QHash.prototype.contains = function(key) {
+  return this.__toKey(key) in this.__map;
+};
+
+QHash.prototype.remove = function(key) {
+  key = this.__toKey(key);
+
+  var exists = key in this.__map;
+  if(!exists)
+    return null;
+
+  var oldValue = this.__map[key];
+  delete this.__map[key];
+  this.length--;
+
+  return oldValue;
+};
+
+QHash.prototype.each = function(fn, def) {
+  var h = Object.prototype.hasOwnProperty;
+  var m = this.__map;
+  for(var k in m) {
+    if(!h.call(m, k))
+      continue;
+
+    var break_ = fn.call(def, k.substr(0, k.length - 1), m[k]) !== undefined;
+    if(break_)
+      return break_;
+  }
+};
+
+QHash.prototype.isEmpty = function() {
+  return this.length == 0;
+};
+
+QHash.prototype.map = function(fn, def) {
+  var l = [];
+  this.each(function(k, v) {
+    l.push(fn.call(def, k, v));
+  });
+  return l;
+};
+
+QHash.prototype.keys = function() {
+  return this.map(function(k) { return k; });
+};
+
+QHash.prototype.values = function() {
+  return this.map(function(k, v) { return v; });
+};
+
+QHash.prototype.items = function() {
+  return this.map(function(k, v) { return [k, v]; });
+};
+
+QHash.prototype.toString = function() {
+  var m = this.map(function(k, v) {
+    return k + "=" + v;
+  }, this);
+
+  return "{QHash length=" + this.length + " map={" + m + "}}";
+};
+
+QSet = function() {
+  this.__map = new QHash();
+
+  this.length = 0;
+  for(var i=0;i<arguments.length;i++)
+    this.add(arguments[i]);
+};
+
+QSet.prototype.add = function(value) {
+  var v = this.__map.put(value, true);
+  if(v !== true)
+    this.length = this.__map.length;
+
+  return v;
+};
+
+QSet.prototype.contains = function(value) {
+  return this.__map.contains(value);
+};
+
+QSet.prototype.remove = function(value) {
+  var v = this.__map.remove(value, true);
+  if(v)
+    this.length = this.__map.length;
+
+  return v;
+};
+
+QSet.prototype.each = function(fn, def) {
+  return this.__map.each(fn, def);
+};
+
+QSet.prototype.values = function() {
+  return this.__map.keys();
+}
+
+QSet.prototype.isEmpty = function() {
+  return this.length == 0;
+};
+
+QSet.prototype.map = function(fn, def) {
+  return this.__map.map(fn, def);
+};
+
+QSet.prototype.toString = function(value) {
+  return "{QSet length=" + this.length + " set={" + this.values() + "}}";
+};