mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
scan tags for all extensions
This commit is contained in:
parent
b355f1f217
commit
69eaee1a7b
1
.gitignore
vendored
1
.gitignore
vendored
@ -7,3 +7,4 @@
|
||||
*.orig
|
||||
.DS_Store
|
||||
coverage
|
||||
.nvmrc
|
||||
|
||||
@ -35,6 +35,15 @@ function createDefaultTagDef() {
|
||||
};
|
||||
}
|
||||
|
||||
function scanRequireExtensions(dir, childFilename, filename) {
|
||||
var path;
|
||||
for (var extension in require.extensions) {
|
||||
path = nodePath.join(dir, childFilename, filename + extension);
|
||||
if (fs.existsSync(path)) {
|
||||
return path; // short circuit loop
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {String} tagsConfigPath path to tag definition file
|
||||
@ -70,8 +79,8 @@ module.exports = function scanTagsDir(tagsConfigPath, tagsConfigDirname, dir, ta
|
||||
var tagDirname = nodePath.join(dir, childFilename);
|
||||
var tagFile = nodePath.join(dir, childFilename, 'marko-tag.json');
|
||||
var tag = null;
|
||||
var rendererFile = nodePath.join(dir, childFilename, 'renderer.js');
|
||||
var indexFile = nodePath.join(dir, childFilename, 'index.js');
|
||||
var rendererFile = scanRequireExtensions(dir, childFilename, 'renderer');
|
||||
var indexFile = scanRequireExtensions(dir, childFilename, 'index');
|
||||
var templateFile = nodePath.join(dir, childFilename, 'template.marko');
|
||||
var templateFileAlt = nodePath.join(dir, childFilename, 'template.html');
|
||||
var templateFileAlt2 = nodePath.join(dir, childFilename, 'template.marko.html');
|
||||
@ -98,9 +107,9 @@ module.exports = function scanTagsDir(tagsConfigPath, tagsConfigDirname, dir, ta
|
||||
}
|
||||
|
||||
if (!tagDef.renderer && !tagDef.template && !tagDef['code-generator'] && !tagDef['node-factory'] && !tagDef.transformer) {
|
||||
if (fs.existsSync(rendererFile)) {
|
||||
if (rendererFile) {
|
||||
tagDef.renderer = rendererFile;
|
||||
} else if (fs.existsSync(indexFile)) {
|
||||
} else if (indexFile) {
|
||||
tagDef.renderer = indexFile;
|
||||
} else if (fs.existsSync(templateFile)) {
|
||||
tagDef.template = templateFile;
|
||||
@ -134,4 +143,4 @@ module.exports = function scanTagsDir(tagsConfigPath, tagsConfigDirname, dir, ta
|
||||
tag.name = tag.name || tagName;
|
||||
taglib.addTag(tag);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@ -4,6 +4,7 @@ chai.config.includeStack = true;
|
||||
require('chai').should();
|
||||
var expect = require('chai').expect;
|
||||
var nodePath = require('path');
|
||||
var taglibLoader = require('../compiler').taglibLoader;
|
||||
|
||||
describe('taglib-loader' , function() {
|
||||
|
||||
@ -18,7 +19,6 @@ describe('taglib-loader' , function() {
|
||||
});
|
||||
|
||||
it('should load a taglib with shorthand attributes and tags', function() {
|
||||
var taglibLoader = require('../compiler').taglibLoader;
|
||||
var taglib = taglibLoader.load(nodePath.join(__dirname, 'fixtures/taglib-shorthand/marko.json'));
|
||||
expect(taglib != null).to.equal(true);
|
||||
|
||||
@ -39,5 +39,13 @@ describe('taglib-loader' , function() {
|
||||
expect(nestedTabTag.targetProperty).to.equal('tabs');
|
||||
});
|
||||
|
||||
it('should load a taglib with index*.js or render*.js', function() {
|
||||
var taglib = taglibLoader.load(nodePath.join(__dirname, 'fixtures/marko.json'));
|
||||
|
||||
console.log(taglib.tags['test-declared-attributes'].renderer);
|
||||
expect(taglib).to.not.be.null;
|
||||
expect(taglib).to.have.deep.property("tags.test-declared-attributes.renderer").to.have.string('renderer.js');
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user