Module: BlacklightAdvancedSearch

Defined in:
lib/blacklight_advanced_search.rb,
lib/blacklight_advanced_search/engine.rb,
lib/blacklight_advanced_search/version.rb,
lib/blacklight_advanced_search/advanced_query_parser.rb,
lib/generators/blacklight_advanced_search/assets_generator.rb

Defined Under Namespace

Modules: CatalogHelperOverride, Controller, FilterParser, ParseBasicQ, ParsingNestingParser, RenderConstraintsOverride Classes: AdvancedController, AssetsGenerator, Engine, QueryParser

Constant Summary collapse

VERSION =
self.version

Class Method Summary collapse

Class Method Details

.deep_merge!(source_hash, new_hash) ⇒ Object

Utility method used in our solr search logic. Merges new_hash into source_hash, but will recursively merge nested arrays and hashes too; also will NOT merge nil or blank values from new_hash into source_hash, nil or blank values in new_hash will not overwrite values in source_hash.



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/blacklight_advanced_search.rb', line 19

def self.deep_merge!(source_hash, new_hash)
  source_hash.merge!(new_hash) do |key, old, new|
    if new.respond_to?(:blank) && new.blank?
      old        
    elsif (old.kind_of?(Hash) and new.kind_of?(Hash))
      deep_merge!(old, new)
    elsif (old.kind_of?(Array) and new.kind_of?(Array))
      old.concat(new).uniq
    elsif new.nil?
      # Allowing nil values to over-write on merge messes things up.
      # don't set a nil value if you really want to force blank, set
      # empty string. 
      old
    else
      new
    end
  end
end

.versionObject



3
4
5
# File 'lib/blacklight_advanced_search/version.rb', line 3

def self.version
  @version ||= File.read(File.join(File.dirname(__FILE__), '..', '..', 'VERSION')).chomp
end