a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai<html>
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai<head>
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai <title>Base.build</title>
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
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai <script type="text/javascript">
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai YUI({filter:"raw"}).use("base", "plugin", function(Y) {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai // ----- Main Class -----
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai function MainPlugin() {}
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai MainPlugin.NS = "mainplugin";
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai MainPlugin.NAME = "mainplugin";
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.extend(MainPlugin, Y.Plugin.Base);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai function Main(config) {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Main.superclass.constructor.apply(this, arguments);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai }
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Main.NAME = "main";
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Main.ATTRS = {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai mainA : {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai value: "mainA"
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai },
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai mainB : {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai value: "mainB"
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai }
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai };
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Main.CLASSNAMES = {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai main: "yui-main"
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai };
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Main.PLUGINS = [
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai MainPlugin
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ];
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.extend(Main, Y.Base, {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai methodA : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("methodA called - Attr value:" + this.get("mainA"));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai },
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai methodB : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("Main methodB called - Attr value:" + this.get("mainB"));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai },
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai initializer : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("Main initializer");
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai }
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai });
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai // ----- ExtOne --
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai function ExtOnePlugin() {}
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtOnePlugin.NS = "extoneplugin";
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtOnePlugin.NAME = "extoneplugin";
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.extend(ExtOnePlugin, Y.Plugin.Base);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai function ExtOne() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("ExtOne initializer");
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai }
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtOne.NAME = "extone";
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtOne.ATTRS = {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai extOne : {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai value: "extOne"
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai }
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai };
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtOne.CLASSNAMES = {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai extOne : "yui-extone"
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai };
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtOne.PLUGINS = [
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtOnePlugin
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ];
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtOne.prototype = {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai methodB : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("ExtOne methodB called - Attr value:" + this.get("extOne"));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai },
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai methodC : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("methodC called - Attr value:" + this.get("extOne"));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai },
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai methodD : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("methodD called - Attr value:" + this.get("extOne"));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai }
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai };
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai // ----- ExtTwo --
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai function ExtTwoPlugin() {}
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtTwoPlugin.NS = "exttwoplugin";
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtTwoPlugin.NAME = "exttwoplugin";
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.extend(ExtTwoPlugin, Y.Plugin.Base);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai function ExtTwo() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("ExtTwo initializer");
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai }
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtTwo.NAME = "exttwo";
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtTwo.ATTRS = {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai extTwo : {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai value: "extTwo"
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai }
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai };
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtTwo.CLASSNAMES = {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai extTwo : "yui-exttwo"
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai };
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtTwo.PLUGINS = [
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtTwoPlugin
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ];
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai ExtTwo.prototype = {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai methodB : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("ExtTwo methodB called - Attr value:" + this.get("extTwo"));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai },
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai methodE : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("methodE called - Attr value:" + this.get("extTwo"));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai },
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai methodF : function() {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("methodF called - Attr value:" + this.get("extTwo"));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai }
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai };
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
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
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai c.methodA();
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai c.methodB();
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai c.methodC();
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai c.methodD();
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai c.methodE();
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai c.methodF();
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
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
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
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
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("CustMain.PLUGINS.length [3]:" + (CustMain.PLUGINS.length));
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
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
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai function checkClass(clz) {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai var p;
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("========");
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log(clz.NAME);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("========");
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("# Methods");
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai for (p in clz.prototype) {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai if (clz.prototype.hasOwnProperty(p)) {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log(p);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai }
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai }
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("# ATTRS");
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai for (p in clz.ATTRS) {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai if (clz.ATTRS.hasOwnProperty(p)) {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log(p);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai }
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai }
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai /*
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log("# PLUGINS");
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai for (p in clz.PLUGINS) {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai if (clz.PLUGINS.hasOwnProperty(p)) {
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai Y.log(p);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai }
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai }*/
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai }
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai checkClass(Main);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai checkClass(CustMain);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai checkClass(ExtOne);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai checkClass(ExtOne);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai checkClass(Y.Base);
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai });
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai </script>
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai</head>
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai<body>
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai</body>
a091e633a8a28a2f787150f3b87e4e4ec8e717baSatyen Desai</html>