58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
import fs from "fs";
|
|
import path from "path";
|
|
import { JSDOM } from "jsdom";
|
|
|
|
const QT_DOCS_PATH = "./public/docs/qt";
|
|
const QT_DOCS_WEIGHT = 0.5;
|
|
|
|
async function processQtDocs(dir: string) {
|
|
const files = fs.readdirSync(dir);
|
|
|
|
for (const file of files) {
|
|
const fullPath = path.join(dir, file);
|
|
if (fs.lstatSync(fullPath).isDirectory()) {
|
|
await processQtDocs(fullPath);
|
|
continue;
|
|
}
|
|
|
|
if (file.endsWith(".html")) {
|
|
const html = fs.readFileSync(fullPath, "utf8");
|
|
const dom = new JSDOM(html);
|
|
const { document } = dom.window;
|
|
|
|
// remove common Qt doc noise selectors
|
|
const noiseSelectors = [
|
|
".sidebar",
|
|
"nav",
|
|
".header",
|
|
".footer",
|
|
".heading",
|
|
".toc",
|
|
".navigationbar",
|
|
];
|
|
|
|
noiseSelectors.forEach(selector => {
|
|
document
|
|
.querySelectorAll(selector)
|
|
.forEach(el => el.remove());
|
|
});
|
|
|
|
// inject pagefind meta
|
|
const metaSource = document.createElement("meta");
|
|
metaSource.setAttribute("data-pagefind-meta", "source:Qt");
|
|
document.head.appendChild(metaSource);
|
|
|
|
// lower weight for qt docs
|
|
const metaWeight = document.createElement("meta");
|
|
metaWeight.setAttribute(
|
|
"data-pagefind-weight",
|
|
QT_DOCS_WEIGHT.toString()
|
|
);
|
|
document.head.appendChild(metaWeight);
|
|
|
|
fs.writeFileSync(fullPath, dom.serialize());
|
|
}
|
|
}
|
|
}
|
|
|
|
processQtDocs(QT_DOCS_PATH).catch(console.error);
|