commit
14089ded5e
|
@ -0,0 +1,59 @@
|
||||||
|
package DDG::Goodie::PaleoIngredientCheck;
|
||||||
|
# ABSTRACT: Indicates if a given food item is known to be safe or unsafe on the paleo diet.
|
||||||
|
|
||||||
|
use DDG::Goodie;
|
||||||
|
|
||||||
|
triggers startend => share('triggers.txt')->slurp;
|
||||||
|
|
||||||
|
zci answer_type => "paleo_ingredient_check";
|
||||||
|
zci is_cached => 1;
|
||||||
|
|
||||||
|
name "PaleoIngredientCheck";
|
||||||
|
description "Indicates if a given food item is known to be safe or unsafe on the paleo diet.";
|
||||||
|
primary_example_queries "are apples paleo friendly", "Is dairy allowed on the paleo diet?";
|
||||||
|
secondary_example_queries "Is sugar paleo friendly?", "beans paleo safe";
|
||||||
|
category "food";
|
||||||
|
topics "food_and_drink";
|
||||||
|
code_url "https://github.com/duckduckgo/zeroclickinfo-goodies/blob/master/lib/DDG/Goodie/PaleoIngredientCheck.pm";
|
||||||
|
attribution github => ["murz", "Mike Murray"];
|
||||||
|
attribution github => ["javathunderman", "Thomas Denizou"];
|
||||||
|
|
||||||
|
my @safe_array = share('safe.txt')->slurp;
|
||||||
|
my %safe_keywords = map { chomp; $_ => 1 } @safe_array;
|
||||||
|
my @unsafe_array = share('unsafe.txt')->slurp;
|
||||||
|
my %unsafe_keywords = map { chomp; $_ => 1 } @unsafe_array;
|
||||||
|
|
||||||
|
# p(%safe_keywords);
|
||||||
|
# warn($safe_keywords{"apple"});
|
||||||
|
|
||||||
|
handle remainder => sub {
|
||||||
|
return unless $_;
|
||||||
|
my $item = lc($_);
|
||||||
|
|
||||||
|
# Remove any preceding "is" or "are" text from the query.
|
||||||
|
$item =~ s/^(is|are)[\W]+//;
|
||||||
|
|
||||||
|
my $is_plural = substr($item, -1) eq "s";
|
||||||
|
my $itemAlt = $is_plural ? substr($item, 0, -1) : $item."s"; # pluralized or unpluralized form
|
||||||
|
my $result;
|
||||||
|
|
||||||
|
# warn "ITEM IS: $item";
|
||||||
|
# warn "ITEM ALT IS: $itemAlt";
|
||||||
|
|
||||||
|
if (exists $safe_keywords{$item} || exists $safe_keywords{$itemAlt}) {
|
||||||
|
$result = "Yes";
|
||||||
|
} elsif (exists $unsafe_keywords{$item} || exists $unsafe_keywords{$itemAlt}) {
|
||||||
|
$result = "No";
|
||||||
|
}
|
||||||
|
|
||||||
|
return unless $result; # ensure we have a result
|
||||||
|
|
||||||
|
return $result,
|
||||||
|
structured_answer => {
|
||||||
|
input => [$item], # or just the original query
|
||||||
|
operation => "Paleo Friendly",
|
||||||
|
result => $result
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
1;
|
|
@ -0,0 +1,131 @@
|
||||||
|
acorn squash
|
||||||
|
almonds
|
||||||
|
apple
|
||||||
|
artichoke hearts
|
||||||
|
asparagus
|
||||||
|
avocado
|
||||||
|
avocado
|
||||||
|
avocado oil
|
||||||
|
bacon
|
||||||
|
bananas
|
||||||
|
bass
|
||||||
|
bear
|
||||||
|
beef
|
||||||
|
beef jerky
|
||||||
|
beets
|
||||||
|
bison
|
||||||
|
bison jerky
|
||||||
|
bison ribeye
|
||||||
|
bison sirloin
|
||||||
|
bison steaks
|
||||||
|
blackberries
|
||||||
|
blueberries
|
||||||
|
broccoli
|
||||||
|
brussels sprouts
|
||||||
|
buffalo
|
||||||
|
butternut squash
|
||||||
|
cabbage
|
||||||
|
cantaloupe
|
||||||
|
carrots
|
||||||
|
cashews
|
||||||
|
cauliflower
|
||||||
|
celery
|
||||||
|
chicken breast
|
||||||
|
chicken eggs
|
||||||
|
chicken leg
|
||||||
|
chicken thigh
|
||||||
|
chicken wings
|
||||||
|
chuck steak
|
||||||
|
clams
|
||||||
|
clams
|
||||||
|
coconut oil
|
||||||
|
crab
|
||||||
|
crawfish
|
||||||
|
crayfish
|
||||||
|
duck eggs
|
||||||
|
eggplant
|
||||||
|
eggs
|
||||||
|
elk
|
||||||
|
emu
|
||||||
|
figs
|
||||||
|
goat
|
||||||
|
goose
|
||||||
|
goose eggs
|
||||||
|
grapes
|
||||||
|
grassfed beef
|
||||||
|
grass-fed beef
|
||||||
|
grass-fed butter
|
||||||
|
green onions
|
||||||
|
ground beef
|
||||||
|
halibut
|
||||||
|
hazelnuts
|
||||||
|
kangaroo
|
||||||
|
lamb chops
|
||||||
|
lamb rack
|
||||||
|
lean veal
|
||||||
|
lemon
|
||||||
|
lime
|
||||||
|
lobster
|
||||||
|
lobster
|
||||||
|
lychee
|
||||||
|
macadamia nuts
|
||||||
|
macadamia oil
|
||||||
|
mackerel
|
||||||
|
mango
|
||||||
|
new york steak
|
||||||
|
olive oil
|
||||||
|
oranges
|
||||||
|
ostrich
|
||||||
|
oysters
|
||||||
|
papaya
|
||||||
|
parsley
|
||||||
|
peaches
|
||||||
|
pecans
|
||||||
|
peppers
|
||||||
|
pheasant
|
||||||
|
pine nuts
|
||||||
|
pineapple guava
|
||||||
|
plums
|
||||||
|
pork
|
||||||
|
pork chops
|
||||||
|
pork tenderloin
|
||||||
|
potato
|
||||||
|
potatoes
|
||||||
|
poultry
|
||||||
|
pumpkin seeds
|
||||||
|
quail
|
||||||
|
rabbit
|
||||||
|
raspberries
|
||||||
|
rattlesnake
|
||||||
|
red snapper
|
||||||
|
reindeer
|
||||||
|
salmon
|
||||||
|
salmon
|
||||||
|
sardines
|
||||||
|
scallops
|
||||||
|
shark
|
||||||
|
shrimp
|
||||||
|
shrimp
|
||||||
|
spinach
|
||||||
|
steak
|
||||||
|
strawberries
|
||||||
|
sunfish
|
||||||
|
sunflower seeds
|
||||||
|
sweet potato
|
||||||
|
sweet potatoes
|
||||||
|
swordfish
|
||||||
|
tangerine
|
||||||
|
tilapia
|
||||||
|
trout
|
||||||
|
tuna
|
||||||
|
turkey
|
||||||
|
turtle
|
||||||
|
veal
|
||||||
|
venison steaks
|
||||||
|
walleye
|
||||||
|
walnuts
|
||||||
|
watermelon
|
||||||
|
wild boar
|
||||||
|
yam
|
||||||
|
yucca
|
||||||
|
zucchini
|
|
@ -0,0 +1,14 @@
|
||||||
|
paleo friendly
|
||||||
|
paleo friendly?
|
||||||
|
paleo diet friendly
|
||||||
|
paleo diet friendly?
|
||||||
|
paleo safe
|
||||||
|
paleo safe?
|
||||||
|
paleo
|
||||||
|
paleo?
|
||||||
|
allowed on the paleo diet
|
||||||
|
allowed on the paleo diet?
|
||||||
|
allowed on paleo diet
|
||||||
|
allowed on paleo diet?
|
||||||
|
allowed on paleo
|
||||||
|
allowed on paleo?
|
|
@ -0,0 +1,197 @@
|
||||||
|
100 grand
|
||||||
|
2% milk
|
||||||
|
5-hour energy
|
||||||
|
ace k
|
||||||
|
acesulfame potassium
|
||||||
|
acid saccharin
|
||||||
|
ack
|
||||||
|
adzuki beans
|
||||||
|
alcohol and mixers
|
||||||
|
almond joy
|
||||||
|
aminosweet
|
||||||
|
apm
|
||||||
|
apple juice
|
||||||
|
aspartame
|
||||||
|
aspartame-acesulfame salt
|
||||||
|
aspartyl-phenylalanine-1-methyl ester
|
||||||
|
beans
|
||||||
|
beer
|
||||||
|
black beans
|
||||||
|
black-eyed peas
|
||||||
|
bread
|
||||||
|
broad beans
|
||||||
|
butter
|
||||||
|
butterfinger
|
||||||
|
calcium cyclamate
|
||||||
|
canderel
|
||||||
|
candy bars
|
||||||
|
cereals
|
||||||
|
cheese
|
||||||
|
chickpeas
|
||||||
|
chinola juice
|
||||||
|
chips
|
||||||
|
clearcut isomalt
|
||||||
|
coke
|
||||||
|
cologran
|
||||||
|
cookies
|
||||||
|
corn
|
||||||
|
corn syrup
|
||||||
|
cottage cheese
|
||||||
|
crackers
|
||||||
|
cream cheese
|
||||||
|
cream of wheat
|
||||||
|
cyclamate
|
||||||
|
cyclamate and saccharin
|
||||||
|
d-glucitol
|
||||||
|
d-glucitol syrup
|
||||||
|
dairy
|
||||||
|
dairy spreads
|
||||||
|
decomalt
|
||||||
|
diabetisweet
|
||||||
|
english muffins
|
||||||
|
equal classic
|
||||||
|
equal saccharin
|
||||||
|
equal spoonful
|
||||||
|
equal sucralose
|
||||||
|
erythritol
|
||||||
|
fava beans
|
||||||
|
fettuchini
|
||||||
|
french fries
|
||||||
|
frozen yogurt
|
||||||
|
garbanzo beans
|
||||||
|
glycerin
|
||||||
|
glycerine
|
||||||
|
glycerol
|
||||||
|
glycyrrhizin
|
||||||
|
grape juice
|
||||||
|
green beans
|
||||||
|
hash browns
|
||||||
|
hershey’s
|
||||||
|
high-fructose corn syrup
|
||||||
|
horse beans
|
||||||
|
hot dogs
|
||||||
|
hsh
|
||||||
|
hydrogenated high maltose content glucose syrup
|
||||||
|
hydrogenated isomaltulose
|
||||||
|
hydrogenated maltose
|
||||||
|
hydrogenated starch hydrolysate
|
||||||
|
ice cream
|
||||||
|
ice milk
|
||||||
|
isomalt
|
||||||
|
isomaltitol
|
||||||
|
ketchup
|
||||||
|
kidney beans
|
||||||
|
lactitol
|
||||||
|
lasagna
|
||||||
|
lasagne
|
||||||
|
lentils
|
||||||
|
lesys
|
||||||
|
licorice
|
||||||
|
lima beans
|
||||||
|
low fat milk
|
||||||
|
lupins
|
||||||
|
m&ms
|
||||||
|
maltisweet
|
||||||
|
maltitol
|
||||||
|
maltitol powder
|
||||||
|
maltitol syrup
|
||||||
|
mango juice
|
||||||
|
mannitol
|
||||||
|
mesquite
|
||||||
|
milk
|
||||||
|
milky way
|
||||||
|
miso
|
||||||
|
monster
|
||||||
|
mounds
|
||||||
|
mountain dew
|
||||||
|
mountain dew mdx
|
||||||
|
mung beans
|
||||||
|
natrataste blue
|
||||||
|
natrataste gold
|
||||||
|
natrulose
|
||||||
|
navy beans
|
||||||
|
necta sweet
|
||||||
|
neotame
|
||||||
|
nestle crunch
|
||||||
|
non-fat dairy creamer
|
||||||
|
nutrasweet
|
||||||
|
oatmeal
|
||||||
|
orange juice
|
||||||
|
pancakes
|
||||||
|
pasta
|
||||||
|
pastries
|
||||||
|
payday
|
||||||
|
peanut butter
|
||||||
|
peanuts
|
||||||
|
peas
|
||||||
|
pepsi
|
||||||
|
pinto beans
|
||||||
|
polydextrose
|
||||||
|
powdered milk
|
||||||
|
pretzels
|
||||||
|
pudding
|
||||||
|
rebiana
|
||||||
|
red beans
|
||||||
|
red bull
|
||||||
|
red vines
|
||||||
|
reeses’s pieces
|
||||||
|
reese’s
|
||||||
|
reese’s fast break
|
||||||
|
rockstar
|
||||||
|
rum
|
||||||
|
saccharin
|
||||||
|
sandwiches
|
||||||
|
skim milk
|
||||||
|
skittles
|
||||||
|
smart sweet
|
||||||
|
snickers
|
||||||
|
snickers peanut butter
|
||||||
|
snowpeas
|
||||||
|
sodium saccharin
|
||||||
|
sorbitol
|
||||||
|
soybean
|
||||||
|
soybeans
|
||||||
|
spam
|
||||||
|
splenda
|
||||||
|
sprite
|
||||||
|
starbucks refreshers
|
||||||
|
starfruit juice
|
||||||
|
steviol glycoside
|
||||||
|
strawberry juice
|
||||||
|
string beans
|
||||||
|
sucaryl
|
||||||
|
sucralose
|
||||||
|
sugar
|
||||||
|
sugar alcohol
|
||||||
|
sugar snap peas
|
||||||
|
sunchips
|
||||||
|
sunett
|
||||||
|
sweet n low
|
||||||
|
sweet one
|
||||||
|
sweet twin
|
||||||
|
sweetpearl
|
||||||
|
tagatose
|
||||||
|
tequila
|
||||||
|
toast
|
||||||
|
tofu
|
||||||
|
trichlorosucrose
|
||||||
|
triscuits
|
||||||
|
twinsweet
|
||||||
|
twix
|
||||||
|
twix peanut butter
|
||||||
|
twizzlers
|
||||||
|
two percent milk
|
||||||
|
vault
|
||||||
|
vodka
|
||||||
|
wheat
|
||||||
|
wheat thins
|
||||||
|
whiskey
|
||||||
|
white beans
|
||||||
|
whole milk
|
||||||
|
xs energy drink
|
||||||
|
xylipure
|
||||||
|
xylitol
|
||||||
|
xylosweet
|
||||||
|
yogurt
|
||||||
|
zerose
|
||||||
|
zsweet
|
|
@ -0,0 +1,59 @@
|
||||||
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Test::More;
|
||||||
|
use DDG::Test::Goodie;
|
||||||
|
|
||||||
|
zci answer_type => "paleo_ingredient_check";
|
||||||
|
zci is_cached => 1;
|
||||||
|
|
||||||
|
ddg_goodie_test(
|
||||||
|
[qw( DDG::Goodie::PaleoIngredientCheck )],
|
||||||
|
'are apples paleo friendly' => test_zci(
|
||||||
|
'Yes',
|
||||||
|
structured_answer => {
|
||||||
|
input => ['apples'],
|
||||||
|
operation => 'Paleo Friendly',
|
||||||
|
result => 'Yes',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
'Is dairy allowed on the paleo diet?' => test_zci(
|
||||||
|
'No',
|
||||||
|
structured_answer => {
|
||||||
|
input => ['dairy'],
|
||||||
|
operation => 'Paleo Friendly',
|
||||||
|
result => 'No',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
'Is sugar paleo friendly?' => test_zci(
|
||||||
|
'No',
|
||||||
|
structured_answer => {
|
||||||
|
input => ['sugar'],
|
||||||
|
operation => 'Paleo Friendly',
|
||||||
|
result => 'No',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
'beans paleo safe' => test_zci(
|
||||||
|
'No',
|
||||||
|
structured_answer => {
|
||||||
|
input => ['beans'],
|
||||||
|
operation => 'Paleo Friendly',
|
||||||
|
result => 'No',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
'is sugar paleo' => test_zci(
|
||||||
|
'No',
|
||||||
|
structured_answer => {
|
||||||
|
input => ['sugar'],
|
||||||
|
operation => 'Paleo Friendly',
|
||||||
|
result => 'No',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
'Is foobar allowed on the paleo diet?' => undef,
|
||||||
|
'are notarealfood paleo friendly' => undef,
|
||||||
|
'paleo diet recipes' => undef,
|
||||||
|
'paleo recipes' => undef,
|
||||||
|
);
|
||||||
|
|
||||||
|
done_testing;
|
Loading…
Reference in New Issue