Sha256: 680d4d6a5819856df4acb4a20166acce34e7d25e0266cdaafadbe7542afd6d80

Contents?: true

Size: 855 Bytes

Versions: 1

Compression:

Stored size: 855 Bytes

Contents

module FortyFacets
  # Base class for the objects representing a specific value for a specific
  # type of filter. Most FilterDefinitions will have their own Filter subclass
  # to control values for display and rendering to request parameters.
  Filter = Struct.new(:filter_definition, :search_instance, :value) do
    def name
      filter_definition.options[:name] || filter_definition.model_field
    end

    def values
      @values ||= Array.wrap(value).sort.uniq
    end

    def empty?
      value.nil? || value == '' || value == []
    end

    # generate a search with this filter removed
    def without
      search = search_instance
      return search if empty?
      new_params = search_instance.params || {}
      new_params.delete(filter_definition.request_param)
      search_instance.class.new_unwrapped(new_params)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
forty_facets-0.0.6 lib/forty_facets/filter.rb