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