Przeglądaj źródła

feat: added support for diff with syntax highlight

Hamzat Victor Oluwabori 3 lat temu
rodzic
commit
2bf38656a3
1 zmienionych plików z 10 dodań i 4 usunięć
  1. 10 4
      src/generator.js

+ 10 - 4
src/generator.js

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