Skip to content

Commit

Permalink
feat: add erythritol as a nutrient #7837
Browse files Browse the repository at this point in the history
  • Loading branch information
stephanegigandet committed Jan 4, 2023
1 parent ce432ab commit 3956b9a
Show file tree
Hide file tree
Showing 3 changed files with 198 additions and 152 deletions.
305 changes: 153 additions & 152 deletions lib/ProductOpener/Food.pm
Original file line number Diff line number Diff line change
Expand Up @@ -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 => [
Expand Down Expand Up @@ -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 => [
Expand Down Expand Up @@ -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 => [
Expand Down Expand Up @@ -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 => [
Expand Down Expand Up @@ -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 => [
Expand Down
11 changes: 11 additions & 0 deletions taxonomies/nutrients.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
34 changes: 34 additions & 0 deletions tests/unit/dataqualityfood.t
Original file line number Diff line number Diff line change
Expand Up @@ -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();

0 comments on commit 3956b9a

Please sign in to comment.