{-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE StandaloneDeriving #-} -- | -- Module : Media.VF -- License : MIT -- Stability : experimental -- -- Simple Variable Media Type module Media.VF ( VF (..), VFC (..), ) where import Data.Text import GHC.Generics -- | Variable Media Field, specify `u` to -- determine where media will be sourced. -- -- @since 0.1.0.0 data VF u where Blank :: VF u RawText :: Text -> VF u Image :: u -> VF u Audio :: u -> VF u Video :: u -> VF u deriving stock instance Eq u => Eq (VF u) deriving stock instance Functor VF deriving stock instance Generic (VF u) deriving stock instance Show u => Show (VF u) -- | Variable Media Field Collection -- -- @since 0.1.0.0 newtype VFC u = VFC {unVFC :: [VF u]} deriving stock (Eq, Show, Generic, Functor)