Sha256: 75467ccb69e236e0d76053acb0b156e8aca31b982ee5150ce1d049ce6349a40f
Contents?: true
Size: 1.2 KB
Versions: 11
Compression:
Stored size: 1.2 KB
Contents
module Workarea module Search class StorefrontSearch attr_reader :params def initialize(params) @params = params @used_middleware = [] end def customization @customization ||= begin match = Customization.find_by_query(params[:q].try(:strip).to_s) match.active? ? match : Customization.new end end def response @response ||= begin result = StorefrontSearch::Response.new( params: params, customization: customization ) chain = create_middleware_chain traverse_chain = lambda do unless chain.empty? piece = chain.shift @used_middleware << piece piece.call(result, &traverse_chain) end end traverse_chain.call result end end def used_middleware response @used_middleware end def create_middleware_chain Workarea.config.storefront_search_middleware.map do |class_name| class_name.constantize.new(params, customization) end end end end end
Version data entries
11 entries across 11 versions & 1 rubygems