mirror of
https://github.com/Myriad-Dreamin/tinymist.git
synced 2025-08-04 18:28:02 +00:00
docs: better typlite.typ (#1832)
This commit is contained in:
parent
483de6f00d
commit
b58334cd0e
8 changed files with 86 additions and 72 deletions
|
@ -1,4 +1,4 @@
|
|||
import { resolve, basename } from "path";
|
||||
import { resolve, basename, relative } from "path";
|
||||
import * as fs from "fs";
|
||||
import { execSync } from "child_process";
|
||||
|
||||
|
@ -22,14 +22,14 @@ const yarn = (cmd, stdio = "inherit") => {
|
|||
}
|
||||
return execSync(script, { stdio });
|
||||
};
|
||||
const typlite = (input, output = "-") => {
|
||||
if (output === "-") {
|
||||
// return stdout
|
||||
const res = yarn(`--silent typlite --root ${root} ${input} -`, "pipe");
|
||||
return res.toString();
|
||||
}
|
||||
const typlite = (input, output) => {
|
||||
const assets_flag = dry
|
||||
? ""
|
||||
: `--assets-path ${relative(root, resolve(output, "../assets/images/", basename(input.slice(0, -4))))}`;
|
||||
|
||||
return yarn(`typlite ${input} ${output}`);
|
||||
// return stdout
|
||||
const res = yarn(`--silent typlite ${assets_flag} --root ${root} ${input} -`, "pipe");
|
||||
return res.toString();
|
||||
};
|
||||
|
||||
const convert = async (inp, out, opts) => {
|
||||
|
@ -37,29 +37,13 @@ const convert = async (inp, out, opts) => {
|
|||
const output = resolve(root, out);
|
||||
const { before } = opts || {};
|
||||
|
||||
const res = typlite(input).trim();
|
||||
const res = typlite(input, output).trim();
|
||||
if (dry) {
|
||||
console.log(res);
|
||||
return;
|
||||
}
|
||||
|
||||
const assetsDir = resolve(output, "../assets/images");
|
||||
fs.mkdirSync(assetsDir, { recursive: true });
|
||||
|
||||
// outline all data "data:image/svg+xml;base64," to render on GitHub correctly
|
||||
const inputName = basename(input);
|
||||
let imageCnt = 0;
|
||||
const outputContent =
|
||||
`<!-- This file is generated by scripts/link-docs.mjs from ${inp}. Do not edit manually. -->\n${before || ""}${res}\n`.replace(
|
||||
/\"data\:image\/svg\+xml\;base64,([^\"]*)\"/g,
|
||||
(_, content) => {
|
||||
const fileName = `${inputName}-inlined${imageCnt}.svg`;
|
||||
imageCnt += 1;
|
||||
fs.writeFileSync(resolve(assetsDir, fileName), base64Decode(content));
|
||||
return `"./assets/images/${fileName}"`;
|
||||
},
|
||||
);
|
||||
|
||||
const outputContent = `<!-- This file is generated by scripts/link-docs.mjs from ${inp}. Do not edit manually. -->\n${before || ""}${res}\n`;
|
||||
await fs.promises.writeFile(output, outputContent);
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue