fix: normalize nutrition units and retain zero-valued nutrients
This commit is contained in:
1 parent
f037001339
commit
fa07ba8910
8 files changed
+253
-149
No files matched your search
@@ -0,0 +1,24 @@
|
||||
/** Normalização dos valores nutricionais recebidos do Open Food Facts. */
|
||||
export function getNutrientValue(value: unknown): number | null {
|
||||
if (typeof value !== "number" && typeof value !== "string") return null;
|
||||
if (typeof value === "string" && value.trim() === "") return null;
|
||||
const number = Number(value);
|
||||
return Number.isFinite(number) && number >= 0 ? number : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prefere o campo explícito em kcal. Os campos energy/energy-kj usam kJ;
|
||||
* 1 kcal = 4.184 kJ. Zero é um valor válido, distinto de dado ausente.
|
||||
* https://openfoodfacts.github.io/openfoodfacts-server/api/tutorial-off-api/
|
||||
*/
|
||||
export function getEnergyKcal(nutriments?: {
|
||||
"energy-kcal_100g"?: unknown;
|
||||
"energy-kj_100g"?: unknown;
|
||||
energy_100g?: unknown;
|
||||
}): number | null {
|
||||
const kcal = getNutrientValue(nutriments?.["energy-kcal_100g"]);
|
||||
if (kcal !== null) return kcal;
|
||||
const kj = getNutrientValue(nutriments?.["energy-kj_100g"])
|
||||
?? getNutrientValue(nutriments?.energy_100g);
|
||||
return kj === null ? null : kj / 4.184;
|
||||
}
|
||||
Reference in new issue
Block a user