27 lines
630 B
Ruby
27 lines
630 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module Search
|
|
class ParsedQuery
|
|
prepend_if_ee('EE::Gitlab::Search::ParsedQuery') # rubocop: disable Cop/InjectEnterpriseEditionModule
|
|
|
|
attr_reader :term, :filters
|
|
|
|
def initialize(term, filters)
|
|
@term = term
|
|
@filters = filters
|
|
end
|
|
|
|
def filter_results(results)
|
|
filters = @filters.reject { |filter| filter[:matcher].nil? }
|
|
return unless filters
|
|
|
|
results.select do |result|
|
|
filters.all? do |filter|
|
|
filter[:matcher].call(filter, result)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|