{-# LANGUAGE TemplateHaskell #-}
module Language.Drasil.Printing.PrintingInformation (
Notation(..), HasPrintingOptions(..)
, PrintingConfiguration, notation
, PrintingInformation, ckdb, stg, configuration
, piSys
, defaultConfiguration, plainConfiguration
) where
import Control.Lens (makeLenses, Lens')
import Database.Drasil (ChunkDB)
import Language.Drasil (Stage(..))
data Notation = Scientific
| Engineering
class HasPrintingOptions c where
getSetting :: Lens' c Notation
newtype PrintingConfiguration = PC { PrintingConfiguration -> Notation
_notation :: Notation }
makeLenses ''PrintingConfiguration
instance HasPrintingOptions PrintingConfiguration where getSetting :: Lens' PrintingConfiguration Notation
getSetting = (Notation -> f Notation)
-> PrintingConfiguration -> f PrintingConfiguration
Iso' PrintingConfiguration Notation
notation
data PrintingInformation = PI
{ PrintingInformation -> ChunkDB
_ckdb :: ChunkDB
, PrintingInformation -> Stage
_stg :: Stage
, PrintingInformation -> PrintingConfiguration
_configuration :: PrintingConfiguration
}
makeLenses ''PrintingInformation
instance HasPrintingOptions PrintingInformation where getSetting :: Lens' PrintingInformation Notation
getSetting = (PrintingConfiguration -> f PrintingConfiguration)
-> PrintingInformation -> f PrintingInformation
Lens' PrintingInformation PrintingConfiguration
configuration ((PrintingConfiguration -> f PrintingConfiguration)
-> PrintingInformation -> f PrintingInformation)
-> ((Notation -> f Notation)
-> PrintingConfiguration -> f PrintingConfiguration)
-> (Notation -> f Notation)
-> PrintingInformation
-> f PrintingInformation
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Notation -> f Notation)
-> PrintingConfiguration -> f PrintingConfiguration
forall c. HasPrintingOptions c => Lens' c Notation
Lens' PrintingConfiguration Notation
getSetting
piSys :: ChunkDB -> Stage -> PrintingConfiguration -> PrintingInformation
piSys :: ChunkDB -> Stage -> PrintingConfiguration -> PrintingInformation
piSys = ChunkDB -> Stage -> PrintingConfiguration -> PrintingInformation
PI
defaultConfiguration :: PrintingConfiguration
defaultConfiguration :: PrintingConfiguration
defaultConfiguration = Notation -> PrintingConfiguration
PC Notation
Engineering
plainConfiguration :: PrintingConfiguration
plainConfiguration :: PrintingConfiguration
plainConfiguration = Notation -> PrintingConfiguration
PC Notation
Scientific