Version 1
[yaffs-website] / node_modules / phridge / lib / serializeFn.js
diff --git a/node_modules/phridge/lib/serializeFn.js b/node_modules/phridge/lib/serializeFn.js
new file mode 100755 (executable)
index 0000000..5296d69
--- /dev/null
@@ -0,0 +1,28 @@
+"use strict";\r
+\r
+/**\r
+ * Serializes the function and its arguments to send it to stdin.\r
+ *\r
+ * @param {Function} fn\r
+ * @param {Array} args\r
+ * @returns {string}\r
+ */\r
+function serializeFn(fn, args) {\r
+    var fnIsSync = args.length === fn.length;\r
+    var src;\r
+\r
+    args = args.map(JSON.stringify);\r
+    args.unshift("context");\r
+\r
+    if (fnIsSync) {\r
+        src = "resolve((" + fn.toString() + ").call(" + args.join() + "));";\r
+    } else {\r
+        args.push("resolve", "reject");\r
+        src = "(" + fn.toString() + ").call(" + args.join() + ");";\r
+    }\r
+\r
+    // Currently sourceURLs aren't supported by PhantomJS but maybe in the future\r
+    return src + "//# sourceURL=phridge.js";\r
+}\r
+\r
+module.exports = serializeFn;
\ No newline at end of file