Procházet zdrojové kódy

feat: added support for diff with syntax highlight

Hamzat Victor Oluwabori před 3 roky
rodič
revize
2bf38656a3
1 změnil soubory, kde provedl 10 přidání a 4 odebrání
  1. 10 4
      src/generator.js

+ 10 - 4
src/generator.js

@@ -196,11 +196,17 @@ const rehypePrismGenerator = (refractor) => {
       // Syntax highlight
       // Syntax highlight
       if (lang) {
       if (lang) {
         try {
         try {
+          let rootLang
+          if (lang.includes('diff:')){
+            rootLang=lang.split(':')[1]
+          } else{
+            rootLang=lang
+          }
           // @ts-ignore
           // @ts-ignore
-          refractorRoot = refractor.highlight(toString(node), lang)
+          refractorRoot = refractor.highlight(toString(node), rootLang)
           // @ts-ignore className is already an array
           // @ts-ignore className is already an array
           parent.properties.className = (parent.properties.className || []).concat(
           parent.properties.className = (parent.properties.className || []).concat(
-            'language-' + lang
+            'language-' + rootLang
           )
           )
         } catch (err) {
         } catch (err) {
           if (options.ignoreMissing && /Unknown language/.test(err.message)) {
           if (options.ignoreMissing && /Unknown language/.test(err.message)) {
@@ -267,9 +273,9 @@ const rehypePrismGenerator = (refractor) => {
         }
         }
 
 
         // Diff classes
         // Diff classes
-        if (lang === 'diff' && toString(line).substring(0, 1) === '-') {
+        if ((lang === 'diff' || lang.includes('diff:')) && toString(line).substring(0, 1) === '-') {
           line.properties.className.push('deleted')
           line.properties.className.push('deleted')
-        } else if (lang === 'diff' && toString(line).substring(0, 1) === '+') {
+        } else if ((lang === 'diff' || lang.includes('diff:')) && toString(line).substring(0, 1) === '+') {
           line.properties.className.push('inserted')
           line.properties.className.push('inserted')
         }
         }
       }
       }