Trait and Type Composition Example :: ESX Trait Test

by Peter Seliger

HTML

<title>Trait and Type Composition 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 withFirstLastEnumerable = (function () { // trait withFirstLastEnumerable {
                                             //
  function first() {                         //   function first() {
    return this[0];                          //     return this[0];
  }                                          //   }
  function last() {                          //   function last() {
    return this[this.length - 1];            //     return this[this.length - 1];
  }                                          //   }
                                             //
  return function () {                       //   applicator() {
                                             //
    this.first = first;                      //     this.first = first;
    this.last = last;                        //     this.last = last;
                                             //
    return this;                             //   //return this;
  };                                         //   }
}());                                        // }


var withEnumerableListProxy = Trait.create(function (use, applicator) { // trait withEnumerableListProxy {
  applicator(function (list) {               //   applicator(list) {
    withFirstLastEnumerable.call(list);      //     withFirstLastEnumerable.call(list);
                                             //
    this.first = function () {             	 //     this.first = function () {
      return list.first();                 	 //       return list.first();
    };                                     	 //     };
    this.last = function () {              	 //     this.last = function () {
      return list.last();                  	 //       return list.last();
    };                                     	 //     };
  });                                        //   }
});                                          // }


function EnumQueue() {                       // class EnumQueue {
  var                                 		   //  ...