mdast-util-find-and-replace
mdast utility to find and replace text in a tree.
Install
This package is ESM only:
Node 12+ is needed to use it and it must be import
ed instead of require
d.
npm:
npm install mdast-util-find-and-replace
Use
import {u} from 'unist-builder'
import {inspect} from 'unist-util-inspect'
import {findAndReplace} from 'mdast-util-find-and-replace'
const tree = u('paragraph', [
u('text', 'Some '),
u('emphasis', [u('text', 'emphasis')]),
u('text', ' and '),
u('strong', [u('text', 'importance')]),
u('text', '.')
])
findAndReplace(tree, 'and', 'or')
findAndReplace(tree, {emphasis: 'em', importance: 'strong'})
findAndReplace(tree, {
Some: function ($0) {
return u('link', {url: '//example.com#' + $0}, [u('text', $0)])
}
})
console.log(inspect(tree))
Yields:
paragraph[8]
├─ link[1] [url="//example.com#Some"]
│ └─ text: "Some"
├─ text: " "
├─ emphasis[1]
│ └─ text: "em"
├─ text: " "
├─ text: "or"
├─ text: " "
├─ strong[1]
│ └─ text: "strong"
└─ text: "."
API
This package exports the following identifiers: findAndReplace
.
There is no default export.
findAndReplace(tree, find[, replace][, options])
Find and replace text in mdast trees.
The algorithm searches the tree in preorder for complete values
in Text
nodes.
Partial matches are not supported.
Signatures
findAndReplace(tree, find, replace?[, options])
findAndReplace(tree, search[, options])
Parameters
tree
(Node
)
— mdast treefind
(string
or RegExp
)
— Value to find and remove.
When string
, escaped and made into a global RegExp
replace
(string
or Function
)
— Value to insert.
When string
, turned into a Text
node.
When Function
, invoked with the results of calling RegExp.exec
as
arguments, in which case it can return a single or a list of Node
,
a string
(which is wrapped in a Text
node), or false
to not
replacesearch
(Object
or Array
)
— Perform multiple find-and-replaces.
When Array
, each entry is a tuple (Array
) of a find
(at 0
) and
replace
(at 1
).
When Object
, each key is a find
(in string form) and each value is a
replace
options.ignore
(Test
, default: []
)
— Any unist-util-is
compatible test.
Returns
The given, modified, tree
.
Security
Use of mdast-util-find-and-replace
does not involve hast or user
content so there are no openings for cross-site scripting (XSS) attacks.
Related
Contribute
See contributing.md
in syntax-tree/.github
for ways to get
started.
See support.md
for ways to get help.
This project has a code of conduct.
By interacting with this repository, organization, or community you agree to
abide by its terms.
License
MIT © Titus Wormer