forked from andyedinborough/RazorJS
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrazor.node.js
More file actions
48 lines (40 loc) · 1.19 KB
/
Copy pathrazor.node.js
File metadata and controls
48 lines (40 loc) · 1.19 KB
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
var wrapper;
extend(Razor, {
getViewFile: function (viewName) {
if (!viewName.match(/\w+\.\w+$/i)) {
viewName += '.html';
}
if(!~viewName.indexOf(':') && !(/^\.?\//).test(viewName)) {
viewName = './views/' + viewName;
}
return viewName;
},
findView: function (viewName, cb) {
var fs = require('fs'), file = Razor.getViewFile(viewName);
if(cb){
fs.readFile(file, function (err, data) {
cb(err ? undefined : data.toString('utf-8'));
});
} else {
return fs.readFileSync(file).toString('utf-8');
}
},
getViewEtag: function(viewName){
var fs = require('fs'),
file = Razor.getViewFile(viewName),
stat = fs.statSync(file);
return stat.mtime + '';
},
precompile: function(code, page) {
if(!page) page = {};
code = 'var page1 = ' + JSON.stringify(page) +
', func = function(){ ' + Razor.parse(code) + ' }';
if(!wrapper) wrapper = Razor.compile('');
code = '(function(){ ' + code + ';\nreturn ' + wrapper + '; })()';
code = code
.replace(/(\W)extend(\W)/g, '$1Razor.utils.extend$2')
.replace(/(\W)basePage(\W)/g, '$1Razor.utils.basePage$2');
return code;
}
});
module.Razor = module.exports = Razor;