mdast utility to find and replace text in a tree.
npm:
npm install mdast-util-find-and-replacevar u = require('unist-builder') var inspect = require('unist-util-inspect') var findAndReplace = require('mdast-util-find-and-replace') var 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: "."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.
findAndReplace(tree, find, replace?[, options])findAndReplace(tree, search[, options])
tree(Node) — mdast treefind(stringorRegExp) — Value to find and remove. Whenstring, escaped and made into a globalRegExpreplace(stringorFunction) — Value to insert. Whenstring, turned into aTextnode. WhenFunction, invoked with the results of callingRegExp.execas arguments, in which case it can return a single or a list ofNode, astring(which is wrapped in aTextnode), orfalseto not replacesearch(ObjectorArray) — Perform multiple find-and-replaces. WhenArray, each entry is a tuple (Array) of afind(at0) andreplace(at1). WhenObject, each key is afind(in string form) and each value is areplaceoptions.ignore(Test, default:[]) — Anyunist-util-iscompatible test.
The given, modified, tree.
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.
hast-util-find-and-replace— hast utility to find and replace textunist-util-select— select unist nodes with CSS-like selectors
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.