Marko v3: Restored hot reload

This commit is contained in:
Patrick Steele-Idem 2016-02-12 17:26:49 -07:00
parent acb4d30886
commit f00d17bc20
8 changed files with 48 additions and 7 deletions

View File

@ -127,6 +127,12 @@ function getLastModified(path, options, callback) {
callback(null, -1); // TODO Implement getLastModified callback(null, -1); // TODO Implement getLastModified
} }
function clearCaches() {
exports.taglibLookup.clearCache();
exports.taglibFinder.clearCache();
exports.taglibLoader.clearCache();
}
exports.createBuilder = createBuilder; exports.createBuilder = createBuilder;
exports.compileFile = compileFile; exports.compileFile = compileFile;
exports.compile = compile; exports.compile = compile;
@ -136,10 +142,12 @@ exports.getLastModified = getLastModified;
exports.createWalker = createWalker; exports.createWalker = createWalker;
exports.builder = Builder.DEFAULT_BUILDER; exports.builder = Builder.DEFAULT_BUILDER;
exports.configure = configure; exports.configure = configure;
exports.clearCaches = clearCaches;
var taglibLookup = require('./taglib-lookup'); var taglibLookup = require('./taglib-lookup');
exports.taglibLookup = taglibLookup; exports.taglibLookup = taglibLookup;
exports.taglibLoader = require('./taglib-loader'); exports.taglibLoader = require('./taglib-loader');
exports.taglibFinder = require('./taglib-finder');
taglibLookup.registerTaglib(require.resolve('../taglibs/core/marko.json')); taglibLookup.registerTaglib(require.resolve('../taglibs/core/marko.json'));
taglibLookup.registerTaglib(require.resolve('../taglibs/layout/marko.json')); taglibLookup.registerTaglib(require.resolve('../taglibs/layout/marko.json'));

View File

@ -140,11 +140,11 @@ function find(dirname, registeredTaglibs) {
return found; return found;
} }
function clearCaches() { function clearCache() {
existsCache = {}; existsCache = {};
findCache = {}; findCache = {};
taglibsForNodeModulesDirCache = {}; taglibsForNodeModulesDirCache = {};
} }
exports.find = find; exports.find = find;
exports.clearCaches = clearCaches; exports.clearCache = clearCache;

View File

@ -35,4 +35,8 @@ function load(path) {
return taglib; return taglib;
} }
exports.clearCache = function() {
cache = {};
};
exports.load = load; exports.load = load;

View File

@ -16,7 +16,7 @@
'use strict'; 'use strict';
exports.registerTaglib = registerTaglib; exports.registerTaglib = registerTaglib;
exports.buildLookup = buildLookup; exports.buildLookup = buildLookup;
exports.clearCaches = clearCaches; exports.clearCache = clearCache;
var taglibLoader = require('../taglib-loader'); var taglibLoader = require('../taglib-loader');
var taglibFinder = require('../taglib-finder'); var taglibFinder = require('../taglib-finder');
@ -75,6 +75,6 @@ function registerTaglib(taglib) {
exports.registeredTaglibs.push(taglib); exports.registeredTaglibs.push(taglib);
} }
function clearCaches() { function clearCache() {
lookupCache = {}; lookupCache = {};
} }

View File

@ -0,0 +1 @@
- Hello ${data.name}!

View File

@ -8,7 +8,7 @@ var fs = require('fs');
require('../node-require').install(); require('../node-require').install();
xdescribe('hot-reload' , function() { describe('hot-reload' , function() {
before(function() { before(function() {
require('../hot-reload').enable(); require('../hot-reload').enable();
require('../compiler').defaultOptions.checkUpToDate = false; require('../compiler').defaultOptions.checkUpToDate = false;
@ -17,7 +17,7 @@ xdescribe('hot-reload' , function() {
it('should allow a required template to be hot reloaded', function() { it('should allow a required template to be hot reloaded', function() {
var srcTemplatePath = nodePath.join(__dirname, 'fixtures/templates/api-tests/hello.marko'); var srcTemplatePath = nodePath.join(__dirname, 'fixtures/hot-reload/hot-reload.marko');
var templateSrc = fs.readFileSync(srcTemplatePath, { encoding: 'utf8' }); var templateSrc = fs.readFileSync(srcTemplatePath, { encoding: 'utf8' });
var tempTemplatePath = nodePath.join(__dirname, 'temp/hello.marko'); var tempTemplatePath = nodePath.join(__dirname, 'temp/hello.marko');
@ -39,7 +39,7 @@ xdescribe('hot-reload' , function() {
it('should allow a non-required template to be hot reloaded', function() { it('should allow a non-required template to be hot reloaded', function() {
var srcTemplatePath = nodePath.join(__dirname, 'fixtures/templates/api-tests/hello.marko'); var srcTemplatePath = nodePath.join(__dirname, 'fixtures/hot-reload/hot-reload.marko');
var templateSrc = fs.readFileSync(srcTemplatePath, { encoding: 'utf8' }); var templateSrc = fs.readFileSync(srcTemplatePath, { encoding: 'utf8' });
var tempTemplatePath = nodePath.join(__dirname, 'temp/hello2.marko'); var tempTemplatePath = nodePath.join(__dirname, 'temp/hello2.marko');

14
test/temp/hello.marko.js Normal file
View File

@ -0,0 +1,14 @@
function create(__helpers) {
var str = __helpers.s,
empty = __helpers.e,
notEmpty = __helpers.ne,
escapeXml = __helpers.x;
return function render(data, out) {
out.w("Hello " +
escapeXml(data.name) +
"!!");
};
}
(module.exports = require("marko").c(__filename)).c(create);

14
test/temp/hello2.marko.js Normal file
View File

@ -0,0 +1,14 @@
function create(__helpers) {
var str = __helpers.s,
empty = __helpers.e,
notEmpty = __helpers.ne,
escapeXml = __helpers.x;
return function render(data, out) {
out.w("Hello " +
escapeXml(data.name) +
"!!");
};
}
(module.exports = require("marko").c(__filename)).c(create);