unist-util-modify-children

4.0.0last stable release 2 years ago
Complexity Score
Low
Open Issues
0
Dependent Projects
25
Weekly Downloadsglobal
720,266

License

  • MIT
    • Yesattribution
    • Permissivelinking
    • Permissivedistribution
    • Permissivemodification
    • Nopatent grant
    • Yesprivate use
    • Permissivesublicensing
    • Notrademark grant

Downloads

Loading Weekly Download Data

Readme

unist-util-modify-children

unist utility to change children of a parent.

Contents

  • What is this?
  • When should I use this?
  • Install
  • Use
  • API
    • modifyChildren(modifier)
    • Modifier
    • Modify
  • Types
  • Compatibility
  • Related
  • Contribute
  • License

What is this?

This is a tiny utility that you can use to create a reusable function that modifies children.

When should I use this?

Probably never! Use unist-util-visit.

Install

This package is ESM only. In Node.js (version 16+), install with npm:

npm install unist-util-modify-children

In Deno with esm.sh:

import {modifyChildren} from 'https://esm.sh/unist-util-modify-children@4'

In browsers with esm.sh:

<script type="module">
  import {modifyChildren} from 'https://esm.sh/unist-util-modify-children@4?bundle'
</script>

Use

import u from 'unist-builder'
import {modifyChildren} from 'unist-util-modify-children'

const tree = u('root', [
  u('leaf', '1'),
  u('parent', [u('leaf', '2')]),
  u('leaf', '3')
])
const modify = modifyChildren(function (node, index, parent) {
  if (node.type === 'parent') {
    parent.children.splice(index, 1, {type: 'subtree', children: parent.children})
    return index + 1
  }
})

modify(tree)

console.dir(tree, {depth: undefined})

Yields:

{
  type: 'root',
  children: [
    {type: 'leaf', value: '1'},
    {type: 'subtree', children: [{type: 'leaf', value: '2'}]},
    {type: 'leaf', value: '3'}
  ]
}

API

This package exports the identifier modifyChildren. There is no default export.

modifyChildren(modifier)

Wrap modifier to be called for each child in the nodes later given to modify.

Parameters
  • modifier (Modifier) — callback called for each child in parent later given to modify
Returns

Modify children of parent (Modify).

Modifier

Callback called for each child in parent later given to modify (TypeScript type).

Parameters
  • child (Node) — child of parent
  • index (number) — position of child in parent
  • parent (Node) — parent node
Returns

Position to move to next (optional) (number or undefined).

Modify

Modify children of parent (TypeScript type).

Parameters
  • parent (Node) — parent node
Returns

Nothing (undefined).

Types

This package is fully typed with TypeScript. It exports the additional types Modifier and Modify.

Compatibility

Projects maintained by the unified collective are compatible with maintained versions of Node.js.

When we cut a new major release, we drop support for unmaintained versions of Node. This means we try to keep the current release line, unist-util-modify-children@^4, compatible with Node.js 16.

Related

  • unist-util-visit — walk the tree
  • unist-util-visit-parents — walk the tree with a stack of parents
  • unist-util-filter — create a new tree with all nodes that pass a test
  • unist-util-map — create a new tree with all nodes mapped by a given function
  • unist-util-flatmap — create a new tree by mapping (to an array) with the given function
  • unist-util-find-after — find a node after another node
  • unist-util-find-before — find a node before another node
  • unist-util-find-all-after — find all nodes after another node
  • unist-util-find-all-before — find all nodes before another node
  • unist-util-find-all-between — find all nodes between two nodes
  • unist-util-remove — remove nodes from a tree that pass a test
  • unist-util-select — select nodes with CSS-like selectors

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

Dependencies

Loading dependencies...

CVE IssuesActive
0
Scorecards Score
3.70
Test Coverage
100.00%
Follows Semver
Yes
Github Stars
11
Dependenciestotal
11
DependenciesOutdated
4
DependenciesDeprecated
0
Threat Modelling
No
Repo Audits
No

Learn how to distribute unist-util-modify-children in your own private NPM registry

npm config set registry  https://npm.cloudsmith.com/owner/repo
Processing...
Done
npm install unist-util-modify-children
Processing...
Done

13 Releases

NPM on Cloudsmith

Getting started with NPM on Cloudsmith is fast and easy.