From bb9cf4b9f728b4dd083a6bddde624236663a05a5 Mon Sep 17 00:00:00 2001 From: Sergey Zasenko Date: Mon, 28 May 2012 23:02:54 +0300 Subject: [PATCH] Morse code convertor --- lib/DDG/Goodie/Morse.pm | 25 +++++++++++++++++++++++++ t/Morse.t | 21 +++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 lib/DDG/Goodie/Morse.pm create mode 100644 t/Morse.t diff --git a/lib/DDG/Goodie/Morse.pm b/lib/DDG/Goodie/Morse.pm new file mode 100644 index 000000000..aec3ae7e9 --- /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 start => '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;