2022-10-17 13:48:21 +00:00
|
|
|
import { parse } from "./parse_tree.ts";
|
|
|
|
import buildMarkdown from "./parser.ts";
|
2022-11-27 07:48:01 +00:00
|
|
|
import {
|
|
|
|
collectNodesOfType,
|
|
|
|
findNodeOfType,
|
|
|
|
renderToText,
|
|
|
|
} from "../plug-api/lib/tree.ts";
|
2022-10-17 13:48:21 +00:00
|
|
|
import { assertEquals, assertNotEquals } from "../test_deps.ts";
|
|
|
|
|
|
|
|
const sample1 = `---
|
|
|
|
type: page
|
|
|
|
tags:
|
|
|
|
- hello
|
|
|
|
- world
|
|
|
|
---
|
|
|
|
# This is a doc
|
|
|
|
|
2022-11-27 07:48:01 +00:00
|
|
|
Here is a [[wiki link]] and a [[wiki link|alias]].
|
|
|
|
|
2022-10-17 13:48:21 +00:00
|
|
|
Supper`;
|
|
|
|
|
|
|
|
const sampleInvalid1 = `---
|
|
|
|
name: Zef
|
|
|
|
# This is a doc
|
|
|
|
|
|
|
|
Supper`;
|
|
|
|
|
|
|
|
Deno.test("Test parser", () => {
|
|
|
|
const lang = buildMarkdown([]);
|
|
|
|
let tree = parse(
|
|
|
|
lang,
|
|
|
|
sample1,
|
|
|
|
);
|
2022-11-27 07:48:01 +00:00
|
|
|
// console.log("tree", JSON.stringify(tree, null, 2));
|
2022-10-17 13:48:21 +00:00
|
|
|
// Check if rendering back to text works
|
|
|
|
assertEquals(renderToText(tree), sample1);
|
2022-11-27 07:48:01 +00:00
|
|
|
|
|
|
|
// Find wiki link and wiki link alias
|
|
|
|
const links = collectNodesOfType(tree, "WikiLink");
|
|
|
|
assertEquals(links.length, 2);
|
|
|
|
const nameNode = findNodeOfType(links[0], "WikiLinkPage");
|
|
|
|
assertEquals(nameNode?.children![0].text, "wiki link");
|
|
|
|
|
|
|
|
// Check if alias is parsed properly
|
|
|
|
const aliasNode = findNodeOfType(links[1], "WikiLinkAlias");
|
|
|
|
assertEquals(aliasNode?.children![0].text, "alias");
|
|
|
|
|
|
|
|
// Find frontmatter
|
2022-10-17 13:48:21 +00:00
|
|
|
let node = findNodeOfType(tree, "FrontMatter");
|
|
|
|
assertNotEquals(node, undefined);
|
|
|
|
tree = parse(lang, sampleInvalid1);
|
|
|
|
node = findNodeOfType(tree, "FrontMatter");
|
|
|
|
// console.log("Invalid node", node);
|
|
|
|
assertEquals(node, undefined);
|
|
|
|
});
|