Move supported prefixes to a constant

refactor/search-query-parser
Claire 2023-09-08 16:30:32 +02:00
parent e5caa462c1
commit 64c6adcc58
1 changed files with 12 additions and 1 deletions

View File

@ -1,6 +1,17 @@
# frozen_string_literal: true
class SearchQueryParser < Parslet::Parser
SUPPORTED_PREFIXES = %w(
has
is
language
from
before
after
during
in
).freeze
# Efficiently matches disjoint strings
class StrList < Parslet::Atoms::Base
attr_reader :strings
@ -41,7 +52,7 @@ class SearchQueryParser < Parslet::Parser
rule(:colon) { str(':') }
rule(:space) { match('\s').repeat(1) }
rule(:operator) { (str('+') | str('-')).as(:operator) }
rule(:prefix_operator) { StrList.new(%w(has is language from before after during in)) }
rule(:prefix_operator) { StrList.new(SUPPORTED_PREFIXES) }
rule(:prefix) { prefix_operator.as(:prefix_operator) >> colon }
rule(:phrase) do
(str('"') >> match('[^"]').repeat.as(:phrase) >> str('"')) |