diff options
| author | Leonardo Bishop <me@leonardobishop.com> | 2024-12-16 03:12:13 +0000 |
|---|---|---|
| committer | Leonardo Bishop <me@leonardobishop.com> | 2024-12-16 03:12:13 +0000 |
| commit | 9d72e57ff515d0a0f1dd8ba693f8920eae95bb75 (patch) | |
| tree | 988c9d543c503ef4e5ae4b59c31bf6c3118e9a78 | |
| parent | 773d657ad103bd6911eddeac8618942bb9fcbcce (diff) | |
Add hightlight js
| -rw-r--r-- | app/builder/pageDirectory.ts | 14 | ||||
| -rw-r--r-- | package-lock.json | 28 | ||||
| -rw-r--r-- | package.json | 9 |
3 files changed, 46 insertions, 5 deletions
diff --git a/app/builder/pageDirectory.ts b/app/builder/pageDirectory.ts index 82c14fa..f95bc51 100644 --- a/app/builder/pageDirectory.ts +++ b/app/builder/pageDirectory.ts @@ -5,8 +5,22 @@ import { marked } from "marked"; import { gfmHeadingId } from "marked-gfm-heading-id"; import markedFootnote from "marked-footnote"; import matter from "gray-matter"; +import { markedHighlight } from "marked-highlight"; +import hljs from "highlight.js"; +import hljsDefineSolidity from 'highlightjs-solidity'; + +hljsDefineSolidity(hljs); +hljs.initHighlightingOnLoad(); marked.use(gfmHeadingId()); +marked.use(markedHighlight({ + emptyLangClass: 'hljs', + langPrefix: 'hljs language-', + highlight(code, lang, info) { + const language = hljs.getLanguage(lang) ? lang : 'plaintext'; + return hljs.highlight(code, { language }).value; + } +})); export async function parsePage(page: Page) { try { diff --git a/package-lock.json b/package-lock.json index 8651bb7..89282a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "panulat", - "version": "1.2", + "version": "1.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "panulat", - "version": "1.2", + "version": "1.3", "dependencies": { "axios": "^1.4.0", "chokidar": "^3.5.3", @@ -18,10 +18,13 @@ "express": "^4.17.1", "glob": "^7.2.0", "gray-matter": "^4.0.3", + "highlight.js": "^10.7.3", + "highlightjs-solidity": "^2.0.6", "html-minifier-terser": "^7.2.0", "marked": "^7.0.0", "marked-footnote": "^1.2.4", "marked-gfm-heading-id": "^3.0.6", + "marked-highlight": "^2.2.1", "sass": "^1.66.1", "uglify-js": "^3.17.4", "winston": "^3.3.3", @@ -1891,6 +1894,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "engines": { + "node": "*" + } + }, + "node_modules/highlightjs-solidity": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.6.tgz", + "integrity": "sha512-DySXWfQghjm2l6a/flF+cteroJqD4gI8GSdL4PtvxZSsAHie8m3yVe2JFoRg03ROKT6hp2Lc/BxXkqerNmtQYg==" + }, "node_modules/html-minifier-terser": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", @@ -2231,6 +2247,14 @@ "marked": "^4 || ^5 || ^6 || ^7" } }, + "node_modules/marked-highlight": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/marked-highlight/-/marked-highlight-2.2.1.tgz", + "integrity": "sha512-SiCIeEiQbs9TxGwle9/OwbOejHCZsohQRaNTY2u8euEXYt2rYUFoiImUirThU3Gd/o6Q1gHGtH9qloHlbJpNIA==", + "peerDependencies": { + "marked": ">=4 <16" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", diff --git a/package.json b/package.json index 286b2a2..055771c 100644 --- a/package.json +++ b/package.json @@ -19,10 +19,13 @@ "express": "^4.17.1", "glob": "^7.2.0", "gray-matter": "^4.0.3", + "highlight.js": "^10.7.3", + "highlightjs-solidity": "^2.0.6", "html-minifier-terser": "^7.2.0", "marked": "^7.0.0", "marked-footnote": "^1.2.4", "marked-gfm-heading-id": "^3.0.6", + "marked-highlight": "^2.2.1", "sass": "^1.66.1", "uglify-js": "^3.17.4", "winston": "^3.3.3", @@ -31,16 +34,16 @@ "type": "module", "devDependencies": { "@types/clean-css": "^4.2.6", - "@types/html-minifier-terser": "^7.0.0", "@types/dateformat": "^5.0.0", "@types/escape-html": "^1.0.1", "@types/express": "^4.17.13", "@types/glob": "^7.2.0", + "@types/html-minifier-terser": "^7.0.0", "@types/uglify-js": "^3.17.1", "@types/ws": "^8.5.4", "@typescript-eslint/eslint-plugin": "^5.7.0", "@typescript-eslint/parser": "^5.7.0", - "typescript": "5.5.4", - "eslint": "^8.5.0" + "eslint": "^8.5.0", + "typescript": "5.5.4" } } |
