diff --git a/dist.ini b/dist.ini index 6e6f2349b..faafaf3db 100644 --- a/dist.ini +++ b/dist.ini @@ -27,6 +27,7 @@ Locale::Language = 3.21 Schedule::Cron::Events = 0 Convert::Color = 0.08 Convert::Color::Library = 0.03 +Convert::Morse = 0.05 [Prereqs / TestRequires] Test::More = 0.98 diff --git a/lib/DDG/Goodie/Morse.pm b/lib/DDG/Goodie/Morse.pm new file mode 100644 index 000000000..2a3daa2b4 --- /dev/null +++ b/lib/DDG/Goodie/Morse.pm @@ -0,0 +1,25 @@ +package DDG::Goodie::Morse; +# ABSTRACT: Converts to/from Morse code + +use DDG::Goodie; +use Convert::Morse qw(is_morse as_ascii as_morse); + +attribution + web => 'http://und3f.com', + twitter => 'und3f', + github => 'und3f', + cpan => 'UNDEF'; + +triggers startend => 'morse'; + +zci is_cached => 1; +zci answer_type => 'chars'; + +handle remainder => sub { + return unless $_; + + my $convertor = is_morse($_) ? \&as_ascii : \&as_morse; + return "Morse: " . $convertor->($_); +}; + +1; diff --git a/t/Morse.t b/t/Morse.t new file mode 100644 index 000000000..64ad644ae --- /dev/null +++ b/t/Morse.t @@ -0,0 +1,21 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use utf8; +use Test::More; +use DDG::Test::Goodie; + +zci answer_type => 'chars'; +zci is_cached => 1; + +ddg_goodie_test( + [qw( + DDG::Goodie::Morse + )], + 'morse ... --- ...' => test_zci('Morse: SOS'), + 'morse hello, duck' => + test_zci('Morse: .... . .-.. .-.. --- --..-- -.. ..- -.-. -.-'), +); + +done_testing;