marko/lib/compiler/TemplateCompiler_node.js
2014-01-23 21:30:54 -07:00

28 lines
1.1 KiB
JavaScript

var createError = require('raptor-util').createError;
'use strict';
var nodeRequire = require;
var target = require('./TemplateCompiler');
var vm = require('vm');
require('raptor-util').extend(target, {
_eval: function (compiledSrc, resource) {
var filePath;
if (resource) {
if (typeof resource === 'string') {
filePath = resource;
} else if (require('raptor-resources').isResource(resource)) {
filePath = resource.isFileResource() ? resource.getFilePath() : resource.getURL();
}
}
try {
if (filePath && require('raptor-files').exists(filePath)) {
//This is a hack, but line numbers for SyntaxErrors are getting lost if we don't use require
delete nodeRequire.cache[filePath];
nodeRequire(filePath);
} else {
vm.runInThisContext(compiledSrc, filePath || null);
}
} catch (e) {
throw createError(new Error('Unable to load compile templated at path "' + filePath + '". Exception: ' + e), e);
}
}
});