Home

Awesome

unist-util-replace-all-between

unist utility to modify an existing child list to replace all elements between all instances of two nodes

Install

npm:

npm install unist-util-replace-all-between

Usage

import u from 'unist-builder'
import replaceAllBetween from 'unist-util-replace-all-between'

const tree = u('root', [
  u('start', '1'),
  u('node', [u('leaf', '2'), u('node', [u('leaf', '3')])]),
  u('end', '4'),
  u('middle', '1'),
  u('start', '1'),
  u('node', '2'),
  u('end', '4'),
])

const newChildren = replaceAllBetween(tree, {type: 'start'}, {type: 'end'}, () => [u('replaced', '1')])

console.dir(newChildren, {depth: null})

Yields:

[
    { type: 'replaced', value: '1' },
    { type: 'middle', value: '2' },
    { type: 'replaced', value: '1' },
]

API

replaceAllBetween(parent, start, end, func)

Mutate an existing parent's children to reflect function return

Parent's children are only search. None of their children (or further down) are searched

Parameters
Returns

Node[] — List of children from parent post-mutation