Any chance of getting this into the Wiki, whereever we have Legal's
porting notes?
On 2007-01-09, at 17:01 PST, Philip Romanik wrote:
Hi Tucker,
I was about to say I don't have anything written down, but then I
found some notes. I'm attaching the list. I removed the last item
in my notes because it is no longer relevant (it was about moving
$debug blocks after the class which is no longer an issue).
Unfortunately, the notes aren't complete but Henry can look at the
existing code for guidance.
Phil
=====================
Defining a Class
Old:
---
LzNode = Class( "LzNode" , null , mvn() );
var mvn = function (){
var f = function ( parent , attrs , children , instcall ){
...
};
return f;
}
New:
----
initialize() is the class constructor
class LzNode {
function initialize ( parent , attrs , children , instcall ){
...
}
...
}
A static initialize() function runs once for each class
// From LzNode.lzs
static function initialize (prototype) {
// Ensure you have your own private dictionaries, not one
// inherited from your superclass
for (var hash in {setters: true, getters: true, defaultattrs: true,
__LZdelayedSetters: true, earlySetters: true} ) {
if (! prototype.hasOwnProperty(hash)) {
prototype[hash] = new LzInheritedHash(prototype[hash]);
}
}
}
Deriving from a base class:
class LzView extends LzNode {
}
Deriving from a trait:
The need for 'Instance' is only needed is there is no base class.
class LzDataText extends LzDataNode, Instance {
}
Defining variables
LzNode.prototype.defaultattrs = { $hasdefaultattrs : true };
LzNode.prototype.datapath = null; LzNode.prototype.setters ={
name : "setName" ,
id : "setID" ,
$events : "__LZsetEvents" ,
$refs : "__LZstoreRefs" ,
$delegates : "__LZstoreDelegates" ,
placement : -1 ,
datapath : "setDatapath",
$setters : -1,
$classrootdepth : "__LZsetClassRoot",
$datapath : "__LZmakeDatapath"
}
var defaultattrs = { $hasdefaultattrs : true };
var datapath = null;
var setters ={
name : "setName" ,
id : "setID" ,
$events : "__LZsetEvents" ,
$refs : "__LZstoreRefs" ,
$delegates : "__LZstoreDelegates" ,
placement : -1 ,
datapath : "setDatapath",
$setters : -1,
$classrootdepth : "__LZsetClassRoot",
$datapath : "__LZmakeDatapath"
};
Overriding variable values
OLD:
LzState:
LzState.prototype.$isstate = true;
New:
LzNode.lzs:
var $isstate = false;
LzState.lzs:
prototype.$isstate = true;
Static Functions
----------------
OLD:
LzView.__LZproxypolicies = [];
LzView.__LZcheckProxyPolicy= function ( url ){
var pol = _root.LzView.__LZproxypolicies;
for ( var i = pol.length-1; i >=0; i-- ){
var resp = pol[ i ] ( url );
if ( resp != null ) return resp;
}
return _root.canvas.proxied;
}
NEW:
static var __LZproxypolicies = [];
//--------------------------------------------------------------------
---------
// @keywords private
//--------------------------------------------------------------------
---------
static function __LZcheckProxyPolicy ( url ){
var pol = LzView.__LZproxypolicies;
for ( var i = pol.length-1; i >=0; i-- ){
var resp = pol[ i ] ( url );
if ( resp != null ) return resp;
}
return canvas.proxied;
}
=====================
Not if all it does is define attributes and methods. If it is doing
anything other than that, feel free to ask. (I'm hoping PhilR has a
checklist that he can send you...)
On 2007-01-09, at 09:52 PST, Henry Minsky wrote:
> I'm converting the rpc library code which uses the old "Class"
> mechanism to use the new"class" syntax, just wondering if there are
> any
> gotchas I should know about, mostly asking PhilR and Tucker if
> there there's anything non-obvious
> I should watch out for.
>