summaryrefslogtreecommitdiff
path: root/bin/wiki/ImportarDesdeURL/node_modules/metascraper/src/merge-rules.js
diff options
context:
space:
mode:
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.js26
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()