@@ -9,16 +9,24 @@ import remark from 'remark';
9
9
10
10
/** 转换 代码*/
11
11
const getProcessor = ( scope : string ) => {
12
- const child = remark . parse ( scope ) as MarkDownTreeType ;
13
- return child . children ;
12
+ try {
13
+ const child = remark . parse ( scope ) as MarkDownTreeType ;
14
+ return child . children ;
15
+ } catch ( err ) {
16
+ console . warn ( err ) ;
17
+ }
14
18
} ;
15
19
16
20
const getMeta = ( meta : string | null ) : Record < string , string | boolean > => {
17
21
let metaData : Record < string , string | boolean > = { } ;
18
- if ( meta ) {
19
- const [ metaItem ] = / m d x : ( .[ \w | : ] + ) / i. exec ( meta ) || [ ] ;
20
- const [ _ , field , val ] = ( metaItem || '' ) . split ( ':' ) . map ( ( item ) => item . trim ( ) ) ;
21
- metaData [ field ] = val || true ;
22
+ try {
23
+ if ( meta ) {
24
+ const [ metaItem ] = / m d x : ( .[ \w | : ] + ) / i. exec ( meta ) || [ ] ;
25
+ const [ _ , field , val ] = ( metaItem || '' ) . split ( ':' ) . map ( ( item ) => item . trim ( ) ) ;
26
+ metaData [ field ] = val || true ;
27
+ }
28
+ } catch ( err ) {
29
+ console . warn ( err ) ;
22
30
}
23
31
return metaData ;
24
32
} ;
@@ -27,23 +35,27 @@ const getMeta = (meta: string | null): Record<string, string | boolean> => {
27
35
const getCodeBlock = ( child : MarkDownTreeType [ 'children' ] , lang : string [ ] = [ 'jsx' , 'tsx' ] ) => {
28
36
// 获取渲染部分
29
37
const codeBlock : Record < string | number , CodeBlockItemType > = { } ;
30
- child . forEach ( ( item ) => {
31
- if ( item && item . type === 'code' && lang . includes ( item . lang ) ) {
32
- const line = item . position . start . line ;
33
- const metaData = getMeta ( item . meta ) ;
34
- if ( metaData . preview ) {
35
- let name = typeof metaData . preview === 'string' ? metaData . preview : line ;
36
- const funName = `BaseCode${ line } ` ;
37
- const returnCode = getTransformValue ( item . value , `${ funName } .${ lang } ` , funName ) ;
38
- codeBlock [ line ] = {
39
- code : returnCode ,
40
- name,
41
- language : item . lang ,
42
- value : item . value ,
43
- } ;
38
+ try {
39
+ child . forEach ( ( item ) => {
40
+ if ( item && item . type === 'code' && lang . includes ( item . lang ) ) {
41
+ const line = item . position . start . line ;
42
+ const metaData = getMeta ( item . meta ) ;
43
+ if ( metaData . preview ) {
44
+ let name = typeof metaData . preview === 'string' ? metaData . preview : line ;
45
+ const funName = `BaseCode${ line } ` ;
46
+ const returnCode = getTransformValue ( item . value , `${ funName } .${ lang } ` , funName ) ;
47
+ codeBlock [ line ] = {
48
+ code : returnCode ,
49
+ name,
50
+ language : item . lang ,
51
+ value : item . value ,
52
+ } ;
53
+ }
44
54
}
45
- }
46
- } ) ;
55
+ } ) ;
56
+ } catch ( err ) {
57
+ console . warn ( err ) ;
58
+ }
47
59
return codeBlock ;
48
60
} ;
49
61
@@ -52,13 +64,19 @@ const createStr = (codeBlock: Record<string | number, CodeBlockItemType>) => {
52
64
let baseCodeObjStr = `` ;
53
65
let codeBlockValue = `` ;
54
66
let languageStr = `` ;
55
- Object . entries ( codeBlock ) . forEach ( ( [ key , item ] ) => {
56
- const { code, value, language, name } = item ;
57
- baseCodeStr += `${ code } ;\n` ;
58
- baseCodeObjStr += `${ name } :BaseCode${ key } ,\n` ;
59
- codeBlockValue += `${ name } :${ JSON . stringify ( value ) } ,\n` ;
60
- languageStr += `${ name } :\`${ language } \`,\n` ;
61
- } ) ;
67
+
68
+ try {
69
+ Object . entries ( codeBlock ) . forEach ( ( [ key , item ] ) => {
70
+ const { code, value, language, name } = item ;
71
+ baseCodeStr += `${ code } ;\n` ;
72
+ baseCodeObjStr += `${ name } :BaseCode${ key } ,\n` ;
73
+ codeBlockValue += `${ name } :${ JSON . stringify ( value ) } ,\n` ;
74
+ languageStr += `${ name } :\`${ language } \`,\n` ;
75
+ } ) ;
76
+ } catch ( err ) {
77
+ console . warn ( err ) ;
78
+ }
79
+
62
80
let indexStr = `${ baseCodeStr } const languages={${ languageStr } };\n const codeBlock={${ codeBlockValue } };\n const components={${ baseCodeObjStr } }` ;
63
81
return indexStr ;
64
82
} ;
0 commit comments