diff --git a/src/document/documentChildren.ts b/src/document/documentChildren.ts new file mode 100644 index 0000000..3412ccd --- /dev/null +++ b/src/document/documentChildren.ts @@ -0,0 +1,9 @@ +import { Node } from "../node" +import { Document } from "./Document" + +export function documentChildren(document: Document): Array { + return [ + ...document.children, + ...document.footnotes.flatMap((footnote) => footnote.nodes), + ] +} diff --git a/src/document/index.ts b/src/document/index.ts index d660205..6d5fd64 100644 --- a/src/document/index.ts +++ b/src/document/index.ts @@ -1 +1,2 @@ export * from "./Document" +export * from "./documentChildren" diff --git a/src/node/index.ts b/src/node/index.ts index 7422773..2a34fba 100644 --- a/src/node/index.ts +++ b/src/node/index.ts @@ -1 +1,2 @@ export * from "./Node" +export * from "./nodeChildren" diff --git a/src/node/nodeChildren.ts b/src/node/nodeChildren.ts new file mode 100644 index 0000000..90b1145 --- /dev/null +++ b/src/node/nodeChildren.ts @@ -0,0 +1,16 @@ +import { Node } from "./Node" + +export function nodeChildren(node: Node): Array { + if (node.kind === "Table") { + return [ + ...node.head.flatMap((nodes) => nodes), + ...node.body.flatMap((row) => row.flatMap((nodes) => nodes)), + ] + } + + if ("children" in node) { + return node.children + } + + return [] +}