1.1.2 • Published 7 years ago
unist-find-node v1.1.2
unist-find-node
Find the nearest MDAST node matching the position (inline nodes excluded).
Install
npm:
npm i --save unist-find-node
Usage
See the following example as Example.md
:
# hello, This is Markdown
... any other texts
let vfile = require("to-vfile");
let unified = require("unified");
let parse = require("remark-parse");
let findNode = require("./index.js");
let assert = require("assert");
let tree = unified()
.use(parse)
.parse("Example.md");
let child = findNode(tree, { line: 1, column: 1 });
Then the child is the first heading node which would be intercepted as
let inspect = require("unist-util-inspect");
console.log(inspect(child));
// heading[1] (1:1-1:27, 0-26) [depth=1]
// -- text: "hello, This is Markdown" (1:3-1:26, 2-25)
API
child = findNode(node, position, customizeRules = [] )
node
: the AST node parsed byunist
position
:{line, column}
an object withline
andcolumn
propertycustomizeRules
: An array of Functions customizing your rules for looking for nodes;
It is an function of(node, parent) => true|fasle|null|undefined]
, takingnode
and itsparent
and return one of the four. Rules are executed sequetially in the array, and- If a function returns
true
, thenfindNode
returnnode
; - If a function returns
flase
, thenfindNode
returnparent
- If a function returns
null
, thenfindNode
will stop executing following rules and try to find result in thenode.children
; If no result exists innode.children
(when and only when position ranges ofnode.children
does not coverpositopn
), then returnnode
. - If a function returns
undefined
, thenfindNode
will continue following rules; If all rules returnundefined
, the node will continue to search atnode.children
; If no result exists innode.children
, returnnode
- If a function returns