Add classes by selector to a rehype HAST (html tree)
npm install rehype-add-classesAdd classes by selector to elements with [rehype][rehype].
Useful for adding:
* hljs class to tag when converting markdown code snippets to html
* Required css framework classes to elements (for example using [Bulma][bulma])
[npm][]:
``bash`
npm install rehype-add-classes
Consider the following example.js with rehype processor (or use unified) setup as follows:
`javascript
import rehype from 'rehype';
import vfile from 'to-vfile';
import addClasses from 'rehype-add-classes';
const processor = rehype()
.data('settings', { fragment: true })
.use(addClasses, {
pre: 'hljs',
'h1,h2,h3': 'title',
h1: 'is-1',
h2: 'is-2',
p: 'one two'
});
const html =
;const { contents } = processor.processSync(vfile({ contents: html }));
console.log(contents);
`Now, running
node example.js yields:`console
header
sub 1
sub 2
`API
$3
Add to
rehype or unified pipeline with .use, where additions is an object
with keys that are the css selectors and the values are a string to add to
the class of each found node.Example:
`js
{
pre: 'hljs',
'h1,h2,h3': 'title',
h1: 'is-1',
h2: 'is-2',
p: 'one two'
}
`* Results are cumulative:
* value is added to existing classes:
* Whole of string indicated by value is added: This library uses hast-util-select` under the hood. See [these details][supported-selectors]
for supported selectors.
[MIT][license] ©2018 [Marty Nelson][author]
[author]: https://github.com/martypdx
[bulma]: https://bulma.io
[npm]: https://docs.npmjs.com/cli/install
[license]: LICENSE
[rehype]: https://github.com/rehypejs/rehype
[supported-selectors]: https://github.com/syntax-tree/hast-util-select#support
[travis-badge]: https://img.shields.io/travis/martypdx/rehype-add-classes.svg
[travis]: https://travis-ci.org/martypdx/rehype-add-classes