JSDOC/ScopeParser.vala
[gnome.introspection-doc-generator] / JSDOC / ScopeParser.vala
index 3ba1366..ae7832f 100644 (file)
@@ -264,7 +264,7 @@ namespace JSDOC {
                            if (this.mode == ScopeParserMode.BUILDING_SYMBOL_TREE) {
                                var identifier = scope.getIdentifier(token.data,token) ;
                                
-                               if (identifier == false) {
+                               if (identifier == null) {
                                    scope.declareIdentifier(token.data, token);
                                } else {
                                    token.identifier = identifier;
@@ -472,9 +472,9 @@ namespace JSDOC {
                            //println("GOT IDENT: <B>" + symbol + "</B><BR/>");
                                 
                                //println("GOT IDENT (2): <B>" + symbol + "</B><BR/>");
-                           identifier = this.getIdentifier(symbol, scope, token);
+                           var identifier = this.getIdentifier(symbol, scope, token);
                            
-                           if (identifier == false) {
+                           if (identifier == null) {
 // BUG!find out where builtin is defined...
                                if (symbol.length <= 3 &&  Scope.builtin.indexOf(symbol) < 0) {
                                    // Here, we found an undeclared and un-namespaced symbol that is
@@ -515,12 +515,13 @@ namespace JSDOC {
                                    //print("MATCH!?");
                                    var _t = this;
                                    
-                                   
-                                   token.prefix.replace(/eval:var:([a-z_]+)/ig, function(m, a) {
-                                       //print("GOT: " + a);
-                                       var hi = _t.getIdentifier(a, scope, token);
-                                      // println("PROTECT "+a+" from munge" + (hi ? "FOUND" : "MISSING"));
-                                       if (hi) {
+                                   var regex = new GLib.Regex ("eval:var:([a-z_]+)",GLib.RegexCompileFlags.CASELESS );
+                                   regex.replace_eval (token.prefix, token.prefix.length, 0, 0, (match_info, result) => {
+                                               var a =  match_info.fetch(0);
+                                       var hi = this.getIdentifier(a, scope, token);
+                                              // println("PROTECT "+a+" from munge" + (hi ? "FOUND" : "MISSING"));
+                                       if (hi.length > 0) {
                                          //  print("PROTECT "+a+" from munge");
                                            //print(JSON.stringify(hi,null,4));
                                            hi.toMunge = false;
@@ -877,10 +878,10 @@ namespace JSDOC {
                 
            }
            
-           
+           Scope fnScope;
            //assert token.getType() == Token.LP;
            if (this.mode == ScopeParserMode.BUILDING_SYMBOL_TREE) {
-               var fnScope = new Scope(1, scope, token.n, '', token);
+               fnScope = new Scope(1, scope, token.n, '', token);
                
                //println("STORING SCOPE" + this.ts.cursor);
                
@@ -894,15 +895,15 @@ namespace JSDOC {
            //  print('FUNC-PARSE:' + JSON.stringify(token,null,4));
            // Parse function arguments.
            var args = token.items;
-           for (var argpos =0; argpos < args.length; argpos++) {
+           for (var argpos =0; argpos < args.size; argpos++) {
                 
-               token = args[argpos][0];
+               token = args.get(argpos).get(0);
                //print ("FUNC ARGS: " + token.toString())
                //assert token.getType() == Token.NAME ||
                //        token.getType() == Token.COMMA;
-               if (token.type == 'NAME' && this.mode == 'BUILDING_SYMBOL_TREE') {
-                   symbol = token.data;
-                   identifier = fnScope.declareIdentifier(symbol,token);
+               if (token.type == "NAME" && this.mode == ScopeParserMode.BUILDING_SYMBOL_TREE) {
+                   var symbol = token.data;
+                   var identifier = fnScope.declareIdentifier(symbol,token);
                    if (symbol == "$super" && argpos == 0) {
                        // Exception for Prototype 1.6...
                        identifier.preventMunging();
@@ -921,11 +922,9 @@ namespace JSDOC {
            //token = this.ts.nextTok();
            //print(token.toString());
            var outTS = this.ts;
-           var _this = this;
-           token.items.forEach(function(tar) {
-               _this.ts = new TokenStream(tar);
-               _this.parseScope(fnScope);
-               
+               foreach(var tar in token.items) {
+               this.ts = new TokenStream(tar);
+               this.parseScope(fnScope);
                
            });
            
@@ -938,9 +937,9 @@ namespace JSDOC {
            //print("ENDFN -1: " + this.ts.lookTok(-1).toString());
            //print("ENDFN 0: " + this.ts.lookTok(0).toString());
            //print("ENDFN 1: " + this.ts.lookTok(1).toString());
-       },
+       }
        
-       protectScopeFromObfuscation : function(scope) {
+       void protectScopeFromObfuscation (scope) {
                //assert scope != null;
            
            if (scope == this.globalScope) {
@@ -956,18 +955,20 @@ namespace JSDOC {
 
            //assert scope.getParentScope() == globalScope;
            scope.preventMunging();
-       },
+       }
        
-       getIdentifier: function(symbol, scope, token) {
-           var identifier;
-           while (scope != false) {
+       Token? getIdentifier(string symbol, Scope in_scope, Token token) 
+       {
+           Token identifier;
+           var scope = in_scope;
+           while (scope != null) {
                identifier = scope.getIdentifier(symbol, token);
                //println("ScopeParser.getIdentgetUsedSymbols("+symbol+")=" + scope.getUsedSymbols().join(','));
-               if (identifier) {
+               if (identifier != null) {
                    return identifier;
                }
                scope = scope.parent;
            }
-           return false;
+           return null;
        }
-};
+}