Should have unit even if not given by OFF

This commit is contained in:
cdricms
2025-12-06 19:31:18 +01:00
parent dd191b585d
commit b419e8c620
3 changed files with 7387 additions and 2 deletions

View File

@@ -106,7 +106,7 @@ public struct Nutrient: Sendable {
public var per100g: Double? { values["\(name)_100g"] }
public var perServing: Double? { values["\(name)_serving"] }
public var value: Double? { values["\(name)_value"] ?? values[name] }
public var unit: String? { units["\(name)_unit"] }
public var unit: String? { units["\(name)_unit"] ?? _unit?.rawValue }
// Computed / Legacy
public var valueComputed: Double? { values["\(name)_value"] }
@@ -159,6 +159,147 @@ public struct Nutrient: Sendable {
else { return nil }
return UnitValue(value: rawValue, unit: unitEnum)
}
private var _unit: Units.Unit? {
switch name {
case "energy-kj": .init(rawValue: "kJ")
case "energy-kcal": .init(rawValue: "kcal")
case "energy": .init(rawValue: "kj")
case "energy-from-fat": .init(rawValue: "kJ")
case "fat": .init(rawValue: "g")
case "saturated-fat": .init(rawValue: "g")
case "butyric-acid": .init(rawValue: "g")
case "caproic-acid": .init(rawValue: "g")
case "caprylic-acid": .init(rawValue: "g")
case "capric-acid": .init(rawValue: "g")
case "lauric-acid": .init(rawValue: "g")
case "myristic-acid": .init(rawValue: "g")
case "palmitic-acid": .init(rawValue: "g")
case "Psicose": .init(rawValue: "g")
case "stearic-acid": .init(rawValue: "g")
case "arachidic-acid": .init(rawValue: "g")
case "behenic-acid": .init(rawValue: "g")
case "lignoceric-acid": .init(rawValue: "g")
case "cerotic-acid": .init(rawValue: "g")
case "montanic-acid": .init(rawValue: "g")
case "melissic-acid": .init(rawValue: "g")
case "unsaturated-fat": .init(rawValue: "g")
case "monounsaturated-fat": .init(rawValue: "g")
case "polyunsaturated-fat": .init(rawValue: "g")
case "omega-3-fat": .init(rawValue: "mg")
case "alpha-linolenic-acid": .init(rawValue: "g")
case "eicosapentaenoic-acid": .init(rawValue: "g")
case "docosahexaenoic-acid": .init(rawValue: "g")
case "omega-6-fat": .init(rawValue: "mg")
case "linoleic-acid": .init(rawValue: "g")
case "arachidonic-acid": .init(rawValue: "g")
case "gamma-linolenic-acid": .init(rawValue: "g")
case "dihomo-gamma-linolenic-acid": .init(rawValue: "g")
case "omega-9-fat": .init(rawValue: "mg")
case "oleic-acid": .init(rawValue: "g")
case "elaidic-acid": .init(rawValue: "g")
case "gondoic-acid": .init(rawValue: "g")
case "mead-acid": .init(rawValue: "g")
case "erucic-acid": .init(rawValue: "g")
case "nervonic-acid": .init(rawValue: "g")
case "trans-fat": .init(rawValue: "g")
case "cholesterol": .init(rawValue: "mg")
case "gamma-oryzanol": .init(rawValue: "mg")
case "carbohydrates-total": .init(rawValue: "g")
case "carbohydrates": .init(rawValue: "g")
case "sugars": .init(rawValue: "g")
case "added-sugars": .init(rawValue: "g")
case "sucrose": .init(rawValue: "g")
case "glucose": .init(rawValue: "g")
case "fructose": .init(rawValue: "g")
case "oligosaccharide": .init(rawValue: "g")
case "lactose": .init(rawValue: "g")
case "galactose": .init(rawValue: "g")
case "maltose": .init(rawValue: "g")
case "maltodextrins": .init(rawValue: "g")
case "starch": .init(rawValue: "g")
case "polyols": .init(rawValue: "g")
case "Erythritol": .init(rawValue: "g")
case "Isomalt": .init(rawValue: "g")
case "Maltitol": .init(rawValue: "g")
case "Sorbitol": .init(rawValue: "g")
case "fiber": .init(rawValue: "g")
case "soluble-fiber": .init(rawValue: "g")
case "insoluble-fiber": .init(rawValue: "g")
case "proteins": .init(rawValue: "g")
case "casein": .init(rawValue: "g")
case "serum-proteins": .init(rawValue: "g")
case "nucleotides": .init(rawValue: "g")
case "salt": .init(rawValue: "g")
case "added-salt": .init(rawValue: "g")
case "sodium": .init(rawValue: "g")
case "alcohol": .init(rawValue: "% vol")
case "vitamin-a": .init(rawValue: "µg")
case "beta-carotene": .init(rawValue: "g")
case "vitamin-d": .init(rawValue: "µg")
case "vitamin-e": .init(rawValue: "mg")
case "vitamin-k": .init(rawValue: "µg")
case "vitamin-c": .init(rawValue: "mg")
case "vitamin-b1": .init(rawValue: "mg")
case "vitamin-b2": .init(rawValue: "mg")
case "vitamin-pp": .init(rawValue: "mg")
case "vitamin-b6": .init(rawValue: "mg")
case "vitamin-b9": .init(rawValue: "µg")
case "folates": .init(rawValue: "µg")
case "vitamin-b12": .init(rawValue: "µg")
case "biotin": .init(rawValue: "µg")
case "pantothenic-acid": .init(rawValue: "mg")
case "silica": .init(rawValue: "mg")
case "bicarbonate": .init(rawValue: "mg")
case "Sulphate": .init(rawValue: "mg")
case "Nitrate": .init(rawValue: "mg")
case "potassium": .init(rawValue: "mg")
case "chloride": .init(rawValue: "mg")
case "calcium": .init(rawValue: "mg")
case "phosphorus": .init(rawValue: "mg")
case "iron": .init(rawValue: "mg")
case "magnesium": .init(rawValue: "mg")
case "zinc": .init(rawValue: "mg")
case "copper": .init(rawValue: "mg")
case "manganese": .init(rawValue: "mg")
case "fluoride": .init(rawValue: "mg")
case "selenium": .init(rawValue: "µg")
case "chromium": .init(rawValue: "µg")
case "molybdenum": .init(rawValue: "µg")
case "iodine": .init(rawValue: "µg")
case "caffeine": .init(rawValue: "mg")
case "taurine": .init(rawValue: "g")
case "chlorophyl": .init(rawValue: "g")
case "choline": .init(rawValue: "g")
case "phylloquinone": .init(rawValue: "g")
case "beta-glucan": .init(rawValue: "g")
case "inositol": .init(rawValue: "g")
case "carnitine": .init(rawValue: "g")
case "melatonin": .init(rawValue: "µg")
case "methylsulfonylmethane": .init(rawValue: "mg")
case "creatine": .init(rawValue: "g")
case "l-citrulline": .init(rawValue: "mg")
case "l-glutamine": .init(rawValue: "mg")
case "bcaa": .init(rawValue: "g")
case "l-valine": .init(rawValue: "mg")
case "l-leucine": .init(rawValue: "mg")
case "l-isoleucine": .init(rawValue: "mg")
case "l-arginine": .init(rawValue: "mg")
case "l-cysteine": .init(rawValue: "mg")
case "l-Glutathione": .init(rawValue: "mg")
case "iron II sulphate monohydrate": .init(rawValue: "mg")
case "potassium iodide": .init(rawValue: "mg")
case "copper II sulphate pentahydrate": .init(rawValue: "mg")
case "manganous sulphate monohydrate": .init(rawValue: "mg")
case "zinc sulphate monohydrate": .init(rawValue: "mg")
case "sodium selenite": .init(rawValue: "mg")
case "calcium iodate anhydrous": .init(rawValue: "mg")
case "cassia gum": .init(rawValue: "mg")
case "ammonium chloride": .init(rawValue: "mg")
case "choline chloride": .init(rawValue: "mg")
default: nil
}
}
}
// MARK: - Helpers