function filter (obj, $, scope, selector, value, filters) {
  var ctx = { $: $, selector: obj.selector, attribute: obj.attribute }
  return (obj.filters || []).reduce(function (out, filter) {
    var fn = filters[filter.name]
    if (typeof fn === 'function') {
      var args = [out].concat(filter.args || [])
      var filtered = fn.apply(ctx, args)
      debug('%s.apply(ctx, %j) => %j', filter.name, args, filtered)
      return filtered
    } else {
      throw new Error('Invalid filter: ' + filter.name)
    }
  }, value)
}
Filter the value(s)

@param {Object} obj
@param {Cheerio} $
@param {String} scope
@param {String|Array} selector
@param {Object} filters
@return {Array|String}