diff --git a/lib/DDG/Goodie/RoyalMail.pm b/lib/DDG/Goodie/RoyalMail.pm new file mode 100644 index 000000000..ac40ba676 --- /dev/null +++ b/lib/DDG/Goodie/RoyalMail.pm @@ -0,0 +1,35 @@ +package DDG::Goodie::RoyalMail; + +use DDG::Goodie; + +zci is_cached => 1; +zci answer_type => "royal_mail"; + +primary_example_queries 'royal mail RU401513974GB'; +description 'Track a Royal Mail / Parcelforce parcel'; +icon_url "/i/www.royalmail.com.ico"; +name 'Royal Mail'; +code_url 'https://github.com/duckduckgo/zeroclickinfo-goodies/blob/master/lib/DDG/Goodie/RoyalMail.pm'; +category 'ids'; +topics 'special_interest'; +attribution github => [ 'https://github.com/TopHattedCoder', 'Tom Bebbington'], + twitter => ['http://twitter.com/TopHattedCoder', '@Tom Bebbington']; + +# Regex for royal mail. +my $rm_qr = qr/royalmail|parcelforce/io; + +my $tracking_qr = qr/package|parcel|track(?:ing|)|num(?:ber|)|\#/i; +# note: parcelforce format listed at http://www.parcelforce.com/help-information/frequently-asked-questions/track-parcel#2 +my $parcel = qr/[A-Z]{2}[0-9]{7}|[A-Z]{4}[0-9]{10}|[A-Z]{2}[0-9]{9}GB|[0-9]{12}|[A-Z]{2}[0-9]{9}[A-Z]{2}/i; +triggers query_nowhitespace_nodash => qr/ + ^$rm_qr.*?(?$parcel)$| + ^(?$parcel).*?$rm_qr$| + ^(?:$tracking_qr|$rm_qr|)*(?$parcel)(?:$tracking_qr|$rm_qr|)*$ + /xo; + +handle query_nowhitespace_nodash => sub { + my $parcel_number = $+{parcel_number}; + return $parcel_number, heading => 'Royal Mail / Parcelforce Tracking', html => qq(Track this parcel at Royal Mail or Parcelforce.); +}; + +1;