Palindrome: Convert to Structured (#4352)

* Convert palindrome to structured, tabs, negative tests

* remove comments, simplify subtitle function
master
Philip Kirkbride 2017-07-15 18:14:19 -04:00 committed by PJ Hampton
parent db434a22d0
commit b082c3013e
2 changed files with 47 additions and 20 deletions

View File

@ -10,21 +10,28 @@ triggers any => 'palindrome';
zci is_cached => 1; zci is_cached => 1;
handle query => sub { handle query => sub {
#Remove the trigger text from the query. return unless /^(?:is\s+|)(.*?)\s+an?\s*palindrome\??$/i;
return unless /^(?:is\s+|)(.*?)\s+an?\s*palindrome\??$/i; return if /^(what is*)/;
my $palindrome = $1; my $palindrome = $1;
my $is_palindrome = 0;
my $is_palindrome = 0; my $clean_palindrome = lc $palindrome;
$clean_palindrome =~ s/[^a-z0-9]+//g;
# Clean up. $is_palindrome = 1 if $clean_palindrome eq scalar reverse $clean_palindrome;
my $clean_palindrome = lc $palindrome;
$clean_palindrome =~ s/[^a-z0-9]+//g;
$is_palindrome = 1 if $clean_palindrome eq scalar reverse $clean_palindrome; my $title = $is_palindrome ? "Yes" : "No";
my $subtitle = "\"$palindrome\" is ".($is_palindrome ? "":"not ")."a palindrome.";
#Check to see if it is a palindrome. return $subtitle, structured_answer => {
return $is_palindrome ? qq("$palindrome" is a palindrome.) : qq("$palindrome" is not a palindrome.); data => {
title => $title,
subtitle => $subtitle,
},
templates => {
group => 'text'
}
}
}; };
1; 1;

View File

@ -9,17 +9,37 @@ use DDG::Test::Goodie;
zci answer_type => 'palindrome'; zci answer_type => 'palindrome';
zci is_cached => 1; zci is_cached => 1;
sub build_sum_answer {
my($title, $subtitle) = @_;
return $subtitle,
structured_answer => {
data => {
title => $title,
subtitle => $subtitle
},
templates => {
group => 'text',
}
};
}
sub build_sum_test { test_zci(build_sum_answer(@_)) }
ddg_goodie_test( ddg_goodie_test(
[qw( [qw(
DDG::Goodie::Palindrome DDG::Goodie::Palindrome
)], )],
'is foo a palindrome?' => test_zci('"foo" is not a palindrome.'), 'is foo a palindrome?' => build_sum_test('No', '"foo" is not a palindrome.'),
'foo a palindrome?' => test_zci('"foo" is not a palindrome.'), 'foo a palindrome?' => build_sum_test('No', '"foo" is not a palindrome.'),
'is foof a palindrome?' => test_zci('"foof" is a palindrome.'), 'foof a palindrome?' => build_sum_test('Yes', '"foof" is a palindrome.'),
'foof a palindrome?' => test_zci('"foof" is a palindrome.'), 'is foof a palindrome?' => build_sum_test('Yes', '"foof" is a palindrome.'),
'is A dank, sad nap. Eels sleep and ask nada. a palindrome?' => test_zci('"A dank, sad nap. Eels sleep and ask nada." is a palindrome.'), 'is A dank, sad nap. Eels sleep and ask nada. a palindrome?' => build_sum_test('Yes', '"A dank, sad nap. Eels sleep and ask nada." is a palindrome.'),
'is a dank, sad nap. eels sleep and ask nada. a palindrome?' => test_zci('"a dank, sad nap. eels sleep and ask nada." is a palindrome.'), 'is a dank, sad nap. eels sleep and ask nada. a palindrome?' => build_sum_test('Yes', '"a dank, sad nap. eels sleep and ask nada." is a palindrome.'),
'is dad a palindrome?' => test_zci('"dad" is a palindrome.'), 'is dad a palindrome?' => build_sum_test('Yes', '"dad" is a palindrome.'),
# Invalid input
'what is a palindrome?' => undef,
'I Palindrome I' => undef,
); );
done_testing; done_testing;