ts-markdown-parser
Version:
TypeScript library that converts markdown to HTML (with code support).
32 lines • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.highlightHtml = void 0;
const keywords_1 = require("./keywords");
const highlightHtml = (code) => {
// Step 1: Escape HTML entities
let escapedCode = code
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'")
.replace(/`/g, "`"); // Escape backticks as `
// e.g. class="my-class" OR class="my-class"
escapedCode = escapedCode.replace(/ ([a-zA-Z0-9-]+)="([a-zA-Z0-9-]+)"/g, ` <span class="md-special">$1="$2"</span>`);
// e.g. "https://example.com"
escapedCode = escapedCode.replace(/"https:\/\/(.+)"/g, `<span class="md-string">"https:\\\\\$1"</span>`);
// Highlight HTML comments
escapedCode = escapedCode.replace(/<!--(.*?)-->/g, `<span class="md-comment"><!--$1--></span>`);
// Step 2: Highlight reserved keywords
keywords_1.reservedKeywords.forEach((keyword) => {
const regexClose = new RegExp(`</${keyword}>`, "g");
escapedCode = escapedCode.replace(regexClose, `<span class="md-keyword"></${keyword}></span>`);
const regexOpen = new RegExp(`<${keyword}>`, "g");
escapedCode = escapedCode.replace(regexOpen, `<span class="md-keyword"><${keyword}></span>`);
const regexSpecialOpen = new RegExp(`<${keyword} `, "g");
escapedCode = escapedCode.replace(regexSpecialOpen, `<span class="md-keyword"><${keyword} </span>`);
});
return escapedCode;
};
exports.highlightHtml = highlightHtml;
//# sourceMappingURL=highlight.js.map