class

Node

@Js
abstract class Node : Obj

Base class for all CommonMark AST nodes.

The CommonMark AST is a tree of nodes where each node can have any number of children and one parent - except the root node which has no parent.

constructors make

fields next

firstChild

lastChild

prev

sourceSpans

methods toStr

appendChild

Insert the child node as the last child node of this node

loc

Get the file location for this node from the original parsed source

parent

The parent node or null if this is the root of the AST

eachChild

Invoke the callback on each direct child of this node

eachBetween

Get nodes between start (exclusive) and end (exclusive) by iterating siblings of the start node

setSourceSpans

Replace the current source spans with the provided list

toStrAttributes

findAll

Recursively find all children of this node for which the callback returns true

insertAfter

Inserts the sibling node after this node

insertBefore

Inserts the sibiling node before this node

addSourceSpan

Add a source span to the end of the list

unlink

Completely detach this node from the AST

children

Get all the direct children of this node

find

Recursively try to find a node with the given type within the children of this node

eachDescendant

Recursively walk the descendants of this node using a depth-first search and invoke the callback on each node

doc

Get the root Document node or null if this node is mounted in a document yet

setParent

Used by sub-classes to set or clear this node's parent

walk

Walk the AST using the given visitor

addSourceSpan Void addSourceSpan(SourceSpan? sourceSpan)

Add a source span to the end of the list. If it is null, this is a no-op

appendChild This appendChild(Node child)

Insert the child node as the last child node of this node.

children Node[] children()

Get all the direct children of this node

doc Document? doc()

Get the root Document node or null if this node is mounted in a document yet

eachBetween static Void eachBetween(Node start, Node? end, |Node| f)

Get nodes between start (exclusive) and end (exclusive) by iterating siblings of the start node.

// A -> B -> C-> D-> E
        |->B1    |-> D1
        |->B2

Node.eachBetween(A, D, f)    => f(B), f(C)
Node.eachBetween(B, null, f) => f(C), f(D), f(E)

eachChild Void eachChild(|Node| f)

Invoke the callback on each direct child of this node

eachDescendant Void eachDescendant(|Node| f)

Recursively walk the descendants of this node using a depth-first search and invoke the callback on each node.

find Node? find(Type nodeType, Bool checked)

Recursively try to find a node with the given type within the children of this node. If checked, throw an error if the node could not be found; otherwise return null.

findAll Node[] findAll(|Node->Bool| f)

Recursively find all children of this node for which the callback returns true

firstChild Node? : firstChild

insertAfter Void insertAfter(Node sibling)

Inserts the sibling node after this node

insertBefore Void insertBefore(Node sibling)

Inserts the sibiling node before this node

lastChild Node? : lastChild

loc virtual FileLoc loc()

Get the file location for this node from the original parsed source. If the location is not known or source spans were not enabled during parsing, then return FileLoc.unknown.

make new make()

next Node? : next

parent virtual Node? parent()

The parent node or null if this is the root of the AST

prev Node? : prev

setParent virtual Void setParent(Node? p)

Used by sub-classes to set or clear this node's parent

setSourceSpans Void setSourceSpans(SourceSpan[] sourceSpans)

Replace the current source spans with the provided list

sourceSpans SourceSpan[] : sourceSpans

toStr virtual Str toStr()

toStrAttributes virtual Str toStrAttributes()

unlink Void unlink()

Completely detach this node from the AST

walk virtual Void walk(Visitor visitor)

Walk the AST using the given visitor. By default, we use reflection to call visitor.visit${this.typeof.name}

Haxall 4.0.5 ∙ 24-Feb-2026 14:33 EST