@@ -9,27 +9,29 @@ module.exports = md => {
9
9
const [ tokens , idx , options ] = args
10
10
const token = tokens [ idx ]
11
11
12
- const rawInfo = token . info
13
- if ( ! rawInfo || ! RE . test ( rawInfo ) ) {
14
- return fence ( ...args )
15
- }
12
+ if ( ! token . lineNumbers ) {
13
+ const rawInfo = token . info
14
+ if ( ! rawInfo || ! RE . test ( rawInfo ) ) {
15
+ return fence ( ...args )
16
+ }
16
17
17
- const langName = rawInfo . replace ( RE , '' ) . trim ( )
18
- // ensure the next plugin get the correct lang.
19
- token . info = langName
18
+ const langName = rawInfo . replace ( RE , '' ) . trim ( )
19
+ // ensure the next plugin get the correct lang.
20
+ token . info = langName
20
21
21
- const lineNumbers = RE . exec ( rawInfo ) [ 1 ]
22
- . split ( ',' )
23
- . map ( v => v . split ( '-' ) . map ( v => parseInt ( v , 10 ) ) )
22
+ token . lineNumbers = RE . exec ( rawInfo ) [ 1 ]
23
+ . split ( ',' )
24
+ . map ( v => v . split ( '-' ) . map ( v => parseInt ( v , 10 ) ) )
25
+ }
24
26
25
27
const code = options . highlight
26
- ? options . highlight ( token . content , langName )
28
+ ? options . highlight ( token . content , token . info )
27
29
: token . content
28
30
29
31
const rawCode = code . replace ( wrapperRE , '' )
30
32
const highlightLinesCode = rawCode . split ( '\n' ) . map ( ( split , index ) => {
31
33
const lineNumber = index + 1
32
- const inRange = lineNumbers . some ( ( [ start , end ] ) => {
34
+ const inRange = token . lineNumbers . some ( ( [ start , end ] ) => {
33
35
if ( start && end ) {
34
36
return lineNumber >= start && lineNumber <= end
35
37
}
0 commit comments