code: function() {
        // flatten the arguments
        var args = _makeArray(arguments),
            plugin = args.shift(),
            plugin_name = plugin || '';
        try {
          args.unshift(this);
          if (typeof plugin == 'string') {
            plugin_name = 'Sammy.' + plugin;
            plugin = Sammy[plugin];
          }
          plugin.apply(this, args);
        } catch(e) {
          if (typeof plugin === 'undefined') {
            this.error("Plugin Error: called use() but plugin (" + plugin_name.toString() + ") is not defined", e);
          } else if (!_isFunction(plugin)) {
            this.error("Plugin Error: called use() but '" + plugin_name.toString() + "' is not a function", e);
          } else {
            this.error("Plugin Error", e);
          }
        }
        return this;
      }
docs: `use()` is the entry point for including Sammy plugins. The first argument to use should be a function() that is evaluated in the context of the current application, just like the `app_function` argument to the `Sammy.Application` constructor.  Any additional arguments are passed to the app function sequentially.  For much more detail about plugins, check out: http://code.quirkey.com/sammy/doc/plugins.html  ### Example  var MyPlugin = function(app, prepend) {  this.helpers({ myhelper: function(text) { alert(prepend + " " + text); } });  };  var app = $.sammy(function() {  this.use(MyPlugin, 'This is my plugin');  this.get('#/', function() { this.myhelper('and dont you forget it!'); //=> Alerts: This is my plugin and dont you forget it! });  });  If plugin is passed as a string it assumes your are trying to load Sammy."Plugin". This is the prefered way of loading core Sammy plugins as it allows for better error-messaging.  ### Example  $.sammy(function() { this.use('Mustache'); //=> Sammy.Mustache this.use('Storage'); //=> Sammy.Storage });