Files
PrismAsAService/HttpTrigger/index.ts
Tommy Parnell aeb26aaccb try catch
2022-03-17 23:23:10 -04:00

51 lines
1.4 KiB
TypeScript

import { AzureFunction, Context, HttpRequest } from "@azure/functions"
import * as Prism from 'prismjs';
import * as loadLanguages from 'prismjs/components/index.js';
loadLanguages();
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
if (req.method === "GET") {
context.res = {
// status: 200, /* Defaults to 200 */
body: "Ok"
};
return;
}
const data = req.rawBody;
if (!data.startsWith('```')) {
context.res = {
status: 200,
body: req.rawBody
}
return
}
const regex = data.match(/^```([a-zA-Z]*)$/m)
const lang = regex[1]
if (!lang) {
context.res = {
status: 200,
body: req.rawBody
}
return
}
try {
const highlighted = Prism.highlight(data.replace(/```[a-zA-Z]*/m, '').replace('```', ''), Prism.languages[lang], lang)
// remove any backticks and the language
const highlightedCleaned = highlighted.trim()
context.res = {
status: 200,
body: `<pre class="language-${lang}"><code class="language-${lang}">${highlightedCleaned}</code></pre>`
}
} catch {
context.res = {
status: 200,
body: req.rawBody
}
}
return
};
export default httpTrigger;