Package Exports
- rehype-wrap
- rehype-wrap/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (rehype-wrap) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
rehype-wrap
Wrap selected elements with a given element
Install
npm i -S rehype-wrap
Usage
const wrap = require('rehype-wrap')
const rehype = require('rehype')
rehype()
.use(wrap, {/* options */})
.process(/* html string */)
.then(/* vfile */)
.catch(/* handle any errors */)
Options
wrap.selector
string
Select an element to be wrapped. Expects a string selector that can be passed to hast-util-select (supported selectors). If wrap.selector
is not set then wrap will check for a body
element and wrap all elements inside. Otherwise, if there is no body
element, wrap treats the html as a fragment and wraps everything.
wrap.wrapper
string
Element to wrap around wrap.selector
. Expects a string selector
that can be parsed into html using hast-util-parse-selector (see readme)
Example
# dependencies
npm i unified to-vfile remark-parse remark-rehype vfile-reporter rehype-document rehype-stringify remark-wrap
# example.md
```js
const foo = 'bar'
```
/* example.js */
'use strict'
const unified = require('unified')
const toVfile = require('to-vfile')
const remarkParse = require('remark-parse')
const remarkRehype = require('remark-rehype')
const vfileReporter = require('vfile-reporter')
const rehypeDocument = require('rehype-document')
const rehypeStringify = require('rehype-stringify')
const rehypeWrap = require('rehype-wrap')
const markdown = toVfile.readSync('./example.md')
unified()
.use(remarkParse)
.use(remarkRehype)
.use(rehypeDocument)
.use(rehypeWrap, {wrapper: 'div.markdown-body'})
.use(rehypeStringify)
.process(markdown, (err, file) => {
console.error(vfileReporter(err ||file))
console.log(String(file))
})
<!— output —>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body><div class="markdown-body">
<h1>Foo</h1>
<pre><code class="language-js">const foo = 'bar'
</code></pre>
</div></body>
</html>
Acknowledgments
Rehype-wrap depends on a few great packages you should check out.
- hast-util-parse-selector - used to parse a selector into an element.
- hast-util-select - used to select an element to wrap.
- unist-util-visit - used to visit elements and their parent element.
License
MIT © Paul Zimmer