Skip to content

Commit

Permalink
Refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
ehmicky committed Mar 20, 2022
1 parent 55b11c3 commit 7f898a5
Showing 1 changed file with 43 additions and 30 deletions.
73 changes: 43 additions & 30 deletions src/config/normalize/lib/wild_wild_utils/include.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,14 @@ export const pick = function (
query,
{ sort, classes, inherited } = {},
) {
return include(target, query, returnTrue, {
const entries = listEntries(target, query, {
roots: true,
sort,
entries: false,
classes,
inherited,
})
}

const returnTrue = function () {
return true
const setFunc = pickEntry.bind(undefined, { classes, inherited })
return entries.reduce(setFunc, {})
}

// Remove values not matching a query
Expand All @@ -27,11 +25,16 @@ export const include = function (
condition,
{ sort, entries, classes, inherited } = {},
) {
return reduceParents(
pickEntry.bind(undefined, { classes, inherited }),
condition,
{ target, newTarget: {}, query, sort, entries, classes, inherited },
)
const setFunc = pickEntry.bind(undefined, { classes, inherited })
return reduceParents(setFunc, condition, {
target,
newTarget: {},
query,
sort,
entries,
classes,
inherited,
})
}

const pickEntry = function (
Expand All @@ -50,19 +53,16 @@ export const exclude = function (
condition,
{ mutate, entries, classes, inherited } = {},
) {
return reduceParents(
excludeEntry.bind(undefined, { mutate, classes, inherited }),
condition,
{
target,
newTarget: target,
query,
sort: false,
entries,
classes,
inherited,
},
)
const setFunc = excludeEntry.bind(undefined, { mutate, classes, inherited })
return reduceParents(setFunc, condition, {
target,
newTarget: target,
query,
sort: false,
entries,
classes,
inherited,
})
}

const excludeEntry = function (
Expand All @@ -79,20 +79,33 @@ const reduceParents = function (
condition,
{ target, newTarget, query, sort, entries: entriesOpt, classes, inherited },
) {
const entries = list(target, query, {
childFirst: false,
const entries = listEntries(target, query, {
roots: false,
leaves: false,
sort,
missing: false,
entries: true,
classes,
inherited,
})
return entries
.filter((entry) => meetsCondition({ condition, entry, target, entriesOpt }))
.filter(hasNoParentSet)
.reduce((newTargetA, entry) => setFunc(newTargetA, entry, 0), newTarget)
.reduce(setFunc, newTarget)
}

const listEntries = function (
target,
query,
{ roots, sort, classes, inherited },
) {
return list(target, query, {
childFirst: false,
roots,
leaves: false,
sort,
missing: false,
entries: true,
classes,
inherited,
})
}

const meetsCondition = function ({ condition, entry, target, entriesOpt }) {
Expand Down

0 comments on commit 7f898a5

Please sign in to comment.