Use mfm-js for MFM parsing (#7415)
* wip * Update mfm.ts * wip * update mfmjs * refactor * nanka * Update mfm.ts * Update to-html.ts * Update to-html.ts * wip * fix test * fix test
This commit is contained in:
parent
b378066ebf
commit
1f4ae2f63a
31 changed files with 262 additions and 1771 deletions
|
|
@ -1,36 +0,0 @@
|
|||
import { concat, sum } from './array';
|
||||
|
||||
export type Tree<T> = {
|
||||
node: T,
|
||||
children: Forest<T>;
|
||||
};
|
||||
|
||||
export type Forest<T> = Tree<T>[];
|
||||
|
||||
export function createLeaf<T>(node: T): Tree<T> {
|
||||
return { node, children: [] };
|
||||
}
|
||||
|
||||
export function createTree<T>(node: T, children: Forest<T>): Tree<T> {
|
||||
return { node, children };
|
||||
}
|
||||
|
||||
export function hasChildren<T>(t: Tree<T>): boolean {
|
||||
return t.children.length !== 0;
|
||||
}
|
||||
|
||||
export function preorder<T>(t: Tree<T>): T[] {
|
||||
return [t.node, ...preorderF(t.children)];
|
||||
}
|
||||
|
||||
export function preorderF<T>(ts: Forest<T>): T[] {
|
||||
return concat(ts.map(preorder));
|
||||
}
|
||||
|
||||
export function countNodes<T>(t: Tree<T>): number {
|
||||
return preorder(t).length;
|
||||
}
|
||||
|
||||
export function countNodesF<T>(ts: Forest<T>): number {
|
||||
return sum(ts.map(countNodes));
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue