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
|
*.orig
|
||||||
.DS_Store
|
.DS_Store
|
||||||
coverage
|
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
|
* @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 tagDirname = nodePath.join(dir, childFilename);
|
||||||
var tagFile = nodePath.join(dir, childFilename, 'marko-tag.json');
|
var tagFile = nodePath.join(dir, childFilename, 'marko-tag.json');
|
||||||
var tag = null;
|
var tag = null;
|
||||||
var rendererFile = nodePath.join(dir, childFilename, 'renderer.js');
|
var rendererFile = scanRequireExtensions(dir, childFilename, 'renderer');
|
||||||
var indexFile = nodePath.join(dir, childFilename, 'index.js');
|
var indexFile = scanRequireExtensions(dir, childFilename, 'index');
|
||||||
var templateFile = nodePath.join(dir, childFilename, 'template.marko');
|
var templateFile = nodePath.join(dir, childFilename, 'template.marko');
|
||||||
var templateFileAlt = nodePath.join(dir, childFilename, 'template.html');
|
var templateFileAlt = nodePath.join(dir, childFilename, 'template.html');
|
||||||
var templateFileAlt2 = nodePath.join(dir, childFilename, 'template.marko.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 (!tagDef.renderer && !tagDef.template && !tagDef['code-generator'] && !tagDef['node-factory'] && !tagDef.transformer) {
|
||||||
if (fs.existsSync(rendererFile)) {
|
if (rendererFile) {
|
||||||
tagDef.renderer = rendererFile;
|
tagDef.renderer = rendererFile;
|
||||||
} else if (fs.existsSync(indexFile)) {
|
} else if (indexFile) {
|
||||||
tagDef.renderer = indexFile;
|
tagDef.renderer = indexFile;
|
||||||
} else if (fs.existsSync(templateFile)) {
|
} else if (fs.existsSync(templateFile)) {
|
||||||
tagDef.template = templateFile;
|
tagDef.template = templateFile;
|
||||||
@ -134,4 +143,4 @@ module.exports = function scanTagsDir(tagsConfigPath, tagsConfigDirname, dir, ta
|
|||||||
tag.name = tag.name || tagName;
|
tag.name = tag.name || tagName;
|
||||||
taglib.addTag(tag);
|
taglib.addTag(tag);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -4,6 +4,7 @@ chai.config.includeStack = true;
|
|||||||
require('chai').should();
|
require('chai').should();
|
||||||
var expect = require('chai').expect;
|
var expect = require('chai').expect;
|
||||||
var nodePath = require('path');
|
var nodePath = require('path');
|
||||||
|
var taglibLoader = require('../compiler').taglibLoader;
|
||||||
|
|
||||||
describe('taglib-loader' , function() {
|
describe('taglib-loader' , function() {
|
||||||
|
|
||||||
@ -18,7 +19,6 @@ describe('taglib-loader' , function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should load a taglib with shorthand attributes and tags', 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'));
|
var taglib = taglibLoader.load(nodePath.join(__dirname, 'fixtures/taglib-shorthand/marko.json'));
|
||||||
expect(taglib != null).to.equal(true);
|
expect(taglib != null).to.equal(true);
|
||||||
|
|
||||||
@ -39,5 +39,13 @@ describe('taglib-loader' , function() {
|
|||||||
expect(nestedTabTag.targetProperty).to.equal('tabs');
|
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