class Administrate::Search::Query

Attributes

filters[R]
valid_filters[R]

Public Class Methods

new(original_query, valid_filters = nil) click to toggle source
# File lib/administrate/search.rb, line 13
def initialize(original_query, valid_filters = nil)
  @original_query = original_query
  @valid_filters = valid_filters
  @filters, @terms = parse_query(original_query)
end

Public Instance Methods

blank?() click to toggle source
# File lib/administrate/search.rb, line 9
def blank?
  terms.blank? && filters.empty?
end
original() click to toggle source
# File lib/administrate/search.rb, line 19
def original
  @original_query
end
terms() click to toggle source
# File lib/administrate/search.rb, line 23
def terms
  @terms.join(" ")
end
to_s() click to toggle source
# File lib/administrate/search.rb, line 27
def to_s
  original
end

Private Instance Methods

filter?(word) click to toggle source
# File lib/administrate/search.rb, line 33
def filter?(word)
  valid_filters&.any? { |filter| word.match?(/^#{filter}:/) }
end
parse_query(query) click to toggle source
# File lib/administrate/search.rb, line 37
def parse_query(query)
  filters = []
  terms = []
  query.to_s.split.each do |word|
    if filter?(word)
      filters << word
    else
      terms << word
    end
  end
  [filters, terms]
end