Add unist-util-ancestor to list of utilities#53
Merged
Conversation
wooorm
reviewed
Sep 23, 2021
Member
|
Nice! For performance reasons you might want to not use If possible, it would be muuuch faster to walk the tree once/twice. const stacks = new Map()
visitParents(tree, (node, parents) => {
if (nodesToFind.includes(node)) {
stacks.set(node, parents)
}
})
nodesToFind.forEach(node => {
if (!stacks.has(node)) {
throw new Error('unist-util-ancestor requires all nodes be contained in the tree')
}
})
// Somethign like this?
let index = -1
let ancestor = tree
// This is broken, maybe you get the gist?
while (++index) {
const nextAncestor = stacks.get(nodesToFind[0])[index]
const shared = nodesToFind.every(node => stacks.get(node)[index] === nextAncestor)
// To do: exit if there are no nodes left on stacks.
if (shared) {
ancestor = nextAncestor
} else {
break
}
} |
This comment has been minimized.
This comment has been minimized.
gorango
added a commit
to gorango/unist-util-ancestor
that referenced
this pull request
Sep 23, 2021
- Remove `unist-util-find` - Based on: syntax-tree/unist#53 (comment)
Contributor
Author
|
Thank you so much for taking the time to review and provide this great feedback! I have implemented your suggestions and removed the find util completely. Way cleaner :) |
Member
|
That looks great! Nice find as well on the things that I didn't get to. Glad it worked! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Initial checklist
Description of changes
Adding a small utility to
readmethat helps with finding common ancestors of one or more unist nodes. It has come in handy a few times while working with ast trees so I thought I'd package it up. Here's hoping it might be helpful to someone else too!P.S. I am open to renaming the package if desired.