Class: Dorsale::SmallData::Filter

Inherits:
Object
  • Object
show all
Defined in:
app/models/dorsale/small_data/filter.rb

Instance Method Summary collapse

Constructor Details

#initialize(jar) ⇒ Filter

Returns a new instance of Filter.



5
6
7
# File 'app/models/dorsale/small_data/filter.rb', line 5

def initialize(jar)
  @jar = jar
end

Instance Method Details

#apply(query) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
# File 'app/models/dorsale/small_data/filter.rb', line 35

def apply(query)
  read.each do |key, value|
    filter = strategy(key)

    if filter && filter.applies?(self.target)
      filter.set(key, value)
      query = filter.apply(query)
    end
  end

  return query
end

#get(key) ⇒ Object



25
26
27
# File 'app/models/dorsale/small_data/filter.rb', line 25

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

#readObject



13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/dorsale/small_data/filter.rb', line 13

def read
  if @jar['filters']
    begin
      JSON.parse @jar['filters']
    rescue JSON::ParserError
      {}
    end
  else
    {}
  end
end

#set(key, value) ⇒ Object



29
30
31
32
33
# File 'app/models/dorsale/small_data/filter.rb', line 29

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

#store(filters) ⇒ Object



9
10
11
# File 'app/models/dorsale/small_data/filter.rb', line 9

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