aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeonardo Bishop <me@leonardobishop.com>2024-12-16 03:12:13 +0000
committerLeonardo Bishop <me@leonardobishop.com>2024-12-16 03:12:13 +0000
commit9d72e57ff515d0a0f1dd8ba693f8920eae95bb75 (patch)
tree988c9d543c503ef4e5ae4b59c31bf6c3118e9a78
parent773d657ad103bd6911eddeac8618942bb9fcbcce (diff)
Add hightlight js
-rw-r--r--app/builder/pageDirectory.ts14
-rw-r--r--package-lock.json28
-rw-r--r--package.json9
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"
}
}