Class: AdvancedSearch
  
  
  
  
    - Inherits:
 
    - 
      Object
      
        
        show all
      
      
 
    
  
  
    
  
    
  
  
  
    - Defined in:
 
    - common/advanced_search.rb
 
  
Defined Under Namespace
  
    
  
    
      Classes: AdvancedSearchField
    
  
    
  
  
    
      Class Method Summary
      (collapse)
    
    
  
  
    Class Method Details
    
      
  
  
    + (Object) define_field(opts) 
  
  
  
  
    
      
3
4
5
6 
     | 
    
      # File 'common/advanced_search.rb', line 3
def self.define_field(opts)
  @fields ||= {}
  @fields[opts.fetch(:name).to_s] = AdvancedSearchField.new(opts)
end
     | 
  
 
    
      
  
  
    + (Object) fields_matching(query) 
  
  
  
  
    
      
9
10
11
12
13
14
15 
     | 
    
      # File 'common/advanced_search.rb', line 9
def self.fields_matching(query)
  load_definitions
  @fields.values.select {|field|
    query.all? {|k, v| Array(field[k]).map(&:to_s).include?(v.to_s)}
  }
end
     | 
  
 
    
      
  
  
    + (Object) load_definitions 
  
  
  
  
    
      
28
29
30
31
32
33
34
35
36
37
38
39
40 
     | 
    
      # File 'common/advanced_search.rb', line 28
def self.load_definitions
  unless @loaded
    require 'search_definitions'
    ASUtils.find_local_directories("search_definitions.rb").each do |file|
      if File.exists?(file)
        load File.absolute_path(file)
      end
    end
    @loaded = true
  end
end
     | 
  
 
    
      
  
  
    + (Object) set_default(type, name) 
  
  
  
  
    
      
43
44
45
46
47
48
49
50
51 
     | 
    
      # File 'common/advanced_search.rb', line 43
def self.set_default(type, name)
  raise "Unknown field: #{name}" unless @fields.has_key?(name)
  @fields.values.each do |field|
    if field.type == type.to_s
      field.is_default = (field.name == name)
    end
  end
end
     | 
  
 
    
      
  
  
    + (Object) solr_field_for(field) 
  
  
  
  
    
      
18
19
20
21
22
23
24
25 
     | 
    
      # File 'common/advanced_search.rb', line 18
def self.solr_field_for(field)
  load_definitions
  field = @fields.fetch(field.to_s) do
    raise "Unrecognized search field: #{field}"
  end
  field.solr_field
end
     |