--- /dev/null
+"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