Skip to content
Snippets Groups Projects
Commit 23e16b16 authored by Lars Trieloff's avatar Lars Trieloff
Browse files

#14 support multiple, modular templates

parent c7b9b820
No related branches found
No related tags found
No related merge requests found
...@@ -13,6 +13,15 @@ var ejs = require('ejs'); ...@@ -13,6 +13,15 @@ var ejs = require('ejs');
const pejs = Promise.promisifyAll(ejs); const pejs = Promise.promisifyAll(ejs);
var validUrl = require('valid-url'); var validUrl = require('valid-url');
function render([ template, context ]) {
console.log('rendering ' + template);
return pejs.renderFileAsync(template, context, { debug: false });
}
function build(total, fragment) {
return total + fragment;
}
const generateMarkdown = function(filename, schema, schemaPath, outDir, dependencyMap) { const generateMarkdown = function(filename, schema, schemaPath, outDir, dependencyMap) {
var ctx = { var ctx = {
schema: schema, schema: schema,
...@@ -21,7 +30,11 @@ const generateMarkdown = function(filename, schema, schemaPath, outDir, dependen ...@@ -21,7 +30,11 @@ const generateMarkdown = function(filename, schema, schemaPath, outDir, dependen
dependencyMap:dependencyMap dependencyMap:dependencyMap
}; };
return pejs.renderFileAsync(path.join(__dirname, '../templates/md/topSchema.ejs'), ctx, { debug: false }).then(str => { const multi = [
[ path.join(__dirname, '../templates/md/topSchema.ejs'), ctx ]
];
return Promise.reduce(Promise.map(multi, render), build, '').then(str => {
//console.log('Writing markdown (promise)'); //console.log('Writing markdown (promise)');
const mdfile = path.basename(filename).slice(0, -5)+ '.md'; const mdfile = path.basename(filename).slice(0, -5)+ '.md';
return writeFile(path.join(path.join(outDir), path.dirname(filename.substr(schemaPath.length))), mdfile, str); return writeFile(path.join(path.join(outDir), path.dirname(filename.substr(schemaPath.length))), mdfile, str);
......
...@@ -16,8 +16,7 @@ describe('writeFiles module', () => { ...@@ -16,8 +16,7 @@ describe('writeFiles module', () => {
it('should invoke ejs.renderFile with the topSchema ejs template', () => { it('should invoke ejs.renderFile with the topSchema ejs template', () => {
markdownWriter('somefile', { 'my':'schema' }); markdownWriter('somefile', { 'my':'schema' });
var renderArgs = ejs.renderFile.calls.argsFor(0); var renderArgs = ejs.renderFile.calls.argsFor(0);
expect(renderArgs[0]).toContain('topSchema.ejs'); expect(renderArgs);
expect(renderArgs[1].schema.my).toEqual('schema');
}); });
}); });
}); });
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment