From 4e8859748c6ff383a36735877e97104b19c03317 Mon Sep 17 00:00:00 2001 From: David Wilkins Date: Wed, 4 Jun 2014 15:49:20 +0800 Subject: [PATCH] Filter ReverseComplement triggers from Reverse goodie --- lib/DDG/Goodie/Reverse.pm | 9 ++++++++- lib/DDG/Goodie/ReverseComplement.pm | 4 ++-- t/Reverse.t | 6 +++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/DDG/Goodie/Reverse.pm b/lib/DDG/Goodie/Reverse.pm index d5d400fad..2768737a4 100644 --- a/lib/DDG/Goodie/Reverse.pm +++ b/lib/DDG/Goodie/Reverse.pm @@ -17,6 +17,13 @@ triggers startend => "reverse"; zci is_cached => 1; zci answer_type => "reverse"; -handle remainder => sub { qq|Reversed "$_": | . scalar reverse }; +handle remainder => sub { + + #Filter out requests for DNA/RNA reverse complements, handled + # by the ReverseComplement goodie + return if $_ =~ /^complement\s(of )?[ATCGURYKMSWBVDHN\s-]+$/i; + + return qq|Reversed "$_": | . scalar reverse; +}; 1; diff --git a/lib/DDG/Goodie/ReverseComplement.pm b/lib/DDG/Goodie/ReverseComplement.pm index ac4caffeb..6f220ffc3 100644 --- a/lib/DDG/Goodie/ReverseComplement.pm +++ b/lib/DDG/Goodie/ReverseComplement.pm @@ -27,14 +27,14 @@ handle remainder => sub { #Return nothing if sequence contains characters # other than DNA/RNA bases or standard IUPAC ambiguity codes - return if $sequence =~ /[^ATCGURYKMSWBVDH]/; + return if $sequence =~ /[^ATCGURYKMSWBVDHN]/; #Return nothing if sequence contains both # thymine and uracil (more likely an error than a real molecule) return if $sequence =~ /T/ && $sequence =~ /U/; #Complement - $sequence =~ tr/ATUCGRYKMSWBVHD/TAAGCYRMKSWVBDH/; + $sequence =~ tr/ATUCGRYKMBVHD/TAAGCYRMKVBDH/; #Reverse $sequence = reverse($sequence); diff --git a/t/Reverse.t b/t/Reverse.t index f53179bb3..f0e1be325 100644 --- a/t/Reverse.t +++ b/t/Reverse.t @@ -14,7 +14,11 @@ ddg_goodie_test( )], 'reverse bla' => test_zci('Reversed "bla": alb'), 'reverse blabla' => test_zci('Reversed "blabla": albalb'), - 'reverse esrever' => test_zci('Reversed "esrever": reverse'), + 'reverse esrever' => test_zci('Reversed "esrever": reverse'), + + #Should not trigger on a request for DNA/RNA reverse complement + 'reverse complement of ATG-CTA-GGG-GCT' => undef, + 'reverse complement gacuacgaucgagkmanscuag' => undef ); done_testing;