Refactor duplication to use generateVariantFunction
This commit is contained in:
parent
d77bc055ee
commit
64cda2f44b
3 changed files with 21 additions and 28 deletions
|
|
@ -1,22 +1,13 @@
|
|||
import _ from 'lodash'
|
||||
import postcss from 'postcss'
|
||||
import buildSelectorVariant from '../util/buildSelectorVariant'
|
||||
import generateVariantFunction from '../util/generateVariantFunction'
|
||||
import processPlugins from '../util/processPlugins'
|
||||
|
||||
function buildPseudoClassVariant(selector, pseudoClass, separator) {
|
||||
return `${buildSelectorVariant(selector, pseudoClass, separator)}:${pseudoClass}`
|
||||
}
|
||||
|
||||
function generatePseudoClassVariant(pseudoClass) {
|
||||
return (container, config) => {
|
||||
const cloned = container.clone()
|
||||
|
||||
cloned.walkRules(rule => {
|
||||
rule.selector = buildPseudoClassVariant(rule.selector, pseudoClass, config.options.separator)
|
||||
})
|
||||
|
||||
container.before(cloned.nodes)
|
||||
}
|
||||
return generateVariantFunction(({ className, separator }) => {
|
||||
return `.${pseudoClass}${separator}${className}:${pseudoClass}`
|
||||
})
|
||||
}
|
||||
|
||||
const defaultVariantGenerators = {
|
||||
|
|
|
|||
16
src/util/generateVariantFunction.js
Normal file
16
src/util/generateVariantFunction.js
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
import escapeClassName from './escapeClassName'
|
||||
|
||||
export default function generateVariantFunction(generator) {
|
||||
return (container, config) => {
|
||||
const cloned = container.clone()
|
||||
|
||||
cloned.walkRules(rule => {
|
||||
rule.selector = generator({
|
||||
className: rule.selector.slice(1),
|
||||
separator: escapeClassName(config.options.separator),
|
||||
})
|
||||
})
|
||||
|
||||
container.before(cloned.nodes)
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ import _ from 'lodash'
|
|||
import postcss from 'postcss'
|
||||
import Node from 'postcss/lib/node'
|
||||
import escapeClassName from '../util/escapeClassName'
|
||||
import generateVariantFunction from '../util/generateVariantFunction'
|
||||
import parseObjectStyles from '../util/parseObjectStyles'
|
||||
import prefixSelector from '../util/prefixSelector'
|
||||
import wrapWithVariants from '../util/wrapWithVariants'
|
||||
|
|
@ -14,21 +15,6 @@ function parseStyles(styles) {
|
|||
return _.flatMap(styles, style => (style instanceof Node ? style : parseObjectStyles(style)))
|
||||
}
|
||||
|
||||
function generateVariantFunction(generator) {
|
||||
return (container, config) => {
|
||||
const cloned = container.clone()
|
||||
|
||||
cloned.walkRules(rule => {
|
||||
rule.selector = generator({
|
||||
className: rule.selector.slice(1),
|
||||
separator: escapeClassName(config.options.separator),
|
||||
})
|
||||
})
|
||||
|
||||
container.before(cloned.nodes)
|
||||
}
|
||||
}
|
||||
|
||||
export default function(config) {
|
||||
const pluginComponents = []
|
||||
const pluginUtilities = []
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue