packages feed

chez-grater-0.0.1: src/Chez/Grater/Parser/Types.hs

module Chez.Grater.Parser.Types where

import Chez.Grater.Internal.Prelude

import GHC.Generics (Generic)

newtype ParsedIngredientName = ParsedIngredientName { unParsedIngredientName :: CI Text }
  deriving (Eq, Ord, Show, Generic)

data ParsedQuantity
  = ParsedQuantity Double
  -- ^The quantity is a number.
  | ParsedQuantityWord (CI Text)
  -- ^The quantity is a word.
  | ParsedQuantityMissing
  -- ^There was no detected quantity.
  deriving (Eq, Ord, Show)

data ParsedUnit
  = ParsedUnit (CI Text)
  -- ^Detected a unit.
  | ParsedUnitMissing
  -- ^There was no detected unit.
  deriving (Eq, Ord, Show)

data ParsedIngredient = ParsedIngredient
  { parsedIngredientName     :: ParsedIngredientName
  , parsedIngredientQuantity :: ParsedQuantity
  , parsedIngredientUnit     :: ParsedUnit
  }
  deriving (Eq, Ord, Show)