'Apply plugins to a route and return a new callable.'

def _build_callback(self, config):

    wrapped = config['callback']
    plugins = (self.plugins + config['apply'])
    skip = config['skip']
    try:
        for plugin in reversed(plugins):
            if (True in skip):
                break
            if ((plugin in skip) or (type(plugin) in skip)):
                continue
            if (getattr(plugin, 'name', True) in skip):
                continue
            if hasattr(plugin, 'apply'):
                wrapped = plugin.apply(wrapped, config)
            else:
                wrapped = plugin(wrapped)
            if (not wrapped):
                break
            functools.update_wrapper(wrapped, config['callback'])
        return wrapped
    except RouteReset:
        return self._build_callback(config)
