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.
39 lines
1.4 KiB
39 lines
1.4 KiB
// Build github-proof readmes that contain the package's API |
|
// docs as HTML. |
|
|
|
const {gather} = require("getdocs-ts") |
|
const {build} = require("builddocs") |
|
const {join} = require("path"), fs = require("fs") |
|
|
|
let root = join(__dirname, "..") |
|
|
|
function buildReadme() { |
|
let template = fs.readFileSync(join(root, "src", "README.md"), "utf8") |
|
|
|
let placeholders = template.match(/\n@\w+(?=\n|$)/g), dummy = placeholders.join("\n\n<hr>\n\n") |
|
let html = build({ |
|
mainText: dummy, |
|
anchorPrefix: "", |
|
allowUnresolvedTypes: false, |
|
imports: [type => { |
|
if (/\bcommon\b/.test(type.typeSource)) |
|
return `https://lezer.codemirror.net/docs/ref/#common.${type.type}` |
|
if (/\blr\b/.test(type.typeSource)) |
|
return `https://lezer.codemirror.net/docs/ref/#lr.${type.type}` |
|
if (/\bhighlight\b/.test(type.typeSource)) |
|
return `https://lezer.codemirror.net/docs/ref/#highlight.${type.type}` |
|
if (type.type == "NodeSet") console.log(type.typeSource) |
|
}] |
|
}, gather({filename: join(root, "src", "index.ts"), basedir: join(root, "src"), })) |
|
|
|
html = html.replace(/<\/?span.*?>/g, "") |
|
.replace(/id="(.*?)"/g, (_, id) => `id="user-content-${id.toLowerCase()}"`) |
|
.replace(/href="#(.*?)"/g, (_, id) => `href="#user-content-${id.toLowerCase()}"`) |
|
|
|
let pieces = html.split("\n<hr>\n") |
|
|
|
let i = 0 |
|
return template.replace(/\n@\w+(?=\n|$)/g, _ => pieces[i++]) |
|
} |
|
|
|
fs.writeFileSync(join(root, "README.md"), buildReadme())
|
|
|