Mike, I'm not sure what will work best for this process, but for now
I'll try inlining my comments (in square brackets, BELOW the line
they're about) into "your" output and see if that makes sense.

//=================================================================
// JS CODE

/** @preserve CROSS-COMPILED BY MXMLJSC (329449.1) ON 2012-12-06 12:55:52
 */
[#Remove '@preserve', it is not needed and will litter the Closure
Compiler (CC) output]
/**
 * CROSS-COMPILED BY MXMLJSC (329449.1) ON 2012-12-06 12:52:19
[#Remove line, duplicate information (low priority)]
 *
 * Class: com.example.components.MyTextButton
[Remove line, information obvious (low priority)]
 * @constructor
 * @extends flash.display.Sprite
 */

// Constructor
[#Remove line, duplicate information (low priority)]

[#Insert 'goog.provides()' call to set up namespace]

[#Insert 'goog.requires()'; the equivalent of 'import' in AS]

/**
 * Constructor: com.example.components.MyTextButton()
 * @constructor
 * @this {com.example.components}
 */
[#Remove entire comment block, duplicate/unneeded information that
confuses CC (high priority)]
com.example.components.MyTextButton = function()
{
        var self = this;
                self.publicProperty /* : Number */ = 100;
                goog.base(this);
                return self;
}
[#Changes:
- no need for the 'self = this' workaround, this is only needed when a
'this' reference is passed into a closure;
- I don't see the need to 'return' anything from a constructor...
]

goog.inherits(com.example.components.MyTextButton, flash.display.Sprite);

/**
 * Member: com.example.components.MyTextButton.prototype._CLASS
 * @const
 * @type {com.example.components.MyTextButton}
 */
com.example.components.MyTextButton.prototype._CLASS =
com.example.components.MyTextButton;
;
[#Remove entire block, obsolete]

/**
 * Member: com.example.components.MyTextButton._privateVar
[#Remove 'Member' comment line, redundant information]
 * @private
 * @type {string}
 */
com.example.components.MyTextButton.prototype._privateVar /* : String
*/ = "do ";
[#Changes:
- don't create private vars on the prototype, instead 'create' them in
the constructor (as this._privateVar), as shown in the example
- remove type hint, CC uses the '@type' annotation]
;
[#Remove extra semi-colon]

/**
 * Member: com.example.components.MyTextButton.publicProperty
[#Remove 'Member' comment line, redundant information]
 * @type {number}
 */
com.example.components.MyTextButton.prototype.publicProperty /* :
Number */ = 100;
[#Remove type hint, CC uses the '@type' annotation]
;
[#Remove extra semi-colon]


/**
 * Method: com.example.components.MyTextButton.myFunction()
[#Remove 'Method' comment line, redundant information]
 * @this {com.example.components.MyTextButton}
 * @param {string} value
 * @return {string}
 */
com.example.components.MyTextButton.prototype.myFunction =
function(value /* : String */) /* : String */
{
                /** @type {com.example.components.MyTextButton} */
                var self = this;
                return (("Don't " + self._privateVar) + value);
}
[#Changes:
- remove type hints from function declaration, CC uses the '@param'
and '@return' annotations
- no need for the 'self = this' workaround, this is only needed when a
'this' reference is passed into a closure;
]
[#Insert semi-colon]

/**
 * Member: com.example.components.MyTextButton._PACKAGE
 * @const
 * @type {com.example.components}
 */
com.example.components.MyTextButton._PACKAGE = com.example.components;
[#Remove entire block, obsolete]


/**
 * Member: com.example.components.MyTextButton._NAME
 * @const
 * @type {string}
 */
com.example.components.MyTextButton._NAME = "MyTextButton";
[#Remove entire block, obsolete]

/**
 * Member: com.example.components.MyTextButton._FULLNAME
 * @const
 * @type {string}
 */
com.example.components.MyTextButton._FULLNAME =
"com.example.components.MyTextButton";
[#Remove entire block, obsolete]

/**
 * Member: com.example.components.MyTextButton._SUPER
 * @const
 * @type {flash.display.Sprite}
 */
com.example.components.MyTextButton._SUPER = flash.display.Sprite;
[#Remove entire block, obsolete]

/**
 * Member: com.example.components.MyTextButton._NAMESPACES
 * @const
 * @type {Object}
 */
com.example.components.MyTextButton._NAMESPACES = {
        "_privateVar::7:com.example.components.MyTextButton" : true,
        "publicProperty::2" : true,
        "myFunction::2" : true
}
[#Remove entire block, obsolete]

adobe.classes["com.example.components.MyTextButton"]  =
com.example.components.MyTextButton;
[#Remove line, obsolete]

// CODE
//=================================================================

Let's see if we can 'please' the Closure Linter (not easy, it's very
strict; it is however a very nice benchmark, so we should try). A
happy Linter means a happy Compiler, which means highly optimized code
and fewer errors.

Thanks for working with me on this,

EdB



--
Ix Multimedia Software

Jan Luykenstraat 27
3521 VB Utrecht

T. 06-51952295
I. www.ixsoftware.nl

Reply via email to