Преглед на файлове

[frontend] Add support for any available highlight rules in the SqlText vue component

Johan Ahlen преди 4 години
родител
ревизия
5b07f63ae6
променени са 1 файла, в които са добавени 8 реда и са изтрити 4 реда
  1. 8 4
      desktop/core/src/desktop/js/components/SqlText.vue

+ 8 - 4
desktop/core/src/desktop/js/components/SqlText.vue

@@ -29,6 +29,7 @@
   import { Prop, Watch } from 'vue-property-decorator';
 
   import { formatSql } from 'apps/editor/api';
+  import { getAceMode } from 'ext/aceHelper';
   import { hueLocalStorage } from 'utils/storageUtils';
 
   interface Ace {
@@ -58,16 +59,19 @@
         return;
       }
       const ace = getAce();
-      const impalaRules = ace.require('ace/mode/impala_highlight_rules');
-      const hiveRules = ace.require('ace/mode/hive_highlight_rules');
       const tokenizer = ace.require('ace/tokenizer');
       const text = ace.require('ace/layer/text');
       const config = ace.require('ace/config');
 
       const Tokenizer = tokenizer.Tokenizer;
+      let ruleModule;
+      try {
+        ruleModule = ace.require(`${getAceMode(this.dialect)}_highlight_rules`);
+      } catch (err) {}
       const Rules =
-        this.dialect === 'impala' ? impalaRules.ImpalaHighlightRules : hiveRules.HiveHighlightRules;
-
+        ruleModule && Object.keys(ruleModule).length === 1
+          ? ruleModule[Object.keys(ruleModule)[0]]
+          : ace.require(`sql_highlight_rules`).SqlHighlightRules;
       const res: string[] = [];
 
       // eslint-disable-next-line @typescript-eslint/ban-ts-comment