unified

Project: gorango/unist-util-ancestor

Package: unist-util-ancestor@1.3.0

  1. Unist utility for finding the closest common ancestor for multiple nodes
  1. remark 213
  2. unist 132
  3. rehype 91
  4. mdast 87
  5. hast 75
  6. retext 42
  7. nlcst 15
  8. find 11
  9. search 6

unist-util-ancestor

Build Coverage Types Size

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 along with data.depth containing the distance between the deepest node.

Test

Run npm test to run tests.

Run npm run coverage to produce a test coverage report.

License

MIT © Goran Spasojevic