module Lacroix
  ( Lacroix(..)
  , Regular(..)
  , Curate(..)
  , NiCola(..)
  , description
  , pronunciation
  ) where

-- | All flavours of regular LaCroix.
data Regular
  = Apricot
  | BeachPlum
  | Berry
  | BlackRazzberry
  | Coconut
  | GuavaSaoPalo
  | Hibiscus
  | Keylime
  | Lemon
  | Lime
  | Limoncello
  | Mango
  | Orange
  | Pamplemousse
  | Passionfruit
  | Pasteque
  | PeachPear
  | Pure
  | RazzCranberry
  | Tangerine

-- | All flavours of Cúrate LaCroix.
data Curate
  = CeriseLimon
  | KiwiSandia
  | MelonPomelo
  | MurePepino
  | PinaFraise
  | PommeBaya

-- | All flavours of NiCola Lacroix.
data NiCola
  = CoconutCola
  | CoffeaExotica
  | Cubana
  | Lacola

-- | A refreshing, cold beverage to be cracked open and enjoyed.
data Lacroix
  = Regular Regular
  | Curate Curate
  | NiCola NiCola

-- | Describe a LaCroix beverage.
description :: Lacroix -> String
description :: Lacroix -> String
description (Regular Regular
r) = Regular -> String
regularDescription Regular
r
description (Curate  Curate
c) = Curate -> String
curateDescription Curate
c
description (NiCola  NiCola
n) = NiCola -> String
niColaDescription NiCola
n

-- | How to pronoounce @LaCroix@, @Cúrate@, or @NiCola@.
pronunciation :: Lacroix -> String
pronunciation :: Lacroix -> String
pronunciation (Regular Regular
_ ) = String
"La-CROY, rhymes with enjoy."
pronunciation (Curate Curate
_) = String
"La-CROY, rhymes with enjoy.\nCúrate is COO-rah-tay."
pronunciation (NiCola NiCola
_) = String
"La-CROY, rhymes with enjoy.\nNih-Cola."

regularDescription :: Regular -> String
regularDescription :: Regular -> String
regularDescription Regular
Apricot = String
"Always Apricot!\nSweet + Tart, fresh and natural.\n100% refreshing, 100% innocent. Always."
regularDescription Regular
BeachPlum = String
"Start dreaming of summer, and excite your imagination, with the taste, taste, taste of Cool Beach Plum!"
regularDescription Regular
Berry = String
"Berry Delicious!\nA subtle fruity berry blend."
regularDescription Regular
BlackRazzberry = String
"An innocently sweet twist that Makes your taste buds sing !!"
regularDescription Regular
Coconut = String
"Enjoy the taste of summer year-round!\nSlightly sweet and a bit creamy flavor of coconut."
regularDescription Regular
GuavaSaoPalo = String
"Savor the sweet tropical delicacy and vibrant essence that satisfies your Constant Cravings !!"
regularDescription Regular
Hibiscus = String
"If the color pink had a flavor - this would be it!\nSlightly botanical, completely refreshing!"
regularDescription Regular
Keylime = String
"Key Lime Surprise!\nStarting with creamy notes of toasted meringue, this fan-favorite combines the tart, crisp KeyLime essence with a rich graham cracker finish."
regularDescription Regular
Lemon = String
"A Lively Lemon delight!\nBright flavor, slightly tart and sweet."
regularDescription Regular
Lime = String
"Classic Crowd Pleaser!\nA refreshing citrus zest - a fresh lime, just picked from the tree."
regularDescription Regular
Limoncello = String
"Squeeze the Day!\nA hint of lemon. A smooth finish.\nSavor the taste of the Amalfi Coast."
regularDescription Regular
Mango = String
"Take me away!\nFresh, juicy and succulent - just like the fruit!"
regularDescription Regular
Orange = String
"The Sunny Side of Life!\nAroma of freshly squeezed with a natural lively citrus delivery."
regularDescription Regular
Pamplemousse = String
"Pamplemousse, Please!\nFrench for “grapefruit”, fresh and ripe. A pantry staple"
regularDescription Regular
Passionfruit = String
"A twist on the tropics: A trace of this particular fruit is added for a refreshing twist on tropics."
regularDescription Regular
Pasteque = String
"Pass the Pasteque!\nThis refreshing watermelon treat captures the lusciousness of sweet watermelon."
regularDescription Regular
PeachPear = String
"A Peach-Pear Combo!\nA delightful combination, with hints of each."
regularDescription Regular
Pure = String
"Pure-ly Perfect!\nThe classic unflavored sparkling water is crisp, clean and thirst-quenching."
regularDescription Regular
RazzCranberry = String
"Mix It Up!\nA flavorful combination of sweet and tart."
regularDescription Regular
Tangerine = String
"Flavor explosion!\nSlightly stronger than our Orange flavor, Tanger-EEN has a flavor explosion of a freshly peeled fruit."

curateDescription :: Curate -> String
curateDescription :: Curate -> String
curateDescription Curate
CeriseLimon = String
"Cherry Lime.\nBolder flavors, Cúrate is pronounced “coo-rah-tay”, which means to cure yourself."
curateDescription Curate
KiwiSandia = String
"Kiwi Watermelon.\nFreshly cut, bright watermelon wedges and juicy slices of kiwi … now that is a perfect pairing!"
curateDescription Curate
MelonPomelo = String
"Cantaloupe Pink Grapefruit.\nRipe cantaloupe essence infused with pink grapefruit… a tangy duo with a touch of sweetness!"
curateDescription Curate
MurePepino = String
"Blackberry Cucumber.\nSweet & sour blackberry notes and the natural earthiness of crisp cucumber create this unique new flavor combination."
curateDescription Curate
PinaFraise = String
"Pineapple Strawberry.\nCombines the tartness of freshly squeezed pineapple with the sweetness of fresh-picked strawberries."
curateDescription Curate
PommeBaya = String
"Bolder flavors, Cúrate is in unique tall cans, perfect for on-the-go."

niColaDescription :: NiCola -> String
niColaDescription :: NiCola -> String
niColaDescription NiCola
CoconutCola = String
"Coconut Cola.\nBlends sweet and nutty flavor with crisp cola taste"
niColaDescriptin :: NiCola -> String
niColaDescriptin NiCola
CoffeaExotica = String
"Coffea Exotica.\nIntoxicates with rich and smoothly elegant coffee essence."
niColaDescriptin NiCola
Cubana = String
"Cubana.\nThis mojito inspired concoction mingles fresh mint and tangy lime notes."
niColaDescriptin NiCola
Lacola = String
"NiCola.\nThe first of its kind, a revolutionary experience… Natural cola essenced sparkling water completely Innocent!"