patat-0.10.0.0: lib/Patat/Transition.hs
--------------------------------------------------------------------------------
{-# LANGUAGE OverloadedStrings #-}
module Patat.Transition
( Duration (..)
, threadDelayDuration
, TransitionGen
, TransitionId
, TransitionInstance (..)
, parseTransitionSettings
, newTransition
, stepTransition
) where
--------------------------------------------------------------------------------
import qualified Data.Aeson as A
import qualified Data.HashMap.Strict as HMS
import Data.Text (Text)
import qualified Data.Text as T
import Patat.Presentation.Settings (TransitionSettings (..))
import Patat.Transition.Internal
import qualified Patat.Transition.SlideLeft as SlideLeft
--------------------------------------------------------------------------------
transitions :: HMS.HashMap Text Transition
transitions = HMS.fromList
[ ("slideLeft", Transition SlideLeft.slideLeft)
]
--------------------------------------------------------------------------------
parseTransitionSettings
:: TransitionSettings -> Either String TransitionGen
parseTransitionSettings ts = case HMS.lookup ty transitions of
Nothing -> Left $ "unknown transition type: " ++ show ty
Just (Transition f) -> case A.fromJSON (A.Object $ tsParams ts) of
A.Success conf -> Right $ f conf
A.Error err -> Left $
"could not parse " ++ T.unpack ty ++ " transition: " ++ err
where
ty = tsType ts