@@ -9,16 +9,24 @@ import remark from 'remark';
99
1010/** 转换 代码*/
1111const 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+ }
1418} ;
1519
1620const getMeta = ( meta : string | null ) : Record < string , string | boolean > => {
1721 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 ) ;
2230 }
2331 return metaData ;
2432} ;
@@ -27,23 +35,27 @@ const getMeta = (meta: string | null): Record<string, string | boolean> => {
2735const getCodeBlock = ( child : MarkDownTreeType [ 'children' ] , lang : string [ ] = [ 'jsx' , 'tsx' ] ) => {
2836 // 获取渲染部分
2937 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+ }
4454 }
45- }
46- } ) ;
55+ } ) ;
56+ } catch ( err ) {
57+ console . warn ( err ) ;
58+ }
4759 return codeBlock ;
4860} ;
4961
@@ -52,13 +64,19 @@ const createStr = (codeBlock: Record<string | number, CodeBlockItemType>) => {
5264 let baseCodeObjStr = `` ;
5365 let codeBlockValue = `` ;
5466 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+
6280 let indexStr = `${ baseCodeStr } const languages={${ languageStr } };\n const codeBlock={${ codeBlockValue } };\n const components={${ baseCodeObjStr } }` ;
6381 return indexStr ;
6482} ;
0 commit comments