Skip to content

Replace section of nodes in Unist parent using selections for start/end

Notifications You must be signed in to change notification settings

playfulprogramming/unist-util-replace-all-between

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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
  • parent (Parent) — Parent to walk through children of
  • start (Test) — is-compatible test (such as a type) to find the start of each section
  • end (Test) — is-compatible test (such as a type) to find the end of each section
  • func ((nodes: Node[]) => Node[]) — Function used to change nodes. Return value is then set to the parent.children value
Returns

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

About

Replace section of nodes in Unist parent using selections for start/end

Resources

Stars

Watchers

Forks

Packages

No packages published