unist-util-ancestor

Unist utility for finding the closest common ancestor for multiple nodes

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
unist-util-ancestor
001.3.03 months agoa year agoMinified + gzip package size for unist-util-ancestor in KB

Readme

unist-util-ancestor
!Buildbuild-badgebuild !Coveragecoverage-badgecoverage !Typestypes-badgetypes !Sizesize-badgesize
Unist utility for finding the closest common ancestor for multiple nodes. Useful for working with remark, rehype and retext.

Install

npm install unist-util-ancestor

Use

import { u } from 'unist-builder'
import { inspect } from 'unist-util-inspect'
import findAncestor from 'unist-util-ancestor'

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

const nodesToFind = [{ value: 'leaf 1' }, { value: 'leaf 2' }]

console.log(inspect(findAncestor(tree, nodesToFind)))

Yields:
node[2]
├─0 node[1]
│   └─0 leaf "leaf 1"
└─1 node[2]
    ├─0 leaf "leaf 2"
    └─1 node[1]
        └─0 leaf "leaf 3"

API

findAncestor(tree, nodesToFind[, includeNodes])

Return the closest node that contains all nodesToFind.
  • tree (Node) - Unist node to search
  • nodesToFind (Node[]) - Array of unist nodes
  • includeNodes (boolean) - Whether to include target nodes in response

Test

Run npm test to run tests.
Run npm run coverage to produce a test coverage report.

License

MITlicense © Goran Spasojevicauthor