Module: Awesome::Definitions::Filters::ClassMethods

Defined in:
lib/awesome/definitions/filters.rb

Instance Method Summary collapse

Instance Method Details

#get_class_for_filter(filter) ⇒ Object



17
18
19
# File 'lib/awesome/definitions/filters.rb', line 17

def get_class_for_filter(filter)
  self.get_class(self.search_filters[:search_filters_to_classes][filter])
end

#get_filter_modifiers(anytext, filter = nil) ⇒ Object



50
51
52
53
54
55
56
57
# File 'lib/awesome/definitions/filters.rb', line 50

def get_filter_modifiers(anytext, filter = nil)
  mods = anytext.scan(self.search_filter_modifiers_regex(false)).flatten.compact
  #If no filter mods are in the search string then the filter requested is valid so we pretend it was requested as a modifier
  mods = !filter.blank? && mods.empty? ? [self.make_symring(filter)] : mods
  #mods = (self.search_filter_modifiers & mods) | filter
  puts "get_filter_modifiers #{mods.reject {|x| x == ''}.inspect}" if self.verbose_filters
  mods.reject {|x| x == ''}
end

#get_search_filter_from_modifier(mod) ⇒ Object



59
60
61
# File 'lib/awesome/definitions/filters.rb', line 59

def get_search_filter_from_modifier(mod)
  self.search_filters[:filter_modifiers_to_search_filters][mod]
end

#search_filter_keys(symring = true) ⇒ Object



21
22
23
# File 'lib/awesome/definitions/filters.rb', line 21

def search_filter_keys(symring = true)
  self.search_filters[:search_filters_to_filter_modifiers].map {|k,v| symring ? k : self.unmake_symring(k)}
end

#search_filter_modifiers(symring = true) ⇒ Object



25
26
27
28
# File 'lib/awesome/definitions/filters.rb', line 25

def search_filter_modifiers(symring = true)
  # Needs to be flattened because the values are arrays
  self.search_filters[:search_filters_to_filter_modifiers].map {|k,v| symring ? v : self.unmake_symring(v)}.flatten
end

#search_filter_modifiers_regex(whitespace = false) ⇒ Object



63
64
65
# File 'lib/awesome/definitions/filters.rb', line 63

def search_filter_modifiers_regex(whitespace = false)
  self.modifier_regex_from_array(self.search_filter_modifiers, whitespace)
end

#search_filters_enabledObject



13
14
15
# File 'lib/awesome/definitions/filters.rb', line 13

def search_filters_enabled
  self.search_filter_keys(false)
end

#valid_filter_modifiers(anytext, filter) ⇒ Object

filter param is an array of filters



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/awesome/definitions/filters.rb', line 31

def valid_filter_modifiers(anytext, filter)
  # Weed out invalid filter requests
  puts "checking valid_filter_modifiers: #{anytext}, filter: #{filter.inspect}" if self.verbose_filters
  # We do not make_symring for two reasons:
  #  1. people will use whatever kind of filter value they need, and ruby can compare it.
  #  2. the filter param is an array
  # #filter = self.make_symring(filter)
  # Weed out invalid filter requests
  allowed = (self.search_filter_keys & filter)
  return false if !filter.empty? && allowed.empty?
  valid_filter_mods = self.get_filter_modifiers(anytext, allowed)
  valid_search_filters = valid_filter_mods.map do |fmod|
    puts "filter mod #{fmod.inspect} => #{self.search_filters[:filter_modifiers_to_search_filters][fmod]}" if self.verbose_filters
    self.search_filters[:filter_modifiers_to_search_filters][fmod]
  end.compact
  puts "valid_filter_modifiers: #{valid_search_filters.inspect}" if self.verbose_filters
  return valid_search_filters
end