Should have unit even if not given by OFF
This commit is contained in:
@@ -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
|
||||
|
||||
7239
Sources/OpenFoodFactsSDK/Schemas/nutrients.txt
Normal file
7239
Sources/OpenFoodFactsSDK/Schemas/nutrients.txt
Normal file
File diff suppressed because it is too large
Load Diff
@@ -34,13 +34,18 @@ final class OpenFoodFactsTests: XCTestCase {
|
||||
|
||||
func testSearch() async throws {
|
||||
let response = try await client.search(
|
||||
.query("chocolate"),
|
||||
.query("Peanut butter"),
|
||||
// .tag(tag: .brands, value: "milka"),
|
||||
.pageSize(5),
|
||||
// .sort(.popularity),
|
||||
)
|
||||
|
||||
let results = response.hits
|
||||
let a = results.compactMap { $0.nutriments }
|
||||
print(
|
||||
a.compactMap { b in
|
||||
b.fat.per100gUnitValue
|
||||
})
|
||||
|
||||
let jsonResults = try JSONEncoder().encode(results)
|
||||
try jsonResults.write(to: .init(filePath: "./jsonResults.json"))
|
||||
|
||||
Reference in New Issue
Block a user