Skip to content

Commit d6f8407

Browse files
committed
Removes multimatch, uses metalsmith.match. Simplified & refactored
1 parent 19e5f23 commit d6f8407

4 files changed

Lines changed: 24 additions & 62 deletions

File tree

lib/index.js

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
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')
84
const set_defaults = require('./set_defaults')
95

106
/**
@@ -28,27 +24,23 @@ const defaultDefaultsSet = {
2824
**/
2925

3026
function 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()

lib/set_defaults.js

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
'use strict'
22

3-
const debug = require('debug')('@metalsmith/default-values:set-defaults')
43
const get = require('lodash.get')
54
const set = require('lodash.set')
65

@@ -13,16 +12,10 @@ const set = require('lodash.set')
1312
* @return {function} Takes an object and sets defaults
1413
*/
1514
const set_defaults = (defaults) => (item) => {
16-
debug('defaults: %o', defaults)
1715
Object.keys(defaults).forEach((key) => {
1816
const value = get(item, key)
1917
const default_value = defaults[key]
2018

21-
// For more verbose debugging enable the following
22-
// debug('key: %s', key);
23-
// debug('default: %s', defaults[key]);
24-
// debug('value: %s', value);
25-
2619
if (value === void 0 || value === null) {
2720
if (typeof default_value === 'function') {
2821
set(item, key, default_value(item))

package-lock.json

Lines changed: 8 additions & 30 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@
3939
"dependencies": {
4040
"debug": "^4.2.0",
4141
"lodash.get": "^4.4.2",
42-
"lodash.set": "^4.3.2",
43-
"multimatch": "^5.0.0"
42+
"lodash.set": "^4.3.2"
4443
},
4544
"devDependencies": {
4645
"auto-changelog": "^2.3.0",

0 commit comments

Comments
 (0)