@@ -2,12 +2,24 @@ import path from "path";
2
2
import fs from "fs/promises" ;
3
3
import matter from "gray-matter" ;
4
4
import { titleCase } from "title-case" ;
5
- import { marked } from "marked" ;
5
+ import { Marked } from "marked" ;
6
+ import { markedHighlight } from "marked-highlight" ;
6
7
import hljs from "highlight.js" ;
7
8
8
9
const DEFAULT_ICON = "info-circle" ;
9
10
const lessonsPath = path . join ( process . cwd ( ) , "lessons" ) ;
10
11
12
+ const marked = new Marked (
13
+ markedHighlight ( {
14
+ baseUrl : process . env . BASE_URL ? process . env . BASE_URL + "/" : "/" ,
15
+ highlight : function ( code , lang ) {
16
+ const language = hljs . getLanguage ( lang ) ? lang : "plaintext" ;
17
+ return hljs . highlight ( code , { language } ) . value ;
18
+ } ,
19
+ langPrefix : "hljs language-" ,
20
+ } )
21
+ ) ;
22
+
11
23
function getTitle ( slug , override ) {
12
24
let title = override ;
13
25
if ( ! title ) {
@@ -43,15 +55,6 @@ function slugify(inputPath) {
43
55
}
44
56
45
57
export async function getLessons ( ) {
46
- marked . setOptions ( {
47
- baseUrl : process . env . BASE_URL ? process . env . BASE_URL + "/" : "/" ,
48
- highlight : function ( code , lang ) {
49
- const language = hljs . getLanguage ( lang ) ? lang : "plaintext" ;
50
- return hljs . highlight ( code , { language } ) . value ;
51
- } ,
52
- langPrefix : "hljs language-" ,
53
- } ) ;
54
-
55
58
const dir = await fs . readdir ( lessonsPath ) ;
56
59
const sections = [ ] ;
57
60
@@ -137,7 +140,7 @@ export async function getLesson(targetDir, targetFile) {
137
140
const filePath = path . join ( lessonsPath , dirPath , slugPath ) ;
138
141
const file = await fs . readFile ( filePath ) ;
139
142
const { data, content } = matter ( file . toString ( ) ) ;
140
- const html = marked ( content ) ;
143
+ const html = marked . parse ( content ) ;
141
144
const title = getTitle ( targetFile , data . title ) ;
142
145
const meta = await getMeta ( dirPath ) ;
143
146
0 commit comments