Sha256: ed5682ac4d2e6b53a5e71e93107ad2fef3ff68b0dcafc36c235a8c89fd7fbb35

Contents?: true

Size: 1.05 KB

Versions: 9

Compression:

Stored size: 1.05 KB

Contents

require "active_support/core_ext/class/attribute"

module ActiveSearch
  def self.strip_tags(value)
    case value
    when String
      value.gsub(/<\/?[^>]*>/, '')
    when Hash
      value.each { |k,v| value[k] = strip_tags(value[k]) }
    end
  end
  
  module Base
    def self.included(parent)
      parent.extend ClassMethods
      parent.class_attribute :search_parameters, instance_reader: false
    end
    
    def search_options
      search_parameters.last.is_a?(Hash) ? search_parameters.last : {}
    end
    
    def search_fields
      search_parameters.last.is_a?(Hash) ? search_parameters[0...-1] : search_parameters
    end
    
    def search_parameters
      if self.class.search_parameters.is_a?(Symbol)
        self.send(self.class.search_parameters)
      else
        self.class.search_parameters
      end
    end
    
    module ClassMethods
      def search_by(params, conditions = {})
        after_save    :reindex, conditions
        after_destroy :deindex, conditions
        self.search_parameters = params
      end
      
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
activesearch-0.1.3 lib/activesearch/base.rb
activesearch-0.1.2 lib/activesearch/base.rb
activesearch-0.1.1 lib/activesearch/base.rb
activesearch-0.1.0 lib/activesearch/base.rb
activesearch-0.0.16 lib/activesearch/base.rb
activesearch-0.0.15 lib/activesearch/base.rb
activesearch-0.0.14 lib/activesearch/base.rb
activesearch-0.0.13 lib/activesearch/base.rb
activesearch-0.0.12 lib/activesearch/base.rb