Sha256: 838a9ca7c54255f99e898e2c449298690cf1a67e87c93b46d7e130b4adbbb57d
Contents?: true
Size: 1.05 KB
Versions: 4
Compression:
Stored size: 1.05 KB
Contents
class Dorsale::SmallData::Filter STRATEGIES = {} attr_reader :jar def initialize(jar) @jar = jar 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) if method.to_s.end_with?("=") key = method.to_s[0..-2] value = args.first action = :write else key = method.to_s action = :read end if strategies.key?(key) && action == :read get(key) elsif strategies.key?(key) && action == :write set(key, value) else super end end def read JSON.parse jar["filters"].to_s rescue JSON::ParserError {} end def write(filters) jar["filters"] = filters.to_json end def merge(new_filters) write read.merge(new_filters) end private def get(key) read[key.to_s] end def set(key, value) merge(key.to_s => value) end end
Version data entries
4 entries across 4 versions & 1 rubygems