{-# LANGUAGE TemplateHaskell #-}
module Drasil.LessonPlan.Core (
LessonPlan,
mkLessonPlan
) where
import Control.Lens (makeLenses)
import Drasil.System (SystemMeta, HasSystemMeta(..), HasProjectName(..))
data LessonPlan = LP {
LessonPlan -> SystemMeta
_sm :: SystemMeta
}
makeLenses ''LessonPlan
instance HasSystemMeta LessonPlan where
systemMeta :: Lens' LessonPlan SystemMeta
systemMeta = (SystemMeta -> f SystemMeta) -> LessonPlan -> f LessonPlan
Iso' LessonPlan SystemMeta
sm
instance HasProjectName LessonPlan where
projectName :: Lens' LessonPlan ProjectName
projectName = (SystemMeta -> f SystemMeta) -> LessonPlan -> f LessonPlan
forall c. HasSystemMeta c => Lens' c SystemMeta
Lens' LessonPlan SystemMeta
systemMeta ((SystemMeta -> f SystemMeta) -> LessonPlan -> f LessonPlan)
-> ((ProjectName -> f ProjectName) -> SystemMeta -> f SystemMeta)
-> (ProjectName -> f ProjectName)
-> LessonPlan
-> f LessonPlan
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ProjectName -> f ProjectName) -> SystemMeta -> f SystemMeta
forall c. HasProjectName c => Lens' c ProjectName
Lens' SystemMeta ProjectName
projectName
mkLessonPlan :: SystemMeta -> LessonPlan
mkLessonPlan :: SystemMeta -> LessonPlan
mkLessonPlan = SystemMeta -> LessonPlan
LP