diff browser-couch.js @ 41:3fd3aacf33fb

Test suite now passes on Safari.
author Atul Varma <varmaa@toolness.com>
date Tue, 14 Apr 2009 10:40:30 -0700
parents cf2122f596c8
children 2d4a0ca10783
line wrap: on
line diff
--- a/browser-couch.js	Tue Apr 14 10:22:28 2009 -0700
+++ b/browser-couch.js	Tue Apr 14 10:40:30 2009 -0700
@@ -34,6 +34,15 @@
  *
  * ***** END LICENSE BLOCK ***** */
 
+function isArray(value) {
+  // Taken from "Remedial Javascript" by Douglas Crockford:
+  // http://javascript.crockford.com/remedial.html
+
+  return (typeof value.length === 'number' &&
+          !(value.propertyIsEnumerable('length')) &&
+          typeof value.splice === 'function');
+}
+
 var ModuleLoader = {
   LIBS: {JSON: "json2.js"},
 
@@ -42,7 +51,7 @@
     var i = 0;
     var lastLib = "";
 
-    if (libs.constructor.name != "Array")
+    if (!isArray(libs))
       libs = [libs];
 
     function loadNextLib() {
@@ -91,7 +100,7 @@
     if (typeof(obj) == "object") {
       var copy;
 
-      if (obj.constructor.name == "Array")
+      if (isArray(obj))
         copy = new Array();
       else
         copy = new Object();
@@ -204,7 +213,7 @@
       dict[key] = value;
     };
 
-    this.delete = function Dictionary_delete(key) {
+    this.remove = function Dictionary_delete(key) {
       delete dict[key];
 
       // TODO: If we're in JS 1.6 and have Array.indexOf(), we
@@ -250,7 +259,7 @@
     };
 
     this.put = function DB_put(document, cb) {
-      if (document.constructor.name == "Array") {
+      if (isArray(document)) {
         for (var i = 0; i < document.length; i++)
           dict.set(document[i].id, document[i]);
       } else