Skip to content

syntax-tree/mdast-util-find-and-replace

mdast-util-find-and-replace

Build Coverage Downloads Size Sponsors Backers Chat

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 imported instead of required.

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 tree
  • find (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 replace
  • search (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

About

mdast utility to find and replace text in a tree

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •