From 2adc530ba07c0f18295bd990e1ff98548fe7aadd Mon Sep 17 00:00:00 2001 From: evazion Date: Wed, 6 Apr 2022 16:18:15 -0500 Subject: [PATCH] post queries: parse count metatag synonyms. --- app/logical/post_query/parser.rb | 5 +++-- test/unit/post_query_parser_test.rb | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/logical/post_query/parser.rb b/app/logical/post_query/parser.rb index bbf380087..160362bec 100644 --- a/app/logical/post_query/parser.rb +++ b/app/logical/post_query/parser.rb @@ -162,9 +162,10 @@ class PostQuery # metatag_name = "user" | "fav" | "pool" | "order" | ... def metatag if accept(METATAG_NAME_REGEX) - name = @scanner.matched.delete_suffix(":") + name = @scanner.matched.delete_suffix(":").downcase + name = name.singularize + "_count" if name.in?(PostQueryBuilder::COUNT_METATAG_SYNONYMS) value = quoted_string - node(:metatag, name.downcase, value) + node(:metatag, name, value) end end diff --git a/test/unit/post_query_parser_test.rb b/test/unit/post_query_parser_test.rb index e6434d94e..7de999e2e 100644 --- a/test/unit/post_query_parser_test.rb +++ b/test/unit/post_query_parser_test.rb @@ -79,6 +79,27 @@ class PostQueryParserTest < ActiveSupport::TestCase assert_parse_equals(%q{(and source:foo)bar a)}, %q{(a (source:'foo)bar'))}) end + should "parse metatag synonyms correctly" do + assert_parse_equals("comment_count:0", "comments:0") + assert_parse_equals("deleted_comment_count:0", "deleted_comments:0") + assert_parse_equals("active_comment_count:0", "active_comments:0") + assert_parse_equals("note_count:0", "notes:0") + assert_parse_equals("deleted_note_count:0", "deleted_notes:0") + assert_parse_equals("active_note_count:0", "active_notes:0") + assert_parse_equals("flag_count:0", "flags:0") + assert_parse_equals("child_count:0", "children:0") + assert_parse_equals("deleted_child_count:0", "deleted_children:0") + assert_parse_equals("active_child_count:0", "active_children:0") + assert_parse_equals("pool_count:0", "pools:0") + assert_parse_equals("deleted_pool_count:0", "deleted_pools:0") + assert_parse_equals("active_pool_count:0", "active_pools:0") + assert_parse_equals("series_pool_count:0", "series_pools:0") + assert_parse_equals("collection_pool_count:0", "collection_pools:0") + assert_parse_equals("appeal_count:0", "appeals:0") + assert_parse_equals("approval_count:0", "approvals:0") + assert_parse_equals("replacement_count:0", "replacements:0") + end + should "parse wildcard tags correctly" do assert_parse_equals("(wildcard *)", "*") assert_parse_equals("(wildcard *a)", "*a")