X-Git-Url: http://git.roojs.org/?p=gnome.introspection-doc-generator;a=blobdiff_plain;f=JSDOC%2FScope.js;h=5fe7403f1007939bf227d9de5dde693eaebe83ec;hp=49d6cbdda7d4d6238a21aff1de4fb446ab564e03;hb=bb1da2c04b0e59e75cff3317798af860f3439a11;hpb=d69564e8fe96550b418ef516a1ae5e44035da3eb diff --git a/JSDOC/Scope.js b/JSDOC/Scope.js index 49d6cbd..5fe7403 100644 --- a/JSDOC/Scope.js +++ b/JSDOC/Scope.js @@ -6,11 +6,11 @@ * // FIXME - I need this to do next() without doccomments.. */ -Identifier = imports['JSDOC/Identifier.js'].Identifier +Identifier = imports.Identifier.Identifier XObject = imports.XObject.XObject; -function Scope(braceN, parent, startTokN, lastIdent) +function Scope(braceN, parent, startTokN, lastIdent, token) { if (lastIdent.length) { // println("NEW SCOPE: " + lastIdent); @@ -23,9 +23,10 @@ function Scope(braceN, parent, startTokN, lastIdent) this.subScopes = []; this.hints = { }; this.ident = lastIdent; + this.gid = Scope.gid++; - - //println("ADD SCOPE(" + this.id + ") TO "+ (parent ? this.parent.id : 'TOP') + "
"); + print("ADD SCOPE(" + this.gid + ") TO "+ (parent ? this.parent.gid : 'TOP') + ' : ' + + (token ? token.toString() : '')); if (parent) { this.parent.subScopes.push(this); @@ -45,7 +46,7 @@ Scope.prototype = { braceN : -1, parent : false, subScopes : false, - identifiers : false, + identifiers : false, // map of identifiers to {Identifier} objects hints: false, mungeM : true, ident: '', @@ -54,7 +55,7 @@ Scope.prototype = { protectedVars : {}, // only used by to parent.. declareIdentifier : function(symbol, token) { - //println("ADD IDENT(" + this.id + "):" + symbol+"
"); + print("SCOPE : " + this.gid + " : " + token.toString()+""); if (typeof(this.identifiers[symbol])== 'undefined') { @@ -72,8 +73,17 @@ Scope.prototype = { this.addToParentScope(symbol); return this.identifiers[symbol]; }, - getIdentifier : function(symbol) { - return (typeof(this.identifiers[symbol])== 'undefined') ? false : this.identifiers[symbol]; + getIdentifier : function(symbol, token) { + if (typeof(this.identifiers[symbol])== 'undefined') { + if (['String', 'Date'].indexOf(symbol)> -1) { + return false; + } + + print("SCOPE : " + this.gid +" = SYMBOL NOT FOUND?" + token.toString()); + return false; + } + print("SCOPE : " + this.gid +" = FOUND:" + token.toString()); + return this.identifiers[symbol]; }, addHint : function(varName, varType) { @@ -120,7 +130,8 @@ Scope.prototype = { return result; }, /** - we need to register short vairalbes so they never get munged into.. */ - addToParentScope: function(ident) { + addToParentScope: function(ident) + { if (ident.length > 2) { return; } @@ -134,7 +145,8 @@ Scope.prototype = { } }, - isProtectedVar: function(ident) { + isProtectedVar: function(ident) + { if (ident.length > 2) { return false; } @@ -149,9 +161,14 @@ Scope.prototype = { return false; }, - + /** + * set's all the munged values on the identifiers. + * + * + */ - munge :function() { + munge :function() + { if (!this.mungeM) { // Stop right here if this scope was flagged as unsafe for munging. @@ -163,13 +180,18 @@ Scope.prototype = { } - //println("MUNGE: Scope:" + this.id+"
"); + var pickFromSet = 1; // Do not munge symbols in the global scope! if (this.parent) { - + + var all = []; + for (var ii in this.identifiers) { + all.push(ii); + } + //print("MUNGE: " + all.join(', ')); //println("MUNGE: Building FreeSyms:" + this.id+"
"); @@ -185,30 +207,9 @@ Scope.prototype = { freeSymbols.push(batch[i]); } } - /* - var exsymbols = function(n) { - if (sy.indexOf(n) > -1) { - return; - } - freeSymbols.push(n); - } - */ - addSyms(JSDOC.Scope.ones); - - //if (freeSymbols.length == 0) { - // pickFromSet = 2; - // JSDOC.Scope.twos.filter(exsymbols); - - //} - //if (freeSymbols.length == 0) { - // pickFromSet = 3; - // throw "disabled threes!" - // JSDOC.Scope.threes.filter(exsymbols); - // - //} - //if (freeSymbols.length == 0) { - // throw "The Compressor ran out of symbols. Aborting...???? "; - // } + + addSyms(Scope.ones); + var repsym = ''; //println(freeSymbols.toSource()); @@ -219,18 +220,21 @@ Scope.prototype = { if (!this.identifiers[i].toMunge) { + //print("SKIP toMunge==false : " + i) continue; } if (this.isProtectedVar(i)) { + //print("SKIP PROTECTED: " + i) continue; // } - if (this.identifiers[i].constructor != JSDOC.Identifier) { - continue; - } + //if (this.identifiers[i].constructor != Identifier) { + // print("SKIP NOT IDENTIFIER : " + i) + // continue; + // } // println("IDENT:" +i+'
'); if (!repsym.length) { @@ -247,24 +251,25 @@ Scope.prototype = { //println([ repsym,mungedValue ]); if (this.mungeM && repsym.length < mungedValue.length) { - //println("REPLACE:"+ mungedValue +" with " + repsym + "
"); + //print("REPLACE:"+ mungedValue +" with " + repsym ); mungedValue = repsym; repsym = ''; } + identifier.mungedValue = mungedValue; } //println("MUNGE: Done " + this.id+"
"); } this.munged = true; //println("Doing sub scopes"); - for (var i = 0; i < this.subScopes.length; i++) { - var ss = this.subScopes[i]; + for (var j = 0; j < this.subScopes.length; j++) { + var ss = this.subScopes[j]; ss.munge(); } } -}); +}; @@ -318,4 +323,4 @@ XObject.extend(Scope, { }) // init the scope constants.. Scope.init(); - \ No newline at end of file +Scope.gid = 0; \ No newline at end of file