Bläddra i källkod

HUE-5686 [editor] Add Ace keyword and function completion for Pig

Johan Ahlen 8 år sedan
förälder
incheckning
dab3a34

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-pig.js


+ 15 - 1
tools/ace-editor/lib/ace/mode/pig.js

@@ -33,7 +33,21 @@ oop.inherits(Mode, TextMode);
     // this.lineCommentStart = ""/\\*"";
     // this.blockComment = {start: ""/*"", end: ""*/""};
     // Extra logic goes here.
-    this.$id = "ace/mode/pig"
+    this.$id = "ace/mode/pig";
+
+    this.getCompletions = function(state, session, pos, prefix) {
+        var keywords = this.$keywordList || this.$createKeywordList();
+        return keywords.map(function (word) {
+            return {
+                ignoreCase: true,
+                name: word,
+                value: word,
+                upperCaseValue: word.toUpperCase(),
+                score: 1,
+                meta: "keyword"
+            };
+        });
+    };
 }).call(Mode.prototype);
 
 exports.Mode = Mode;

+ 19 - 3
tools/ace-editor/lib/ace/mode/pig_highlight_rules.js

@@ -24,6 +24,19 @@ define(function (require, exports, module) {
     // regexp must not have capturing parentheses. Use (?:) instead.
     // regexps are ordered -> the first match is used
 
+    var keywords = (
+        "%DECLARE|%DEFAULT|VOID|IMPORT|RETURNS|ARRANGE|DEFINE|LOAD|FILTER|FOREACH|ORDER|CUBE|DISTINCT|COGROUP|CP|CD|DU|JOIN|CROSS|UNION|SPLIT|INTO|IF|OTHERWISE|ALL|AS|BY|USING|INNER|OUTER|ONSCHEMA|PARALLEL|PARTITION|GROUP|AND|ANY|OR|NOT|GENERATE|FLATTEN|ASC|DESC|DESCRIBE|EXPLAIN|IS|STREAM|THROUGH|STORE|MAPREDUCE|SHIP|CACHE|INPUT|OUTPUT|STDERROR|STDIN|STDOUT|LIMIT|SAMPLE|LEFT|RIGHT|FULL|EQ|GT|LT|GTE|LTE|NEQ|MATCHES|TRUE|FALSE|REGISTER|DUMP|EXEC|HELP|ILLUSTRATE|KILL|LS|MKDIR|MV|PIG|PWD|QUIT|RM|RMF|RUN|SET"
+    );
+
+    var builtinFunctions = (
+        "ABS|ACOS|ARITY|ASIN|ATAN|AVG|BAGSIZE|BINSTORAGE|BLOOM|BUILDBLOOM|CBRT|CEIL|CONCAT|COPYFROMLOCAL|COPYTOLOCAL|CAT|COR|COS|COSH|COUNT|COUNT_STAR|COV|CONSTANTSIZE|CUBEDIMENSIONS|DIFF|DISTINCT|DOUBLEABS|DOUBLEAVG|DOUBLEBASE|DOUBLEMAX|DOUBLEMIN|DOUBLEROUND|DOUBLESUM|EXP|FLOOR|FLOATABS|FLOATAVG|FLOATMAX|FLOATMIN|FLOATROUND|FLOATSUM|GENERICINVOKER|INDEXOF|INTABS|INTAVG|INTMAX|INTMIN|INTSUM|INVOKEFORDOUBLE|INVOKEFORFLOAT|INVOKEFORINT|INVOKEFORLONG|INVOKEFORSTRING|INVOKER|ISEMPTY|JSONLOADER|JSONMETADATA|JSONSTORAGE|LAST_INDEX_OF|LCFIRST|LOG|LOG10|LOWER|LONGABS|LONGAVG|LONGMAX|LONGMIN|LONGSUM|MAX|MIN|MAPSIZE|MONITOREDUDF|NONDETERMINISTIC|OUTPUTSCHEMA||PIGSTORAGE|PIGSTREAMING|RANDOM|REGEX_EXTRACT|REGEX_EXTRACT_ALL|REPLACE|ROUND|SIN|SINH|SIZE|SQRT|STRSPLIT|SUBSTRING|SUM|STRINGCONCAT|STRINGMAX|STRINGMIN|STRINGSIZE|TAN|TANH|TOBAG|TOKENIZE|TOMAP|TOP|TOTUPLE|TRIM|TEXTLOADER|TUPLESIZE|UCFIRST|UPPER|UTF8STORAGECONVERTER|EVAL|PIGDUMP|PIGSTORAGE"
+    );
+
+    var keywordMapper = this.createKeywordMapper({
+      "keyword": keywords,
+      "support.function": builtinFunctions
+    }, "identifier", true);
+
     this.$rules = {
       start: [
         {
@@ -238,9 +251,13 @@ define(function (require, exports, module) {
           token: "variable.other.alias",
           regex: /\b[a-z][a-z0-9_]*\b/,
           caseInsensitive: true
+        },
+        {
+          token : keywordMapper,
+          regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
         }
       ]
-    }
+    };
 
     this.normalizeRules();
   };
@@ -249,8 +266,7 @@ define(function (require, exports, module) {
     fileTypes: ["pig"],
     name: "Pig Latin",
     scopeName: "source.pig_latin"
-  }
-
+  };
 
   oop.inherits(PigLatinHighlightRules, TextHighlightRules);
 

Vissa filer visades inte eftersom för många filer har ändrats