Class: Queryko::Feature

Inherits:
Object
  • Object
show all
Defined in:
lib/queryko/feature.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, query_object) ⇒ Feature

Returns a new instance of Feature.



3
4
5
6
7
# File 'lib/queryko/feature.rb', line 3

def initialize(name, query_object)
  @name = name
  @query_object = query_object
  @filter_names = {}
end

Instance Attribute Details

#filter_namesObject (readonly)

Returns the value of attribute filter_names.



2
3
4
# File 'lib/queryko/feature.rb', line 2

def filter_names
  @filter_names
end

#nameObject (readonly)

Returns the value of attribute name.



2
3
4
# File 'lib/queryko/feature.rb', line 2

def name
  @name
end

#query_objectObject (readonly)

Returns the value of attribute query_object.



2
3
4
# File 'lib/queryko/feature.rb', line 2

def query_object
  @query_object
end

Instance Method Details

#add_filter(filter_name, options = {}) ⇒ Object



9
10
11
# File 'lib/queryko/feature.rb', line 9

def add_filter(filter_name, options = {})
  self.filter_names[filter_name] = create_filter(filter_name, options)
end

#create_filter(filter_name, options = {}) ⇒ Object



13
14
15
16
17
18
19
20
# File 'lib/queryko/feature.rb', line 13

def create_filter(filter_name, options = {})
  if filter_class = filter_class_for(filter_name)
    result = filter_class.new(options, self)
  else
    raise "Filter class for #{filter_name} not found"
  end
  result
end

#filter_class_for(filter_name) ⇒ Object



22
23
24
25
26
# File 'lib/queryko/feature.rb', line 22

def filter_class_for(filter_name)
  filter_class = self.query_object.filters.fetch(filter_name.to_sym)
  return filter_class.constantize if filter_class.class == String
  return filter_class
end