a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai <script type="text/javascript" src="/build/yui/yui.js"></script>
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai <!--script type="text/javascript" src="http://yui.yahooapis.com/3.2.0/build/yui/yui.js"></script-->
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai YUI({filter:"raw"}).use("base", "plugin", function(Y) {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai // ----- Main Class -----
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai function MainPlugin() {}
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai MainPlugin.NS = "mainplugin";
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai MainPlugin.NAME = "mainplugin";
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai function Main(config) {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Main.superclass.constructor.apply(this, arguments);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai value: "mainA"
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai value: "mainB"
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai main: "yui-main"
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai methodA : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("methodA called - Attr value:" + this.get("mainA"));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai methodB : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("Main methodB called - Attr value:" + this.get("mainB"));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai initializer : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("Main initializer");
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai // ----- ExtOne --
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai function ExtOnePlugin() {}
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtOnePlugin.NS = "extoneplugin";
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtOnePlugin.NAME = "extoneplugin";
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai function ExtOne() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("ExtOne initializer");
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai value: "extOne"
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai extOne : "yui-extone"
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtOnePlugin
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai methodB : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("ExtOne methodB called - Attr value:" + this.get("extOne"));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai methodC : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("methodC called - Attr value:" + this.get("extOne"));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai methodD : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("methodD called - Attr value:" + this.get("extOne"));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai // ----- ExtTwo --
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai function ExtTwoPlugin() {}
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtTwoPlugin.NS = "exttwoplugin";
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtTwoPlugin.NAME = "exttwoplugin";
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai function ExtTwo() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("ExtTwo initializer");
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai value: "extTwo"
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai extTwo : "yui-exttwo"
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtTwoPlugin
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai methodB : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("ExtTwo methodB called - Attr value:" + this.get("extTwo"));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai methodE : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("methodE called - Attr value:" + this.get("extTwo"));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai methodF : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("methodF called - Attr value:" + this.get("extTwo"));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai var CustMain = Y.Base.build("custmain", Main, [ExtOne, ExtTwo], {aggregates:["PLUGINS", "CLASSNAMES"]});
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai var c = new CustMain({mainA:"custMainA", extOne:"custExtOne"});
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("CustMain === Main [false]:" + (CustMain === Main));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("CustMain.superclass === Main [true]:" + (CustMain.superclass.constructor === Main));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("Main.superclass === Y.Base [true]:" + (Main.superclass.constructor === Y.Base));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("c instanceof Main [true]:" + (c instanceof Main));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("c instanceof CustMain [true]:" + (c instanceof CustMain));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("c instanceof Base [true]:" + (c instanceof Y.Base));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("c.hasImpl(Main) [false]:" + (c.hasImpl(Main)));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("c.hasImpl(ExtOne) [true]:" + (c.hasImpl(ExtOne)));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("c.hasImpl(ExtTwo) [true]:" + (c.hasImpl(ExtTwo)));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("CustMain.PLUGINS.length [3]:" + (CustMain.PLUGINS.length));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai var main = new Main();
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log('main.methodA [true]' + !!(main.methodA));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log('main.methodB [true]' + !!(main.methodB));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log('main.methodC [false]' + !!(main.methodC));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log('main.methodD [false]' + !!(main.methodD));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log('main.methodE [false]' + !!(main.methodE));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log('main.methodF [false]' + !!(main.methodF));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai function checkClass(clz) {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("# Methods");
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("# PLUGINS");
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai checkClass(Main);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai checkClass(CustMain);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai checkClass(ExtOne);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai checkClass(ExtOne);