@@ -2,9 +2,10 @@ import marked from 'marked'
2
2
import Prism from 'prismjs'
3
3
import * as tpl from './tpl'
4
4
import { activeLink , scrollActiveSidebar , bindToggle , scroll2Top , sticky } from './event'
5
- import { genTree , getRoute , isMobile , slugify } from './util'
5
+ import { genTree , getRoute , isMobile , slugify , merge } from './util'
6
6
7
7
let OPTIONS = { }
8
+ let toc = [ ]
8
9
const CACHE = { }
9
10
10
11
const renderTo = function ( dom , content ) {
@@ -14,40 +15,47 @@ const renderTo = function (dom, content) {
14
15
15
16
return dom
16
17
}
17
- let toc = [ ]
18
- const renderer = new marked . Renderer ( )
19
18
20
19
/**
21
- * render anchor tag
22
- * @link https://github.com/chjj/marked#overriding-renderer-methods
20
+ * init render
21
+ * @param { Object } options
23
22
*/
24
- renderer . heading = function ( text , level ) {
25
- const slug = slugify ( text )
26
- let route = ''
23
+ export function init ( options ) {
24
+ OPTIONS = options
27
25
28
- if ( OPTIONS . router ) {
29
- route = `#/${ getRoute ( ) } `
30
- }
26
+ const renderer = new marked . Renderer ( )
27
+ /**
28
+ * render anchor tag
29
+ * @link https://github.com/chjj/marked#overriding-renderer-methods
30
+ */
31
+ renderer . heading = function ( text , level ) {
32
+ const slug = slugify ( text )
33
+ let route = ''
34
+
35
+ if ( OPTIONS . router ) {
36
+ route = `#/${ getRoute ( ) } `
37
+ }
31
38
32
- toc . push ( { level, slug : `${ route } #${ encodeURIComponent ( slug ) } ` , title : text } )
39
+ toc . push ( { level, slug : `${ route } #${ encodeURIComponent ( slug ) } ` , title : text } )
33
40
34
- return `<h${ level } id="${ slug } "><a href="${ route } #${ slug } " data-id="${ slug } " class="anchor"><span>${ text } </span></a></h${ level } >`
35
- }
36
- // highlight code
37
- renderer . code = function ( code , lang = '' ) {
38
- const hl = Prism . highlight ( code , Prism . languages [ lang ] || Prism . languages . markup )
39
- . replace ( / { { / g, '<span>{{</span>' )
41
+ return `<h${ level } id="${ slug } "><a href="${ route } #${ slug } " data-id="${ slug } " class="anchor"><span>${ text } </span></a></h${ level } >`
42
+ }
43
+ // highlight code
44
+ renderer . code = function ( code , lang = '' ) {
45
+ const hl = Prism . highlight ( code , Prism . languages [ lang ] || Prism . languages . markup )
46
+ . replace ( / { { / g, '<span>{{</span>' )
40
47
41
- return `<pre data-lang="${ lang } "><code class="lang-${ lang } ">${ hl } </code></pre>`
42
- }
43
- renderer . link = function ( href , title , text ) {
44
- if ( OPTIONS . router && ! / : / . test ( href ) ) {
45
- href = `#/${ href } ` . replace ( / \/ \/ / g, '/' )
48
+ return `<pre data-lang="${ lang } "><code class="lang-${ lang } ">${ hl } </code></pre>`
46
49
}
50
+ renderer . link = function ( href , title , text ) {
51
+ if ( OPTIONS . router && ! / : / . test ( href ) ) {
52
+ href = `#/${ href } ` . replace ( / \/ \/ / g, '/' )
53
+ }
47
54
48
- return `<a href="${ href } " title="${ title || '' } ">${ text } </a>`
55
+ return `<a href="${ href } " title="${ title || '' } ">${ text } </a>`
56
+ }
57
+ marked . setOptions ( merge ( { renderer } , OPTIONS . marked ) )
49
58
}
50
- marked . setOptions ( { renderer } )
51
59
52
60
/**
53
61
* App
@@ -191,12 +199,3 @@ export function renderLoading ({ loaded, total, step }) {
191
199
} , 200 )
192
200
}
193
201
}
194
-
195
- /**
196
- * Load Config
197
- * @param {Object } options
198
- */
199
- export function config ( options ) {
200
- OPTIONS = options
201
- }
202
-
0 commit comments