@@ -3,7 +3,8 @@ var async = require('async')
33var render = require ( 'consolidate' ) . handlebars . render
44var path = require ( 'path' )
55var getOptions = require ( './options' )
6- var askQuestions = require ( './ask' )
6+ var ask = require ( './ask' )
7+ var filter = require ( './filter' )
78
89/**
910 * Generate a template given a `src` and `dest`.
@@ -17,9 +18,8 @@ var askQuestions = require('./ask')
1718module . exports = function generate ( name , src , dest , done ) {
1819 var opts = getOptions ( name , src )
1920 Metalsmith ( path . join ( src , 'template' ) )
20- . use ( function ( files , metalsmith , done ) {
21- askQuestions ( opts . schema , metalsmith . metadata ( ) , done )
22- } )
21+ . use ( askQuestions ( opts . schema ) )
22+ . use ( filterFiles ( opts . filters ) )
2323 . use ( renderTemplateFiles )
2424 . clean ( false )
2525 . source ( '.' ) // start from template root instead of `./src` which is Metalsmith's default for `source`
@@ -30,6 +30,32 @@ module.exports = function generate (name, src, dest, done) {
3030 } )
3131}
3232
33+ /**
34+ * Create a middleware for asking questions.
35+ *
36+ * @param {Object } schema
37+ * @return {Function }
38+ */
39+
40+ function askQuestions ( schema ) {
41+ return function ( files , metalsmith , done ) {
42+ ask ( schema , metalsmith . metadata ( ) , done )
43+ }
44+ }
45+
46+ /**
47+ * Create a middleware for filtering files.
48+ *
49+ * @param {Object } filters
50+ * @return {Function }
51+ */
52+
53+ function filterFiles ( filters ) {
54+ return function ( files , metalsmith , done ) {
55+ filter ( files , filters , metalsmith . metadata ( ) , done )
56+ }
57+ }
58+
3359/**
3460 * Template in place plugin.
3561 *
@@ -41,7 +67,7 @@ module.exports = function generate (name, src, dest, done) {
4167function renderTemplateFiles ( files , metalsmith , done ) {
4268 var keys = Object . keys ( files )
4369 var metalsmithMetadata = metalsmith . metadata ( )
44-
70+ metalsmithMetadata . noEscape = true
4571 async . each ( keys , function ( file , next ) {
4672 var str = files [ file ] . contents . toString ( )
4773 // do not attempt to render files that do not have mustaches
0 commit comments