diff options
Diffstat (limited to 'bin/wiki/ImportarDesdeURL/node_modules/metascraper/src/merge-rules.js')
-rw-r--r-- | bin/wiki/ImportarDesdeURL/node_modules/metascraper/src/merge-rules.js | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/bin/wiki/ImportarDesdeURL/node_modules/metascraper/src/merge-rules.js b/bin/wiki/ImportarDesdeURL/node_modules/metascraper/src/merge-rules.js new file mode 100644 index 00000000..7cdb395c --- /dev/null +++ b/bin/wiki/ImportarDesdeURL/node_modules/metascraper/src/merge-rules.js @@ -0,0 +1,26 @@ +'use strict' + +const { + cloneDeep, + concat, + first, + findIndex, + forEach, + chain +} = require('lodash') + +module.exports = (rules, baseRules) => + chain(rules) + .reduce((acc, { test, ...rules }) => { + forEach(rules, (innerRules, propName) => { + if (test) forEach(innerRules, rule => (rule.test = test)) + // find the rules associated with `propName` + const index = findIndex(acc, item => first(item) === propName) + // if `propName` has more rule, add the new rule from the end + if (index !== -1) acc[index][1] = concat(innerRules, ...acc[index][1]) + // otherwise, create an array of rules + else acc.push([propName, innerRules]) + }) + return acc + }, cloneDeep(baseRules)) + .value() |