Dessert: Added more search triggers, and changed tests.
authorJag Talon <talon.jag@gmail.com>
Tue, 29 Oct 2013 14:42:24 +0000 (10:42 -0400)
committerJag Talon <talon.jag@gmail.com>
Tue, 29 Oct 2013 14:42:58 +0000 (10:42 -0400)
It now supports "a dessert that starts with the letter a."

lib/DDG/Goodie/Dessert.pm
t/Dessert.t

index 2d21a5e..a4373c3 100644 (file)
@@ -4,7 +4,10 @@ use DDG::Goodie;
 
 sub itemify{
        my $i = rand scalar @_;
-       return '<a href="http://duckduckgo.com/2/' . $_[$i] . '">' . $_[$i] . '</a> <a style="font-size: 10px;" href="http://duckduckgo.com/?q=' . $_[$i] . '+recipe">(recipes)</a>';
+       my $dessert = $_[$i];
+       $dessert =~ s/\s/+/g;
+
+       return "<a href='http://duckduckgo.com/?q=$dessert+recipe'>$_[$i]</a>";
 };
 
 my %desserts = (
@@ -35,14 +38,13 @@ my %desserts = (
        z => ['Zepolle','Zucchini Pie'],
 );
 
-triggers start => 'dessert', 'desserts';
+triggers start => 'dessert', 'desserts', 'a dessert';
 handle remainder => sub{
-    if(lc $_ =~ m/^(?:that )?(?:start|beginn?)s?(?:ing)? ?(?:with)? ([a-zA-Z])$/i){
+    if(lc $_ =~ m/^(?:that )?(?:start|beginn?)s?(?:ing)? ?(?:with)? (?:the letter )?([a-zA-Z])$/i){
        my $in = lc $1;
-       my $output = 'A dessert beginning with ' . (uc $in) . ' is ';
-       
        my $items = $desserts{lc $in};
-       $output .= itemify(@{$items});
+
+       my $output = itemify(@{$items}) . " is a dessert that begins with the letter " . uc $in . '.';
        return $output;
     }
     return;
index eeae5f3..b9e9165 100644 (file)
@@ -12,13 +12,14 @@ ddg_goodie_test(
         [qw(
                 DDG::Goodie::Dessert
         )],
-        'desserts beginning with a'   => test_zci( qr/A dessert beginning with A is (.*)/ ),
-        'dessert start with a'   => test_zci( qr/A dessert beginning with A is (.*)/ ),
-       'desserts starting with a'   => test_zci( qr/A dessert beginning with A is (.*)/ ),
-       'dessert starts with a'   => test_zci( qr/A dessert beginning with A is (.*)/ ),
+        'desserts beginning with a'   => test_zci( qr/(.*?) is a dessert that begins with the letter A.$/ ),
+        'dessert start with a'   => test_zci( qr/(.*?) is a dessert that begins with the letter A.$/ ),
+       'desserts starting with a'   => test_zci( qr/(.*?) is a dessert that begins with the letter A$./ ),
+       'dessert starts with a'   => test_zci( qr/(.*?) is a dessert that begins with the letter A.$/ ),
 
-       'desserts beginning with A'   => test_zci( qr/A dessert beginning with A is (.*)/ ),
-       'desserts beginning with z'   => test_zci( qr/A dessert beginning with Z is (.*)/ )
+       'desserts beginning with A'   => test_zci( qr/(.*?) is a dessert that begins with the letter A.$/ ),
+       'desserts beginning with z'   => test_zci( qr/(.*?) is a dessert that begins with the letter Z.$/ ),
+        'a dessert that begins with the letter a' => test_zci( qr/(.*?) is a dessert that begins with the letter A.$/ ),
 );
 
 done_testing;