@@ -118,6 +118,7 @@ function slugify (string) {
118
118
var re = / [ \u2000 - \u206F \u2E00 - \u2E7F \\ ' ! " # $ % & ( ) * + , . \/ : ; < = > ? @ \[ \] ^ ` { | } ~ ] / g;
119
119
var maintainCase = false ;
120
120
var replacement = '-' ;
121
+
121
122
slugify . occurrences = slugify . occurrences || { } ;
122
123
123
124
if ( typeof string !== 'string' ) { return '' }
@@ -143,6 +144,27 @@ function slugify (string) {
143
144
return slug
144
145
}
145
146
147
+ slugify . clear = function ( ) {
148
+ slugify . occurrences = { } ;
149
+ } ;
150
+
151
+ var hasOwnProperty = Object . prototype . hasOwnProperty ;
152
+ var merge = Object . assign || function ( to ) {
153
+ var arguments$1 = arguments ;
154
+
155
+ for ( var i = 1 ; i < arguments . length ; i ++ ) {
156
+ var from = Object ( arguments$1 [ i ] ) ;
157
+
158
+ for ( var key in from ) {
159
+ if ( hasOwnProperty . call ( from , key ) ) {
160
+ to [ key ] = from [ key ] ;
161
+ }
162
+ }
163
+ }
164
+
165
+ return to
166
+ } ;
167
+
146
168
/**
147
169
* Active sidebar when scroll
148
170
* @link https://buble.surge.sh/
@@ -2411,50 +2433,66 @@ function tree (toc, tpl) {
2411
2433
}
2412
2434
2413
2435
var OPTIONS$1 = { } ;
2436
+ var markdown = marked ;
2437
+ var toc = [ ] ;
2414
2438
var CACHE = { } ;
2415
2439
2416
2440
var renderTo = function ( dom , content ) {
2417
2441
dom = typeof dom === 'object' ? dom : document . querySelector ( dom ) ;
2418
2442
dom . innerHTML = content ;
2443
+ slugify . clear ( ) ;
2419
2444
2420
2445
return dom
2421
2446
} ;
2422
- var toc = [ ] ;
2423
- var renderer = new marked . Renderer ( ) ;
2424
2447
2425
2448
/**
2426
- * render anchor tag
2427
- * @link https://github.com/chjj/marked#overriding-renderer-methods
2449
+ * init render
2450
+ * @param { Object } options
2428
2451
*/
2429
- renderer . heading = function ( text , level ) {
2430
- var slug = slugify ( text ) ;
2431
- var route = '' ;
2452
+ function init ( options ) {
2453
+ OPTIONS$1 = options ;
2432
2454
2433
- if ( OPTIONS$1 . router ) {
2434
- route = "#/" + ( getRoute ( ) ) ;
2435
- }
2455
+ var renderer = new marked . Renderer ( ) ;
2456
+ /**
2457
+ * render anchor tag
2458
+ * @link https://github.com/chjj/marked#overriding-renderer-methods
2459
+ */
2460
+ renderer . heading = function ( text , level ) {
2461
+ var slug = slugify ( text ) ;
2462
+ var route = '' ;
2463
+
2464
+ if ( OPTIONS$1 . router ) {
2465
+ route = "#/" + ( getRoute ( ) ) ;
2466
+ }
2436
2467
2437
- toc . push ( { level : level , slug : ( route + "#" + ( encodeURIComponent ( slug ) ) ) , title : text } ) ;
2468
+ toc . push ( { level : level , slug : ( route + "#" + ( encodeURIComponent ( slug ) ) ) , title : text } ) ;
2438
2469
2439
- return ( "<h" + level + " id=\"" + slug + "\"><a href=\"" + route + "#" + slug + "\" data-id=\"" + slug + "\" class=\"anchor\"><span>" + text + "</span></a></h" + level + ">" )
2440
- } ;
2441
- // highlight code
2442
- renderer . code = function ( code , lang ) {
2443
- if ( lang === void 0 ) lang = '' ;
2470
+ return ( "<h" + level + " id=\"" + slug + "\"><a href=\"" + route + "#" + slug + "\" data-id=\"" + slug + "\" class=\"anchor\"><span>" + text + "</span></a></h" + level + ">" )
2471
+ } ;
2472
+ // highlight code
2473
+ renderer . code = function ( code , lang ) {
2474
+ if ( lang === void 0 ) lang = '' ;
2444
2475
2445
- var hl = prism . highlight ( code , prism . languages [ lang ] || prism . languages . markup )
2446
- . replace ( / { { / g, '<span>{{</span>' ) ;
2476
+ var hl = prism . highlight ( code , prism . languages [ lang ] || prism . languages . markup )
2477
+ . replace ( / { { / g, '<span>{{</span>' ) ;
2447
2478
2448
- return ( "<pre data-lang=\"" + lang + "\"><code class=\"lang-" + lang + "\">" + hl + "</code></pre>" )
2449
- } ;
2450
- renderer . link = function ( href , title , text ) {
2451
- if ( OPTIONS$1 . router && ! / : / . test ( href ) ) {
2452
- href = ( "#/" + href ) . replace ( / \/ \/ / g, '/' ) ;
2453
- }
2479
+ return ( "<pre data-lang=\"" + lang + "\"><code class=\"lang-" + lang + "\">" + hl + "</code></pre>" )
2480
+ } ;
2481
+ renderer . link = function ( href , title , text ) {
2482
+ if ( OPTIONS$1 . router && ! / : / . test ( href ) ) {
2483
+ href = ( "#/" + href ) . replace ( / \/ \/ / g, '/' ) ;
2484
+ }
2454
2485
2455
- return ( "<a href=\"" + href + "\" title=\"" + ( title || '' ) + "\">" + text + "</a>" )
2456
- } ;
2457
- marked . setOptions ( { renderer : renderer } ) ;
2486
+ return ( "<a href=\"" + href + "\" title=\"" + ( title || '' ) + "\">" + text + "</a>" )
2487
+ } ;
2488
+
2489
+ if ( typeof OPTIONS$1 . markdown === 'function' ) {
2490
+ markdown . setOptions ( { renderer : renderer } ) ;
2491
+ markdown = OPTIONS$1 . markdown . call ( this , markdown ) ;
2492
+ } else {
2493
+ markdown . setOptions ( merge ( { renderer : renderer } , OPTIONS$1 . markdown ) ) ;
2494
+ }
2495
+ }
2458
2496
2459
2497
/**
2460
2498
* App
@@ -2483,7 +2521,7 @@ function renderApp (dom, replace) {
2483
2521
* article
2484
2522
*/
2485
2523
function renderArticle ( content ) {
2486
- renderTo ( 'article' , content ? marked ( content ) : 'not found' ) ;
2524
+ renderTo ( 'article' , content ? markdown ( content ) : 'not found' ) ;
2487
2525
if ( ! OPTIONS$1 . sidebar && ! OPTIONS$1 . loadSidebar ) { renderSidebar ( ) ; }
2488
2526
2489
2527
if ( content && typeof Vue !== 'undefined' && typeof Vuep !== 'undefined' ) {
@@ -2500,7 +2538,7 @@ function renderNavbar (content) {
2500
2538
if ( CACHE . navbar && CACHE . navbar === content ) { return }
2501
2539
CACHE . navbar = content ;
2502
2540
2503
- if ( content ) { renderTo ( 'nav' , marked ( content ) ) ; }
2541
+ if ( content ) { renderTo ( 'nav' , markdown ( content ) ) ; }
2504
2542
activeLink ( 'nav' ) ;
2505
2543
}
2506
2544
@@ -2511,7 +2549,7 @@ function renderSidebar (content) {
2511
2549
var html ;
2512
2550
2513
2551
if ( content ) {
2514
- html = marked ( content ) ;
2552
+ html = markdown ( content ) ;
2515
2553
} else if ( OPTIONS$1 . sidebar ) {
2516
2554
html = tree ( OPTIONS$1 . sidebar , '<ul>' ) ;
2517
2555
} else {
@@ -2544,7 +2582,7 @@ function renderCover (content) {
2544
2582
if ( renderCover . rendered ) { return }
2545
2583
2546
2584
// render cover
2547
- var html = marked ( content ) ;
2585
+ var html = markdown ( content ) ;
2548
2586
var match = html . trim ( ) . match ( '<p><img[^s]+src="(.*?)"[^a]+alt="(.*?)"></p>$' ) ;
2549
2587
2550
2588
// render background
@@ -2603,15 +2641,7 @@ function renderLoading (ref) {
2603
2641
}
2604
2642
}
2605
2643
2606
- /**
2607
- * Load Config
2608
- * @param {Object } options
2609
- */
2610
- function config ( options ) {
2611
- OPTIONS$1 = options ;
2612
- }
2613
-
2614
- var OPTIONS = {
2644
+ var OPTIONS = merge ( {
2615
2645
el : '#app' ,
2616
2646
repo : '' ,
2617
2647
maxLevel : 6 ,
@@ -2625,7 +2655,7 @@ var OPTIONS = {
2625
2655
coverpage : '' ,
2626
2656
basePath : '' ,
2627
2657
auto2top : false
2628
- } ;
2658
+ } , window . $docsify ) ;
2629
2659
var script = document . currentScript || [ ] . slice . call ( document . getElementsByTagName ( 'script' ) ) . pop ( ) ;
2630
2660
2631
2661
// load configuration for script attribute
@@ -2641,7 +2671,7 @@ if (script) {
2641
2671
}
2642
2672
2643
2673
// load options
2644
- config ( OPTIONS ) ;
2674
+ init ( OPTIONS ) ;
2645
2675
2646
2676
var cacheRoute = null ;
2647
2677
var cacheXhr = null ;
@@ -2701,7 +2731,10 @@ var Docsify = function () {
2701
2731
var dom = document . querySelector ( OPTIONS . el ) || document . body ;
2702
2732
var replace = dom !== document . body ;
2703
2733
var main = function ( ) {
2704
- mainRender ( function ( _ ) { return scrollIntoView ( ) ; } ) ;
2734
+ mainRender ( function ( _ ) {
2735
+ scrollIntoView ( ) ;
2736
+ activeLink ( 'nav' ) ;
2737
+ } ) ;
2705
2738
} ;
2706
2739
2707
2740
// Render app
0 commit comments