aboutsummaryrefslogtreecommitdiffhomepage
path: root/nuldoc-src
diff options
context:
space:
mode:
Diffstat (limited to 'nuldoc-src')
-rw-r--r--nuldoc-src/xml.ts7
-rw-r--r--nuldoc-src/xml_test.ts17
2 files changed, 22 insertions, 2 deletions
diff --git a/nuldoc-src/xml.ts b/nuldoc-src/xml.ts
index 13ec5d6..87c2b71 100644
--- a/nuldoc-src/xml.ts
+++ b/nuldoc-src/xml.ts
@@ -2,7 +2,10 @@ import { Element, Node, Text } from "./dom.ts";
import { XmlParseError } from "./errors.ts";
export async function parseXmlFile(filePath: string): Promise<Element> {
- const source = await Deno.readTextFile(filePath);
+ return parseXmlString(await Deno.readTextFile(filePath));
+}
+
+export function parseXmlString(source: string): Element {
return parse({ source: source, index: 0 });
}
@@ -200,7 +203,7 @@ function expect(p: Parser, expected: string) {
}
if (actual !== expected) {
throw new XmlParseError(
- `[parse.expect] expected ${expected}, but actually got ${actual}`,
+ `[parse.expect] expected ${expected}, but actually got ${actual} (pos: ${p.index})`,
);
}
}
diff --git a/nuldoc-src/xml_test.ts b/nuldoc-src/xml_test.ts
new file mode 100644
index 0000000..28e1597
--- /dev/null
+++ b/nuldoc-src/xml_test.ts
@@ -0,0 +1,17 @@
+import { assertEquals } from "std/testing/asserts.ts";
+import { parseXmlString } from "./xml.ts";
+
+Deno.test("Parse XML", () => {
+ assertEquals(
+ "__root__",
+ parseXmlString(
+ `<?xml version="1.0" encoding="UTF-8"?>
+<hoge>
+ <piyo>
+ <!-- comment -->
+ </piyo>
+</hoge>
+`,
+ ).name,
+ );
+});