Add support for passing a function as the prefix
This commit is contained in:
parent
cd2f855eee
commit
357c87376e
2 changed files with 28 additions and 1 deletions
|
|
@ -16,3 +16,27 @@ test('it prefixes classes with the provided prefix', () => {
|
|||
expect(result.css).toEqual(expected)
|
||||
expect(result.warnings().length).toBe(0)
|
||||
})
|
||||
|
||||
test('it handles a function as the prefix', () => {
|
||||
const input = postcss.parse(`
|
||||
.foo { color: red; }
|
||||
.apple, .pear { color: green; }
|
||||
`)
|
||||
|
||||
const expected = `
|
||||
.tw-foo { color: red; }
|
||||
.apple, .pear { color: green; }
|
||||
`
|
||||
|
||||
const prefixFunc = selector => {
|
||||
if (selector === '.foo') {
|
||||
return 'tw-'
|
||||
}
|
||||
|
||||
return ''
|
||||
}
|
||||
|
||||
const result = applyClassPrefix(input, prefixFunc).toResult()
|
||||
expect(result.css).toEqual(expected)
|
||||
expect(result.warnings().length).toBe(0)
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
export default function(css, prefix) {
|
||||
const prefixIsFunc = typeof prefix === 'function'
|
||||
css.walkRules(rule => {
|
||||
rule.selectors = rule.selectors.map(selector => `.${prefix}${selector.slice(1)}`)
|
||||
rule.selectors = rule.selectors.map(
|
||||
selector => `.${prefixIsFunc ? prefix(selector) : prefix}${selector.slice(1)}`
|
||||
)
|
||||
})
|
||||
return css
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue