clarity-pattern-parser
Version:
Parsing Library for Typescript and Javascript.
38 lines (34 loc) • 1.18 kB
text/typescript
import { patterns } from "./patterns";
describe("Patterns String Template Literal", () => {
test("Baseline", () => {
const { fullName } = patterns`
first-name = "John"
last-name = "Doe"
space = /\\s+/
full-name = first-name + space + last-name
`;
const result = fullName.exec("John Doe");
expect(result?.ast?.value).toBe("John Doe");
});
test("Simple Markup", () => {
const { body } = patterns`
tag-name = /[a-zA-Z_-]+[a-zA-Z0-9_-]*/
space = /\\s+/
opening-tag = "<" + tag-name + space? + ">"
closing-tag = "</" + tag-name + space? + ">"
child = space? + element + space?
children = (child)*
element = opening-tag + children + closing-tag
body = space? + element + space?
`;
debugger;
const result = body.exec(`
<div>
<div></div>
<div></div>
</div>
`, true);
result && result.ast && result.ast.findAll(n => n.name.includes("space")).forEach(n => n.remove());
expect(result?.ast?.value).toBe("<div><div></div><div></div></div>");
});
});