<html>
<head>
<!--script type="text/javascript" src="http://yui.yahooapis.com/3.2.0/build/yui/yui.js"></script-->
<script type="text/javascript">
YUI({filter:"raw"}).use("base", "plugin", function(Y) {
// ----- Main Class -----
function MainPlugin() {}
MainPlugin.NS = "mainplugin";
MainPlugin.NAME = "mainplugin";
Y.extend(MainPlugin, Y.Plugin.Base);
function Main(config) {
Main.superclass.constructor.apply(this, arguments);
}
Main.NAME = "main";
Main.ATTRS = {
mainA : {
value: "mainA"
},
mainB : {
value: "mainB"
}
};
Main.CLASSNAMES = {
main: "yui-main"
};
Main.PLUGINS = [
MainPlugin
];
methodA : function() {
},
methodB : function() {
},
initializer : function() {
Y.log("Main initializer");
}
});
// ----- ExtOne --
function ExtOnePlugin() {}
ExtOnePlugin.NS = "extoneplugin";
ExtOnePlugin.NAME = "extoneplugin";
Y.extend(ExtOnePlugin, Y.Plugin.Base);
function ExtOne() {
Y.log("ExtOne initializer");
}
ExtOne.NAME = "extone";
ExtOne.ATTRS = {
extOne : {
value: "extOne"
}
};
extOne : "yui-extone"
};
ExtOne.PLUGINS = [
ExtOnePlugin
];
ExtOne.prototype = {
methodB : function() {
},
methodC : function() {
},
methodD : function() {
}
};
// ----- ExtTwo --
function ExtTwoPlugin() {}
ExtTwoPlugin.NS = "exttwoplugin";
ExtTwoPlugin.NAME = "exttwoplugin";
Y.extend(ExtTwoPlugin, Y.Plugin.Base);
function ExtTwo() {
Y.log("ExtTwo initializer");
}
ExtTwo.NAME = "exttwo";
ExtTwo.ATTRS = {
extTwo : {
value: "extTwo"
}
};
extTwo : "yui-exttwo"
};
ExtTwo.PLUGINS = [
ExtTwoPlugin
];
ExtTwo.prototype = {
methodB : function() {
},
methodE : function() {
},
methodF : function() {
}
};
var CustMain = Y.Base.build("custmain", Main, [ExtOne, ExtTwo], {aggregates:["PLUGINS", "CLASSNAMES"]});
var c = new CustMain({mainA:"custMainA", extOne:"custExtOne"});
c.methodA();
c.methodB();
c.methodC();
c.methodD();
c.methodE();
c.methodF();
Y.log("CustMain === Main [false]:" + (CustMain === Main));
Y.log("c instanceof Main [true]:" + (c instanceof Main));
Y.log("c instanceof CustMain [true]:" + (c instanceof CustMain));
var main = new Main();
function checkClass(clz) {
var p;
Y.log("========");
Y.log("========");
Y.log("# Methods");
for (p in clz.prototype) {
if (clz.prototype.hasOwnProperty(p)) {
Y.log(p);
}
}
Y.log("# ATTRS");
if (clz.ATTRS.hasOwnProperty(p)) {
Y.log(p);
}
}
/*
Y.log("# PLUGINS");
if (clz.PLUGINS.hasOwnProperty(p)) {
Y.log(p);
}
}*/
}
checkClass(Main);
checkClass(CustMain);
checkClass(ExtOne);
checkClass(ExtOne);
checkClass(Y.Base);
});
</script>
</head>
<body>
</body>
</html>