31 lines
970 B
TypeScript
31 lines
970 B
TypeScript
export async function getAsciiArt(art: string) {
|
|
const artFilePath = Deno.env.get("BEARMETAL_ASCII_PATH") ||
|
|
getBearmetalAsciiPath();
|
|
if (!artFilePath) return art;
|
|
let artFileText: string;
|
|
if (artFilePath.startsWith("http")) {
|
|
artFileText = await fetch(artFilePath).then((res) => res.text());
|
|
} else {
|
|
artFileText = await Deno.readTextFile(artFilePath);
|
|
}
|
|
const parserRX = /begin\s+(\w+)\s*\n([\s\S]*?)\s*end\s*/g;
|
|
let result = parserRX.exec(artFileText);
|
|
|
|
while (result !== null) {
|
|
const [_, name, artText] = result;
|
|
if (name === art) return artText;
|
|
result = parserRX.exec(artFileText);
|
|
}
|
|
return art;
|
|
}
|
|
|
|
function getBearmetalAsciiPath() {
|
|
const filenameRX = /asciiarts?\.txt$/;
|
|
for (const filename of Deno.readDirSync(".")) {
|
|
if (filename.isFile && filenameRX.test(filename.name)) {
|
|
return filename.name;
|
|
}
|
|
}
|
|
return "https://git.cyborggrizzly.com/BearMetal/pdf-tools/raw/branch/main/asciiart.txt";
|
|
}
|