mdast-util-find-and-replace
    TypeScript icon, indicating that this package has built-in type declarations

    2.1.0 • Public • Published

    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

    Install

    npm i mdast-util-find-and-replace

    DownloadsWeekly Downloads

    436,741

    Version

    2.1.0

    License

    MIT

    Unpacked Size

    17.1 kB

    Total Files

    5

    Last publish

    Collaborators

    • wooorm
    • kmck