UNPKG

wintersmith

Version:
57 lines (48 loc) 1.55 kB
/* generator.coffee */ (function() { var ContentPlugin, ContentTree, ref, runGenerator; ref = require('./content'), ContentPlugin = ref.ContentPlugin, ContentTree = ref.ContentTree; runGenerator = function(env, contents, generator, callback) { var groups, resolve; groups = env.getContentGroups(); resolve = function(root, items) { var item, key, results, tree; results = []; for (key in items) { item = items[key]; if (item instanceof ContentPlugin) { item.parent = root; item.__env = env; item.__filename = 'generator'; item.__plugin = generator; root[key] = item; results.push(root._[generator.group].push(item)); } else if (item instanceof Object) { tree = new ContentTree(key, groups); tree.parent = root; tree.parent._.directories.push(tree); root[key] = tree; results.push(resolve(root[key], item)); } else { throw new Error("Invalid item for '" + key + "' encountered when resolving generator output"); } } return results; }; return generator.fn(contents, function(error, generated) { var tree; tree = new ContentTree('', groups); try { resolve(tree, generated); } catch (error1) { error = error1; return callback(error); } return callback(null, tree); }); }; /* Exports */ module.exports = { runGenerator: runGenerator }; }).call(this);