|
|
|
@ -225,17 +225,16 @@ class SearchQueryTransformer < Parslet::Transform
|
|
|
|
|
rule(clause: subtree(:clause)) do
|
|
|
|
|
prefix = clause[:prefix][:term].to_s if clause[:prefix]
|
|
|
|
|
operator = clause[:operator]&.to_s
|
|
|
|
|
term = clause[:phrase] ? clause[:phrase].map { |term| term[:term].to_s }.join(' ') : clause[:term].to_s
|
|
|
|
|
|
|
|
|
|
if clause[:prefix] && SUPPORTED_PREFIXES.include?(prefix)
|
|
|
|
|
PrefixClause.new(prefix, operator, clause[:term].to_s, current_account: current_account)
|
|
|
|
|
PrefixClause.new(prefix, operator, term, current_account: current_account)
|
|
|
|
|
elsif clause[:prefix]
|
|
|
|
|
TermClause.new(operator, "#{prefix} #{clause[:term]}")
|
|
|
|
|
TermClause.new(operator, "#{prefix} #{term}")
|
|
|
|
|
elsif clause[:term]
|
|
|
|
|
TermClause.new(operator, clause[:term].to_s)
|
|
|
|
|
elsif clause[:shortcode]
|
|
|
|
|
TermClause.new(operator, ":#{clause[:term]}:")
|
|
|
|
|
TermClause.new(operator, term)
|
|
|
|
|
elsif clause[:phrase]
|
|
|
|
|
PhraseClause.new(operator, clause[:phrase].is_a?(Array) ? clause[:phrase].map { |p| p[:term].to_s }.join(' ') : clause[:phrase].to_s)
|
|
|
|
|
PhraseClause.new(operator, term)
|
|
|
|
|
else
|
|
|
|
|
raise "Unexpected clause type: #{clause}"
|
|
|
|
|
end
|
|
|
|
|