From 660ba43edb62f9c640fd1e25ba1d2c5c2012dbf7 Mon Sep 17 00:00:00 2001 From: Thayol Date: Tue, 4 Jan 2022 20:38:27 +0100 Subject: [PATCH 1/6] Replace ordered metatags when negated --- app/logical/post_query_builder.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/logical/post_query_builder.rb b/app/logical/post_query_builder.rb index ba498a985..ebe6ee6b5 100644 --- a/app/logical/post_query_builder.rb +++ b/app/logical/post_query_builder.rb @@ -117,6 +117,7 @@ class PostQueryBuilder end def metatags_match(metatags, relation) + fix_negated_ordered_metatags(metatags) metatags.each do |metatag| clause = metatag_matches(metatag.name, metatag.value, quoted: metatag.quoted) clause = clause.negate_relation if metatag.negated @@ -125,6 +126,16 @@ class PostQueryBuilder relation end + + def fix_negated_ordered_metatags(metatag) + metatags.each do |metatag| + if metatag.negated + metatag.name = "fav" if metatag.name == "ordfav" + metatag.name = "favgroup" if metatag.name == "ordfavgroup" + metatag.name = "pool" if metatag.name == "ordpool" + end + end + end def metatag_matches(name, value, quoted: false) case name From 5799b1bdbe0c9baa1a2b40931a28c1bf17919110 Mon Sep 17 00:00:00 2001 From: Thayol Date: Tue, 4 Jan 2022 21:02:15 +0100 Subject: [PATCH 2/6] Remove double looping --- app/logical/post_query_builder.rb | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/app/logical/post_query_builder.rb b/app/logical/post_query_builder.rb index ebe6ee6b5..d0b9209a2 100644 --- a/app/logical/post_query_builder.rb +++ b/app/logical/post_query_builder.rb @@ -117,24 +117,19 @@ class PostQueryBuilder end def metatags_match(metatags, relation) - fix_negated_ordered_metatags(metatags) - metatags.each do |metatag| - clause = metatag_matches(metatag.name, metatag.value, quoted: metatag.quoted) - clause = clause.negate_relation if metatag.negated - relation = relation.and_relation(clause) - end - - relation - end - - def fix_negated_ordered_metatags(metatag) metatags.each do |metatag| if metatag.negated metatag.name = "fav" if metatag.name == "ordfav" metatag.name = "favgroup" if metatag.name == "ordfavgroup" metatag.name = "pool" if metatag.name == "ordpool" end + + clause = metatag_matches(metatag.name, metatag.value, quoted: metatag.quoted) + clause = clause.negate_relation if metatag.negated + relation = relation.and_relation(clause) end + + relation end def metatag_matches(name, value, quoted: false) From cbe7ee489708355bbf38bfc6f8836749c65566bf Mon Sep 17 00:00:00 2001 From: Thayol Date: Fri, 21 Jan 2022 18:02:08 +0100 Subject: [PATCH 3/6] Remove trailing whitespace --- app/logical/post_query_builder.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/logical/post_query_builder.rb b/app/logical/post_query_builder.rb index d0b9209a2..62d9c84b5 100644 --- a/app/logical/post_query_builder.rb +++ b/app/logical/post_query_builder.rb @@ -123,7 +123,7 @@ class PostQueryBuilder metatag.name = "favgroup" if metatag.name == "ordfavgroup" metatag.name = "pool" if metatag.name == "ordpool" end - + clause = metatag_matches(metatag.name, metatag.value, quoted: metatag.quoted) clause = clause.negate_relation if metatag.negated relation = relation.and_relation(clause) From 89b40a65baf152549506cbb4a41541133ebd736f Mon Sep 17 00:00:00 2001 From: Thayol Date: Wed, 30 Mar 2022 17:54:52 +0200 Subject: [PATCH 4/6] Refactor to hash from multiple ifs --- app/logical/post_query_builder.rb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/logical/post_query_builder.rb b/app/logical/post_query_builder.rb index 62d9c84b5..e389a2ce6 100644 --- a/app/logical/post_query_builder.rb +++ b/app/logical/post_query_builder.rb @@ -118,11 +118,7 @@ class PostQueryBuilder def metatags_match(metatags, relation) metatags.each do |metatag| - if metatag.negated - metatag.name = "fav" if metatag.name == "ordfav" - metatag.name = "favgroup" if metatag.name == "ordfavgroup" - metatag.name = "pool" if metatag.name == "ordpool" - end + metatag.name = metatags_without_ord[metatag.name] if metatag.negated && metatags_without_ord.key?(metatag.name) clause = metatag_matches(metatag.name, metatag.value, quoted: metatag.quoted) clause = clause.negate_relation if metatag.negated @@ -132,6 +128,14 @@ class PostQueryBuilder relation end + def metatags_without_ord + { + "ordfav" => "fav", + "ordfavgroup" => "favgroup", + "ordpool" => "pool", + } + end + def metatag_matches(name, value, quoted: false) case name when "id" From 70c81f7d49e62c5ee41a0593a4dfb7d87289ede9 Mon Sep 17 00:00:00 2001 From: Thayol Date: Thu, 31 Mar 2022 23:35:22 +0200 Subject: [PATCH 5/6] Change local variable instead of passed object --- app/logical/post_query_builder.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/logical/post_query_builder.rb b/app/logical/post_query_builder.rb index e389a2ce6..1faee28f5 100644 --- a/app/logical/post_query_builder.rb +++ b/app/logical/post_query_builder.rb @@ -118,9 +118,13 @@ class PostQueryBuilder def metatags_match(metatags, relation) metatags.each do |metatag| - metatag.name = metatags_without_ord[metatag.name] if metatag.negated && metatags_without_ord.key?(metatag.name) + metatag_name = if metatag.negated && metatags_without_ord.key?(metatag.name) + metatags_without_ord[metatag.name] + else + metatag.name + end - clause = metatag_matches(metatag.name, metatag.value, quoted: metatag.quoted) + clause = metatag_matches(metatag_name, metatag.value, quoted: metatag.quoted) clause = clause.negate_relation if metatag.negated relation = relation.and_relation(clause) end From e45e42d479882d4516ef0f1cd0f0f35b18bc871e Mon Sep 17 00:00:00 2001 From: Thayol Date: Thu, 31 Mar 2022 23:38:40 +0200 Subject: [PATCH 6/6] Use longer lines instead of conditional variables (CodeClimate) --- app/logical/post_query_builder.rb | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/logical/post_query_builder.rb b/app/logical/post_query_builder.rb index 1faee28f5..79b768dec 100644 --- a/app/logical/post_query_builder.rb +++ b/app/logical/post_query_builder.rb @@ -118,13 +118,9 @@ class PostQueryBuilder def metatags_match(metatags, relation) metatags.each do |metatag| - metatag_name = if metatag.negated && metatags_without_ord.key?(metatag.name) - metatags_without_ord[metatag.name] - else - metatag.name - end + metatag_name = metatags_without_ord[metatag.name] if metatag.negated && metatags_without_ord.key?(metatag.name) - clause = metatag_matches(metatag_name, metatag.value, quoted: metatag.quoted) + clause = metatag_matches(metatag_name || metatag.name, metatag.value, quoted: metatag.quoted) clause = clause.negate_relation if metatag.negated relation = relation.and_relation(clause) end