zeroclickinfo-goodies/lib/DDG/Goodie/AspectRatio.pm

47 lines
1.3 KiB
Perl

package DDG::Goodie::AspectRatio;
# ABSTRACT: Calculates aspect ratio based on previously defined one
use strict;
use DDG::Goodie;
triggers start => "aspect ratio";
zci is_cached => 1;
zci answer_type => "aspect_ratio";
primary_example_queries 'aspect ratio 4:3 640:?';
description 'complete the missing value with a given ratio';
name 'AspectRatio';
code_url 'https://github.com/duckduckgo/zeroclickinfo-goodies/blob/master/lib/DDG/Goodie/AspectRatio.pm';
category 'calculations';
topics 'math';
attribution github => [ 'https://github.com/mrshu', 'mrshu' ];
handle remainder => sub {
my $input = $_;
my $result = 0;
my $ratio = 0;
if ($input =~ /^(\d+(?:\.\d+)?)\s*\:\s*(\d+(?:\.\d+)?)\s*(?:(?:(\?)\s*:\s*(\d+(?:\.\d+)?))|(?:(\d+(?:\.\d+)?)\s*:\s*(\?)))$/) {
$ratio = $1 / $2;
my $pretty_ratio = $1 . ':' . $2;
my $result;
if ($6 && $6 eq "?") {
$result = $5 . ':' . ($5 / $ratio);
} elsif ($3 && $3 eq "?") {
$result = ($4 * $ratio) . ':' . $4;
}
return unless $result;
return "Aspect ratio: $result ($pretty_ratio)",
structured_answer => {
input => [$pretty_ratio],
operation => 'Aspect ratio',
result => $result
};
}
};
1;