mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
28 lines
1.1 KiB
JavaScript
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);
|
|
}
|
|
}
|
|
}); |