Example #1
0
 get: function (src) {
     var keys = this.keys,
         _keys = this._keys;
     
     if (keys.pending) {
         _keys.length = 0;
         
         _keys.push.apply(_keys, utils.chain(keys).
             map(function (key) {
                 var from, to, by;
                 switch (typeof key) {
                     case 'string':
                     case 'number':
                         return key;
                     case 'object':
                         if (!utils.isArray(key)) {
                             from = key.from || 0;
                             to = key.to + 1;
                             by = key.by || 1;
                             key = utils.range(from, to, by);
                         }
                         return key;
                 }
             }).
             flatten().
             value());
             
         keys.pending = false;
     }
     
     return utils.pick(src, _keys);
 }
Example #2
0
 tokens: { get: function () {
     if (!this._tokens) {
         this._tokens = utils.chain(this).
             keys().
             map(function (key) {
                 var fn;
                 if (key !== 'define' &&
                     key !== 'tokens' &&
                     key !== 'parse' &&
                     (fn = exports[key]) &&
                     typeof fn === 'function' &&
                     fn.token instanceof RegExp
                 ) {
                     return fn.token;
                 }
             }).
             compact().
             sort(function (a, b) {
                 return b.source.length - a.source.length;
             }).
             value();
     }
     return this._tokens;
 }, enumerable: true },