/
funcdServerSide.js
60 lines (50 loc) · 1.46 KB
/
funcdServerSide.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// Generated by CoffeeScript 1.3.3
(function() {
var Funcd, coffeescript, detectCallerPath, fs, path;
Funcd = require("./funcd");
coffeescript = require("coffee-script");
fs = require("fs");
path = require("path");
require.extensions['.funcd'] = function(module, filename) {
var content;
content = coffeescript.compile(fs.readFileSync(filename, 'utf8'), {
filename: filename
});
return module._compile(content, filename);
};
Funcd.prototype.coffeescript = function(options, inner) {
var code, jscode, self;
self = this;
if (arguments.length === 1) {
inner = options;
options = null;
}
code = inner;
if (typeof code === "function") {
code = inner();
}
jscode = coffeescript.compile(code, options);
return this.script({
type: "text/javascript"
}, jscode);
};
Funcd.renderToFile = function(sourceFilename, outFilename, options) {
var content;
options || (options = {});
content = Funcd.render(options, sourceFilename);
return fs.writeFileSync(outFilename, content);
};
detectCallerPath = function(referencePath, err) {
var i, match, _i, _len, _ref;
_ref = err.stack.match(/\(([^:]+).*\)$/mg);
for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {
match = _ref[i];
path = match.match(/\(([^:]+)/)[1];
if (path !== referencePath) {
return path;
}
}
return null;
};
module.exports = Funcd;
}).call(this);