You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
880 B
29 lines
880 B
import {parser, configureNesting} from "../dist/index.js" |
|
import {parser as jsParser} from "@lezer/javascript" |
|
import {fileTests} from "@lezer/generator/dist/test" |
|
|
|
import * as fs from "fs" |
|
import * as path from "path" |
|
import {fileURLToPath} from "url" |
|
let caseDir = path.dirname(fileURLToPath(import.meta.url)) |
|
|
|
let mixed = parser.configure({ |
|
wrap: configureNesting([{ |
|
tag: "script", |
|
attrs(attrs) { |
|
return !attrs.type || /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(attrs.type) |
|
}, |
|
parser: jsParser |
|
}]) |
|
}) |
|
|
|
for (let file of fs.readdirSync(caseDir)) { |
|
if (!/\.txt$/.test(file)) continue |
|
let name = /^[^\.]*/.exec(file)[0] |
|
describe(name, () => { |
|
let p = name == "mixed" ? mixed : parser |
|
for (let {name, run} of fileTests(fs.readFileSync(path.join(caseDir, file), "utf8"), file)) |
|
it(name, () => run(p)) |
|
}) |
|
} |
|
|
|
|