Sha256: 35d5baa829e0992397f1347432825708dcd7c22e98166bfaa56b526ee3ddcfe8

Contents?: true

Size: 966 Bytes

Versions: 22

Compression:

Stored size: 966 Bytes

Contents

module Dorsale
  module SmallData
    class Filter
      def initialize(jar)
        @jar = jar
      end

      def store(filters)
        @jar["filters"] = filters.to_json
      end

      def read
        JSON.parse @jar["filters"].to_s
      rescue JSON::ParserError
        {}
      end

      def get(key)
        read[key.to_s]
      end

      def set(key, value)
        array           = read
        array[key.to_s] = value
        store(array)
      end

      def strategies
        self.class::STRATEGIES
      end

      def apply(query)
        strategies.each do |key, strategy|
          value = get(key)

          next if value.blank?

          query = strategy.apply(query, value)
        end

        return query
      end

      def method_missing(method, *args)
        key = method.to_s

        if strategies.key?(key)
          get(key)
        else
          super
        end
      end
    end # Filter
  end # SmallData
end # Dorsale

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
dorsale-3.0.3 app/models/dorsale/small_data/filter.rb
dorsale-3.0.2 app/models/dorsale/small_data/filter.rb
dorsale-3.0.1 app/models/dorsale/small_data/filter.rb
dorsale-3.0.0 app/models/dorsale/small_data/filter.rb
dorsale-2.7.3 app/models/dorsale/small_data/filter.rb
dorsale-2.7.2 app/models/dorsale/small_data/filter.rb
dorsale-2.7.1 app/models/dorsale/small_data/filter.rb
dorsale-2.7.0 app/models/dorsale/small_data/filter.rb
dorsale-2.6.8 app/models/dorsale/small_data/filter.rb
dorsale-2.6.7 app/models/dorsale/small_data/filter.rb
dorsale-2.6.6 app/models/dorsale/small_data/filter.rb
dorsale-2.6.5 app/models/dorsale/small_data/filter.rb
dorsale-2.6.4 app/models/dorsale/small_data/filter.rb
dorsale-2.6.3 app/models/dorsale/small_data/filter.rb
dorsale-2.6.2 app/models/dorsale/small_data/filter.rb
dorsale-2.6.1 app/models/dorsale/small_data/filter.rb
dorsale-2.6.0 app/models/dorsale/small_data/filter.rb
dorsale-2.5.0 app/models/dorsale/small_data/filter.rb
dorsale-2.4.3 app/models/dorsale/small_data/filter.rb
dorsale-2.4.2 app/models/dorsale/small_data/filter.rb