postcss-sparrow-units-filter
Version:
A PostCSS Sparrow plugin that helps you filter declarations by its unit.
52 lines (42 loc) • 882 B
JavaScript
import {
getUnits,
getAllUnits
} from './partial-functions/unit.js'
import {
hasWildCard
} from './partial-functions/wildcard.js'
import {
getValue
} from './partial-functions/value.js'
import * as R from 'ramda'
const shouldIncludeOrExclude = R.ifElse(
R.propEq('inclusion', true)
)
const ifUnitHasWildCard = R.ifElse(
R.pipe(
getUnits,
hasWildCard
)
)
const convertToRegex = (unit) => new RegExp(`${unit}$`)
const convertToPredicateFn = R.pipe(
R.map(convertToRegex),
R.map(R.test),
R.anyPass
)
const filterByUnits = (options) => (decl) =>
R.pipe(
ifUnitHasWildCard(
getAllUnits,
getUnits
),
convertToPredicateFn,
(predicate) => shouldIncludeOrExclude(
() => R.applyTo(decl)(predicate),
() => R.complement(R.applyTo(decl))(predicate)
)(options)
)(options)
export {
getValue,
filterByUnits
}