Set of helpers for composing and parsing BEM classNames.
npm i -S rebem-classname
import { stringify } from 'rebem-classname';
const className = stringify(props);
stringify({
block: 'beep'
});
// "beep"
stringify({
block: 'beep',
elem: 'boop'
});
// "beep__boop"
stringify({
block: 'beep',
mods: {
foo: 'bar'
}
});
// "beep beep_foo_bar"
stringify({
block: 'beep',
mods: {
foo: true,
bar: false
}
});
// "beep beep_foo"
stringify({
block: 'beep',
elem: 'boop',
mods: {
foo: 'bar'
}
});
// "beep__boop beep__boop_foo_bar"
stringify({
block: 'beep',
mix: {
block: 'boop',
elem: 'foo'
}
});
// "beep boop__foo"
stringify({
block: 'beep',
mix: [
{
block: 'boop',
elem: 'foo'
},
{
block: 'bar',
elem: 'baz',
mods: {
test: true
}
}
]
});
// "beep boop__foo bar__baz bar__baz_test"
stringify({
block: 'boop'
className: 'beep'
});
// "boop beep"
Checks if BEMJSON is valid and throws warnings into console if it's not. Returns the same BEMJSON back.
import { validate } from 'rebem-classname';
validate({
elem: 'boop'
});
// "you should provide block along with elem Object{elem: 'boop'}"
TODO
Default delimeters are _
for modifiers and __
for elements, but you can change them with special environment variables:
plugins: [
new webpack.DefinePlugin({
'process.env': {
REBEM_MOD_DELIM: JSON.stringify('--'),
REBEM_ELEM_DELIM: JSON.stringify('~~')
}
})
]