11'use strict'
22
3- const package_name = '@metalsmith/default-values'
4- const debug_lib = require ( 'debug' )
5- const debug = debug_lib ( package_name )
6-
7- const multimatch = require ( 'multimatch' )
3+ const debug = require ( 'debug' ) ( '@metalsmith/default-values' )
84const set_defaults = require ( './set_defaults' )
95
106/**
@@ -28,27 +24,23 @@ const defaultDefaultsSet = {
2824 **/
2925
3026function initDefaultValues ( options ) {
31- options = ( options || [ ] ) . map ( defaultsSet => Object . assign ( { } , defaultDefaultsSet , defaultsSet ) )
27+ const defaultSets = ( options || [ ] ) . map ( defaultsSet => Object . assign ( { } , defaultDefaultsSet , defaultsSet ) )
3228 return function defaultValues ( files , metalsmith , done ) {
3329 debug ( 'Running with options: %O ' , options )
3430
35- // Loop through files
36- Object . keys ( files ) . forEach ( function ( file ) {
37- // Loop through configurations
38- options . forEach ( function ( item ) {
39- if ( ! item . set_defaults ) {
40- // initialise set_defaults function
41- item . set_defaults = set_defaults ( item . defaults )
42- }
43-
44- debug ( 'Checking: %s; Against: %s' , file , item . pattern )
45- if ( multimatch ( file , item . pattern ) . length ) {
46- debug ( 'Passed - Will set defaults if required' )
47-
48- // Set defaults if required
49- item . set_defaults ( files [ file ] )
50- }
51- } )
31+ // Loop through configurations
32+ defaultSets . forEach ( function ( { pattern, defaults } ) {
33+ const matches = metalsmith . match ( pattern )
34+ debug ( 'Matched %s files to pattern %s: %o' , matches . length , pattern , matches )
35+ if ( matches . length ) {
36+ matches . forEach ( file => {
37+ set_defaults ( defaults ) ( files [ file ] )
38+ debug ( 'Defaults set for file %s, the resulting metadata is: %O' , file , Object . keys ( defaults ) . reduce ( ( resulting , prop ) => {
39+ resulting [ prop ] = files [ file ] [ prop ]
40+ return resulting
41+ } , { } ) )
42+ } )
43+ }
5244 } )
5345
5446 done ( )
0 commit comments