mxd пре 4 година
родитељ
комит
dc24c1dc8b
1 измењених фајлова са 33 додато и 14 уклоњено
  1. 33 14
      src/main/resources/magicapi-support/monaco/language/magicscript.js

+ 33 - 14
src/main/resources/magicapi-support/monaco/language/magicscript.js

@@ -1431,18 +1431,24 @@ require(['vs/editor/editor.main'], function() {
                 endLineNumber: position.lineNumber,
                 endColumn: position.column
             });
-            var endDot = value.charAt(value.length - 1) == '.';
+            var char = value.charAt(value.length - 1);
             var input = ''
-            if(endDot){
+            if(char != '('){
                 return;
-            }else if(value.indexOf('.') > 1){
-                input = value.substring(0,value.lastIndexOf('.'));
             }
+            input = value.substring(0,value.lastIndexOf('('));
             try {
-                var className = Parser.parse(new TokenStream(Parser.tokenize(input)));
+                var tokens = Parser.tokenize(input);
+                var tokenLen = tokens.length;
+                if(tokenLen == 0 || tokens[tokenLen - 1].getTokenType() != TokenType.Identifier){
+                    return;
+                }
+                var token = tokens.pop();
+                tokens.pop();
+                var className = Parser.parse(new TokenStream(tokens));
                 var methods = findMethods(className);
                 if(methods){
-                   var name = value.substring(input.length + 1,value.indexOf('(',input.length + 1));
+                   var name = token.getText();
                    var signatures = [];
                    for(var i=0,len = methods.length;i<len;i++){
                         var method = methods[i];
@@ -1561,15 +1567,28 @@ require(['vs/editor/editor.main'], function() {
                     }
                 }
             }else if (value.length > 1) {
-                var endDot = value.charAt(value.length - 1) == '.';
-                var input = ''
-                if(endDot){
-                    input = value.substring(0, value.length - 1);
-                }else if(value.indexOf('.') > 1){
-                    input = value.substring(0,value.lastIndexOf('.'));
-                }
+                var input = value;
                 try{
-                    var className = Parser.parse(new TokenStream(Parser.tokenize(input)));
+                    var tokens = Parser.tokenize(input);
+                    var tokenLen = tokens.length;
+                    if(tokenLen == 0){
+                        return;
+                    }
+                    var tokenType = tokens[tokenLen - 1].getTokenType();
+
+                    if(tokenType == TokenType.Identifier){
+                        if(tokenLen == 1){
+                            return;
+                        }
+                        tokenType = tokens[tokenLen - 2].getTokenType();
+                        tokens.pop();
+                    }
+                    if(tokenType == TokenType.Period){
+                        tokens.pop();
+                    }else {
+                        return;
+                    }
+                    var className = Parser.parse(new TokenStream(tokens));
                     if (className) {
                         var enums = findEnums(className);
                         if(enums){