• Jump To … +
    underscore.array.builders.js underscore.array.selectors.js underscore.function.arity.js underscore.function.combinators.js underscore.function.iterators.js underscore.function.predicates.js underscore.object.builders.js underscore.object.selectors.js underscore.util.existential.js underscore.util.strings.js underscore.util.trampolines.js
  • underscore.util.trampolines.js

  • ¶

    Underscore-contrib (underscore.util.trampolines.js 0.0.1) (c) 2013 Michael Fogus, DocumentCloud and Investigative Reporters & Editors Underscore-contrib may be freely distributed under the MIT license.

    (function(root) {
  • ¶

    Baseline setup

  • ¶

    Establish the root object, window in the browser, or global on the server.

      var _ = root._ || require('underscore');
  • ¶

    Helpers

  • ¶

    Mixing in the truthiness

      _.mixin({
        done: function(value) {
          var ret = _(value);
          ret.stopTrampoline = true;
          return ret;
        },
    
        trampoline: function(fun /*, args */) {
          var result = fun.apply(fun, _.rest(arguments));
    
          while (_.isFunction(result)) {
            result = result();
            if ((result instanceof _) && (result.stopTrampoline)) break;
          }
    
          return result.value();
        }
      });
    
    })(this);