@@ -3,7 +3,8 @@ var async = require('async')
3
3
var render = require ( 'consolidate' ) . handlebars . render
4
4
var path = require ( 'path' )
5
5
var getOptions = require ( './options' )
6
- var askQuestions = require ( './ask' )
6
+ var ask = require ( './ask' )
7
+ var filter = require ( './filter' )
7
8
8
9
/**
9
10
* Generate a template given a `src` and `dest`.
@@ -17,9 +18,8 @@ var askQuestions = require('./ask')
17
18
module . exports = function generate ( name , src , dest , done ) {
18
19
var opts = getOptions ( name , src )
19
20
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 ) )
23
23
. use ( renderTemplateFiles )
24
24
. clean ( false )
25
25
. 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) {
30
30
} )
31
31
}
32
32
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
+
33
59
/**
34
60
* Template in place plugin.
35
61
*
@@ -41,7 +67,7 @@ module.exports = function generate (name, src, dest, done) {
41
67
function renderTemplateFiles ( files , metalsmith , done ) {
42
68
var keys = Object . keys ( files )
43
69
var metalsmithMetadata = metalsmith . metadata ( )
44
-
70
+ metalsmithMetadata . noEscape = true
45
71
async . each ( keys , function ( file , next ) {
46
72
var str = files [ file ] . contents . toString ( )
47
73
// do not attempt to render files that do not have mustaches
0 commit comments