diff --git a/lib/ProductOpener/Food.pm b/lib/ProductOpener/Food.pm index dab8f8756e003..78b055b5083d5 100644 --- a/lib/ProductOpener/Food.pm +++ b/lib/ProductOpener/Food.pm @@ -547,38 +547,38 @@ sub mmoll_to_unit ($value, $unit) { '--fructose-', '--lactose-', '--maltose-', '--maltodextrins-', '-starch-', '-polyols-', - '!fiber', '-soluble-fiber-', - '-insoluble-fiber-', '!proteins', - '-casein-', '-serum-proteins-', - '-nucleotides-', '!salt', - 'sodium', 'alcohol', - '#vitamins', 'vitamin-a-', - 'beta-carotene-', 'vitamin-d-', - 'vitamin-e-', 'vitamin-k-', - 'vitamin-c-', 'vitamin-b1-', - 'vitamin-b2-', 'vitamin-pp-', - 'vitamin-b6-', 'vitamin-b9-', - 'folates-', 'vitamin-b12-', - 'biotin-', 'pantothenic-acid-', - '#minerals', 'silica-', - 'bicarbonate-', 'potassium-', - 'chloride-', 'calcium-', - 'phosphorus-', 'iron-', - 'magnesium-', 'zinc-', - 'copper-', 'manganese-', - 'fluoride-', 'selenium-', - 'chromium-', 'molybdenum-', - 'iodine-', 'caffeine-', - 'taurine-', 'ph-', - 'fruits-vegetables-nuts-', 'fruits-vegetables-nuts-dried-', - 'fruits-vegetables-nuts-estimate-', 'collagen-meat-protein-ratio-', - 'cocoa-', 'chlorophyl-', - 'carbon-footprint-', 'carbon-footprint-from-meat-or-fish-', - 'nutrition-score-fr-', 'nutrition-score-uk-', - 'glycemic-index-', 'water-hardness-', - 'choline-', 'phylloquinone-', - 'beta-glucan-', 'inositol-', - 'carnitine-', + '--erythritol-', '!fiber', + '-soluble-fiber-', '-insoluble-fiber-', + '!proteins', '-casein-', + '-serum-proteins-', '-nucleotides-', + '!salt', 'sodium', + 'alcohol', '#vitamins', + 'vitamin-a-', 'beta-carotene-', + 'vitamin-d-', 'vitamin-e-', + 'vitamin-k-', 'vitamin-c-', + 'vitamin-b1-', 'vitamin-b2-', + 'vitamin-pp-', 'vitamin-b6-', + 'vitamin-b9-', 'folates-', + 'vitamin-b12-', 'biotin-', + 'pantothenic-acid-', '#minerals', + 'silica-', 'bicarbonate-', + 'potassium-', 'chloride-', + 'calcium-', 'phosphorus-', + 'iron-', 'magnesium-', + 'zinc-', 'copper-', + 'manganese-', 'fluoride-', + 'selenium-', 'chromium-', + 'molybdenum-', 'iodine-', + 'caffeine-', 'taurine-', + 'ph-', 'fruits-vegetables-nuts-', + 'fruits-vegetables-nuts-dried-', 'fruits-vegetables-nuts-estimate-', + 'collagen-meat-protein-ratio-', 'cocoa-', + 'chlorophyl-', 'carbon-footprint-', + 'carbon-footprint-from-meat-or-fish-', 'nutrition-score-fr-', + 'nutrition-score-uk-', 'glycemic-index-', + 'water-hardness-', 'choline-', + 'phylloquinone-', 'beta-glucan-', + 'inositol-', 'carnitine-', ) ], ca => [ @@ -608,37 +608,37 @@ sub mmoll_to_unit ($value, $unit) { '--glucose-', '--fructose-', '--lactose-', '--maltose-', '--maltodextrins-', '-starch-', - '-polyols-', '!proteins', - '-casein-', '-serum-proteins-', - '-nucleotides-', 'salt', - 'sodium', 'alcohol', - '#vitamins', 'vitamin-a', - 'beta-carotene-', 'vitamin-d-', - 'vitamin-e-', 'vitamin-k-', - 'vitamin-c', 'vitamin-b1-', - 'vitamin-b2-', 'vitamin-pp-', - 'vitamin-b6-', 'vitamin-b9-', - 'folates-', 'vitamin-b12-', - 'biotin-', 'pantothenic-acid-', - '#minerals', 'silica-', - 'bicarbonate-', 'potassium-', - 'chloride-', 'calcium', - 'phosphorus-', 'iron', - 'magnesium-', 'zinc-', - 'copper-', 'manganese-', - 'fluoride-', 'selenium-', - 'chromium-', 'molybdenum-', - 'iodine-', 'caffeine-', - 'taurine-', 'ph-', - 'fruits-vegetables-nuts-', 'fruits-vegetables-nuts-dried-', - 'fruits-vegetables-nuts-estimate-', 'collagen-meat-protein-ratio-', - 'cocoa-', 'chlorophyl-', - 'carbon-footprint-', 'carbon-footprint-from-meat-or-fish-', - 'nutrition-score-fr-', 'nutrition-score-uk-', - 'glycemic-index-', 'water-hardness-', - 'choline-', 'phylloquinone-', - 'beta-glucan-', 'inositol-', - 'carnitine-', + '-polyols-', '-erythritol-', + '!proteins', '-casein-', + '-serum-proteins-', '-nucleotides-', + 'salt', 'sodium', + 'alcohol', '#vitamins', + 'vitamin-a', 'beta-carotene-', + 'vitamin-d-', 'vitamin-e-', + 'vitamin-k-', 'vitamin-c', + 'vitamin-b1-', 'vitamin-b2-', + 'vitamin-pp-', 'vitamin-b6-', + 'vitamin-b9-', 'folates-', + 'vitamin-b12-', 'biotin-', + 'pantothenic-acid-', '#minerals', + 'silica-', 'bicarbonate-', + 'potassium-', 'chloride-', + 'calcium', 'phosphorus-', + 'iron', 'magnesium-', + 'zinc-', 'copper-', + 'manganese-', 'fluoride-', + 'selenium-', 'chromium-', + 'molybdenum-', 'iodine-', + 'caffeine-', 'taurine-', + 'ph-', 'fruits-vegetables-nuts-', + 'fruits-vegetables-nuts-dried-', 'fruits-vegetables-nuts-estimate-', + 'collagen-meat-protein-ratio-', 'cocoa-', + 'chlorophyl-', 'carbon-footprint-', + 'carbon-footprint-from-meat-or-fish-', 'nutrition-score-fr-', + 'nutrition-score-uk-', 'glycemic-index-', + 'water-hardness-', 'choline-', + 'phylloquinone-', 'beta-glucan-', + 'inositol-', 'carnitine-', ) ], ru => [ @@ -668,37 +668,37 @@ sub mmoll_to_unit ($value, $unit) { '--fructose-', '--lactose-', '--maltose-', '--maltodextrins-', '-starch-', '-polyols-', - '!energy-kj', '!energy-kcal', - 'energy-', '-energy-from-fat-', - 'fiber', 'salt', - 'sodium', 'alcohol', - '#vitamins', 'vitamin-a-', - 'beta-carotene-', 'vitamin-d-', - 'vitamin-e-', 'vitamin-k-', - 'vitamin-c-', 'vitamin-b1-', - 'vitamin-b2-', 'vitamin-pp-', - 'vitamin-b6-', 'vitamin-b9-', - 'folates-', 'vitamin-b12-', - 'biotin-', 'pantothenic-acid-', - '#minerals', 'silica-', - 'bicarbonate-', 'potassium-', - 'chloride-', 'calcium-', - 'phosphorus-', 'iron-', - 'magnesium-', 'zinc-', - 'copper-', 'manganese-', - 'fluoride-', 'selenium-', - 'chromium-', 'molybdenum-', - 'iodine-', 'caffeine-', - 'taurine-', 'ph-', - 'fruits-vegetables-nuts-', 'fruits-vegetables-nuts-dried-', - 'fruits-vegetables-nuts-estimate-', 'collagen-meat-protein-ratio-', - 'cocoa-', 'chlorophyl-', - 'carbon-footprint-', 'carbon-footprint-from-meat-or-fish-', - 'nutrition-score-fr-', 'nutrition-score-uk-', - 'glycemic-index-', 'water-hardness-', - 'choline-', 'phylloquinone-', - 'beta-glucan-', 'inositol-', - 'carnitine-', + '--erythritol-', '!energy-kj', + '!energy-kcal', 'energy-', + '-energy-from-fat-', 'fiber', + 'salt', 'sodium', + 'alcohol', '#vitamins', + 'vitamin-a-', 'beta-carotene-', + 'vitamin-d-', 'vitamin-e-', + 'vitamin-k-', 'vitamin-c-', + 'vitamin-b1-', 'vitamin-b2-', + 'vitamin-pp-', 'vitamin-b6-', + 'vitamin-b9-', 'folates-', + 'vitamin-b12-', 'biotin-', + 'pantothenic-acid-', '#minerals', + 'silica-', 'bicarbonate-', + 'potassium-', 'chloride-', + 'calcium-', 'phosphorus-', + 'iron-', 'magnesium-', + 'zinc-', 'copper-', + 'manganese-', 'fluoride-', + 'selenium-', 'chromium-', + 'molybdenum-', 'iodine-', + 'caffeine-', 'taurine-', + 'ph-', 'fruits-vegetables-nuts-', + 'fruits-vegetables-nuts-dried-', 'fruits-vegetables-nuts-estimate-', + 'collagen-meat-protein-ratio-', 'cocoa-', + 'chlorophyl-', 'carbon-footprint-', + 'carbon-footprint-from-meat-or-fish-', 'nutrition-score-fr-', + 'nutrition-score-uk-', 'glycemic-index-', + 'water-hardness-', 'choline-', + 'phylloquinone-', 'beta-glucan-', + 'inositol-', 'carnitine-', ) ], us => [ @@ -726,37 +726,38 @@ sub mmoll_to_unit ($value, $unit) { 'sodium', '!carbohydrates', '-fiber', '--soluble-fiber-', '--insoluble-fiber-', '-sugars', - '-added-sugars', '--sucrose-', + '--added-sugars', '--sucrose-', '--glucose-', '--fructose-', '--lactose-', '--maltose-', '--maltodextrins-', '-starch-', - '-polyols-', '!proteins', - '-casein-', '-serum-proteins-', - '-nucleotides-', 'alcohol', - '#vitamins', 'vitamin-a-', - 'beta-carotene-', 'vitamin-d', - 'vitamin-e-', 'vitamin-k-', - 'vitamin-c-', 'vitamin-b1-', - 'vitamin-b2-', 'vitamin-pp-', - 'vitamin-b6-', 'vitamin-b9-', - 'folates-', 'vitamin-b12-', - 'biotin-', 'pantothenic-acid-', - '#minerals', 'silica-', - 'bicarbonate-', 'potassium', - 'chloride-', 'calcium', - 'phosphorus-', 'iron', - 'magnesium-', 'zinc-', - 'copper-', 'manganese-', - 'fluoride-', 'selenium-', - 'chromium-', 'molybdenum-', - 'iodine-', 'caffeine-', - 'taurine-', 'ph-', - 'fruits-vegetables-nuts-', 'fruits-vegetables-nuts-dried-', - 'fruits-vegetables-nuts-estimate-', 'collagen-meat-protein-ratio-', - 'cocoa-', 'chlorophyl-', - 'carbon-footprint-', 'carbon-footprint-from-meat-or-fish-', - 'nutrition-score-fr-', 'nutrition-score-uk-', - 'glycemic-index-', 'water-hardness-', + '-polyols-', '-erythritol-', + '!proteins', '-casein-', + '-serum-proteins-', '-nucleotides-', + 'alcohol', '#vitamins', + 'vitamin-a-', 'beta-carotene-', + 'vitamin-d', 'vitamin-e-', + 'vitamin-k-', 'vitamin-c-', + 'vitamin-b1-', 'vitamin-b2-', + 'vitamin-pp-', 'vitamin-b6-', + 'vitamin-b9-', 'folates-', + 'vitamin-b12-', 'biotin-', + 'pantothenic-acid-', '#minerals', + 'silica-', 'bicarbonate-', + 'potassium', 'chloride-', + 'calcium', 'phosphorus-', + 'iron', 'magnesium-', + 'zinc-', 'copper-', + 'manganese-', 'fluoride-', + 'selenium-', 'chromium-', + 'molybdenum-', 'iodine-', + 'caffeine-', 'taurine-', + 'ph-', 'fruits-vegetables-nuts-', + 'fruits-vegetables-nuts-dried-', 'fruits-vegetables-nuts-estimate-', + 'collagen-meat-protein-ratio-', 'cocoa-', + 'chlorophyl-', 'carbon-footprint-', + 'carbon-footprint-from-meat-or-fish-', 'nutrition-score-fr-', + 'nutrition-score-uk-', 'glycemic-index-', + 'water-hardness-', ) ], us_before_2017 => [ @@ -787,36 +788,36 @@ sub mmoll_to_unit ($value, $unit) { '--glucose-', '--fructose-', '--lactose-', '--maltose-', '--maltodextrins-', '-starch-', - '-polyols-', '!proteins', - '-casein-', '-serum-proteins-', - '-nucleotides-', 'alcohol', - '#vitamins', 'vitamin-a', - 'beta-carotene-', 'vitamin-d-', - 'vitamin-e-', 'vitamin-k-', - 'vitamin-c', 'vitamin-b1-', - 'vitamin-b2-', 'vitamin-pp-', - 'vitamin-b6-', 'vitamin-b9-', - 'folates-', 'vitamin-b12-', - 'biotin-', 'pantothenic-acid-', - '#minerals', 'silica-', - 'bicarbonate-', 'potassium-', - 'chloride-', 'calcium', - 'phosphorus-', 'iron', - 'magnesium-', 'zinc-', - 'copper-', 'manganese-', - 'fluoride-', 'selenium-', - 'chromium-', 'molybdenum-', - 'iodine-', 'caffeine-', - 'taurine-', 'ph-', - 'fruits-vegetables-nuts-', 'fruits-vegetables-nuts-dried-', - 'fruits-vegetables-nuts-estimate-', 'collagen-meat-protein-ratio-', - 'cocoa-', 'chlorophyl-', - 'carbon-footprint-', 'carbon-footprint-from-meat-or-fish-', - 'nutrition-score-fr-', 'nutrition-score-uk-', - 'glycemic-index-', 'water-hardness-', - 'choline-', 'phylloquinone-', - 'beta-glucan-', 'inositol-', - 'carnitine-', + '-polyols-', '--erythritol-', + '!proteins', '-casein-', + '-serum-proteins-', '-nucleotides-', + 'alcohol', '#vitamins', + 'vitamin-a', 'beta-carotene-', + 'vitamin-d-', 'vitamin-e-', + 'vitamin-k-', 'vitamin-c', + 'vitamin-b1-', 'vitamin-b2-', + 'vitamin-pp-', 'vitamin-b6-', + 'vitamin-b9-', 'folates-', + 'vitamin-b12-', 'biotin-', + 'pantothenic-acid-', '#minerals', + 'silica-', 'bicarbonate-', + 'potassium-', 'chloride-', + 'calcium', 'phosphorus-', + 'iron', 'magnesium-', + 'zinc-', 'copper-', + 'manganese-', 'fluoride-', + 'selenium-', 'chromium-', + 'molybdenum-', 'iodine-', + 'caffeine-', 'taurine-', + 'ph-', 'fruits-vegetables-nuts-', + 'fruits-vegetables-nuts-dried-', 'fruits-vegetables-nuts-estimate-', + 'collagen-meat-protein-ratio-', 'cocoa-', + 'chlorophyl-', 'carbon-footprint-', + 'carbon-footprint-from-meat-or-fish-', 'nutrition-score-fr-', + 'nutrition-score-uk-', 'glycemic-index-', + 'water-hardness-', 'choline-', + 'phylloquinone-', 'beta-glucan-', + 'inositol-', 'carnitine-', ) ], hk => [ diff --git a/taxonomies/nutrients.txt b/taxonomies/nutrients.txt index 8e8e7013bbdbc..e506171d33a65 100644 --- a/taxonomies/nutrients.txt +++ b/taxonomies/nutrients.txt @@ -2595,6 +2595,17 @@ zh_HK:多元醇 zh_TW:多元醇 unit:en: g +zz:erythritol +en:Erythritol +de:Erythrit +es:Eritritol +fr:Érythritol +it:Eritritolo +nl:Erythritol +pt:Eritritol +unit:en: g +wikidata:en: Q421873 + zz:fiber en:Fiber, Dietary fiber, Fiber, fibers, dietary fibers, fibers aoac, fibre, fibres, fibres aoac xx:Fiber, Dietary fiber, Fiber, fibers, dietary fibers, fibers aoac, fibre, fibres, fibres aoac diff --git a/tests/unit/dataqualityfood.t b/tests/unit/dataqualityfood.t index b34ea2576c61e..4ce067f021f49 100644 --- a/tests/unit/dataqualityfood.t +++ b/tests/unit/dataqualityfood.t @@ -375,4 +375,38 @@ ok( 'energy not matching nutrient' ) or diag explain $product_ref; +# Polyols in general contribute energy +$product_ref = { + nutriments => { + "energy-kj_value" => 0, + "carbohydrates_value" => 100, + "polyols_value" => 100, + "fat_value" => 0, + "proteins_value" => 0, + "fiber_value" => 0, + } +}; +ProductOpener::DataQuality::check_quality($product_ref); +ok(has_tag($product_ref, 'data_quality', 'en:energy-value-in-kj-does-not-match-value-computed-from-other-nutrients'), + 'energy not matching nutrient') + or diag explain $product_ref; + +# Erythritol is a polyol which does not contribute to energy +$product_ref = { + nutriments => { + "energy-kj_value" => 0, + "carbohydrates_value" => 100, + "polyols_value" => 100, + "erythritol_value" => 100, + "fat_value" => 0, + "proteins_value" => 0, + "fiber_value" => 0, + } +}; +ProductOpener::DataQuality::check_quality($product_ref); +ok( + !has_tag($product_ref, 'data_quality', 'en:energy-value-in-kj-does-not-match-value-computed-from-other-nutrients'), + 'energy not matching nutrient' +) or diag explain $product_ref; + done_testing();