Trait Cheat Sheet Example

by Peter Seliger

HTML

<title>Trait Cheat Sheet Example :: ESX Trait Test</title>

<!-- esx-trait.js //-->
<script>
(function(r){function g(a){var c="none",b;Y(a)&&(ta(a)?c=ua:(b=Z(a),t("^class\\s+"+a.name+"\\s+\\{").test(b)?c=va:t("\\([^)]*\\)\\s+=>\\s+\\(").test(b)?c=wa:z(a)&&(c=xa(a)?ya:za(a)||Aa(a)||Ba(a)?Ca:aa)));return c===aa}function C(a){return["^\\[object\\s+",a,"\\]$"].join("")}function v(a,c){var b=Da[c];return!!b&&0<=b.indexOf(a)}function M(a,c,b){return function(){var d=arguments;c.apply(b,d);return a.apply(b,d)}}function N(a,c,b){return function(){var d=arguments,e=a.apply(b,d);c.apply(b,d);return e}}function Ea(a,c,b,d){return function(){var e=arguments;c.call(b,e,d);return a.apply(b,e)}}function Fa(a,c,b,d){return function(){var e=arguments,f=a.apply(b,e);c.call(b,e,d);return f}}function Ga(a,c,b,d){return function(){var e=arguments,f=a.apply(b,e);c.call(b,f,e,d);return f}}function Ha(a,c,b,d){return function(){var e=arguments,f;try{f=a.apply(b,e)}catch(l){c.call(b,l,e,d)}return f}}function Ia(a,c,b,d){return function(){var e=arguments,f,g;try{f=a.apply(b,e)}catch(m){g=m}c.call(b,g||f,e,d);return f}}function Ja(a,c,b,d){return function(){return c.call(b,a,c,arguments,d)}}function Ka(a,c){return function(){var b=this[a];g(b)||(b=u);this[a]=M(b,c,this)}}function La(a,c){return function(){var b=this[a];g(b)||(b=u);this[a]=N(b,c,this)}}function Ma(a,c){return function(b){var d=this[a];g(d)||(d=u);this[a]=Ea(d,c,this,b)}}function Na(a,c){return function(b){var d=this[a];g(d)||(d=u);this[a]=Fa(d,c,this,b)}}function Oa(a,c){return function(b){var d=this[a];g(d)||(d=u);this[a]=Ga(d,c,this,b)}}function Pa(a,c){return function(b){var d=this[a];g(d)||(d=u);this[a]=Ha(d,c,this,b)}}function Qa(a,c){return function(b){var d=this[a];g(d)||(d=u);this[a]=Ia(d,c,this,b)}}function Ra(a,c){return function(b){var d=this[a];g(d)||(d=u);this[a]=Ja(d,c,this,b)}}function ba(a,c,b){a.useTraits.rules.push(new A({type:"without",traitList:c,methodNameList:b}))}function...

SCSS

dl#console-log {
  dt {
    font-family: sans-serif;
    color: #249d7f;
  //color: #2795ee;
  }
  dd {
    margin: -7px 0 17px 2em;
    color: #a151d2;
  //color: #f18c16;
  }
}

JavaScript

var Trait_A = (function () {
  var
    smallTalk = function () {
      console.log("a");
    },
    bigTalk = function () {
      console.log("A");
    };

  return function Trait_A () {
    this.smallTalk = smallTalk;
    this.bigTalk = bigTalk;

    this.initialize = (function () { console.log("<Trait_A::initialize>"); });
  };

}());

var Trait_B = (function () {
  var
    smallTalk = function () {
      console.log("b");
    },
    bigTalk = function () {
      console.log("B");
    };

  return function Trait_B () {
    this.smallTalk = smallTalk;
    this.bigTalk = bigTalk;

   this.initialize = (function () { console.log("<Trait_B::initialize>"); });
  };

}());

var Trait_C = Trait.create(function (use, applicator) {

  var
    smallTalk = function () {
      console.log("c");
    },
    bigTalk = function () {
      console.log("C");
    };

  applicator(function Trait_C () {

    this.smallTalk = smallTalk;
    this.bigTalk = bigTalk;

    this.initialize = (function () { console.log("<Trait_C::initialize>"); });
  });

});



(function (console, elmLogList) {
  if (console) {

    console.log = function () {
      var
        argsArray = Array.from(arguments),
        message   = argsArray.shift(),

        elmDt     = document.createElement("dt"),
        elmDd     = document.createElement("dd"),

        elmPre    = document.createElement("pre"),
        elmCode   = document.createElement("code"),

        result    = argsArray.map(function (type) {
          return JSON.stringify(type);
        }).join(" ,");

      elmDt
        .appendChild(document.createTextNode(message));
      elmDd
        .appendChild(document.createElement("pre"))
        .appendChild(document.createElement("code"))
        .appendChild(document.createTextNode(result));

      elmLogList.appendChild(elmDt);
      elmLogList.appendChild(elmDd);
    }
  }
}(console, document.querySelector("#console-log")));



var trait = Trait.create(function (use, applicator) {


 ...