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

52 lines
1.5 KiB
Perl
Raw Normal View History

2015-04-06 07:07:54 -07:00
package DDG::Goodie::Constants;
# ABSTRACT: Various Math and Physics constants.
use DDG::Goodie;
use YAML::XS qw( LoadFile );
2015-04-06 07:07:54 -07:00
zci answer_type => "constants";
zci is_cached => 1;
name "Constants";
description "Succinct explanation of what this instant answer does";
primary_example_queries "first example query", "second example query";
secondary_example_queries "optional -- demonstrate any additional triggers";
category "formulas";
topics "math";
code_url "https://github.com/duckduckgo/zeroclickinfo-goodies/blob/master/lib/DDG/Goodie/Constants.pm";
attribution github => ["Roysten", "Roy van der Vegt"],
github => ["hemanth", "Hemanth.HM"],
2015-04-06 07:07:54 -07:00
twitter => "gnumanth";
my $constants = LoadFile(share("constants.yml"));
2015-04-06 07:07:54 -07:00
#loop through constants
foreach my $name (keys %$constants) {
#obtain to constant with name $keyword
my $constant = $constants->{$name};
#add aliases as separate triggers
foreach my $alias (@{$constant->{'aliases'}}) {
$constants->{$alias} = $constant;
}
}
my @triggers = keys %{$constants};
triggers startend => @triggers;
2015-04-06 07:07:54 -07:00
# Handle statement
handle query_lc => sub {
my $constant = $constants->{$_};
return unless my $val = $constant->{'value'};
#fallback to plain answer if html is not present
my $result = $val->{'html'} ? $val->{'html'} : $val->{'plain'};
return $result, structured_answer => {
input => [],
operation => $constant->{'name'},
result => $result
};
2015-04-06 07:07:54 -07:00
};
1;