patat-0.12.0.0: lib/Patat/Presentation/Display/Internal.hs
--------------------------------------------------------------------------------
module Patat.Presentation.Display.Internal
( DisplaySettings (..)
, themed
) where
--------------------------------------------------------------------------------
import Patat.Presentation.Internal (Margins)
import Patat.Presentation.Settings (Wrap)
import qualified Patat.PrettyPrint as PP
import Patat.Size (Size)
import qualified Patat.Theme as Theme
import qualified Skylighting as Skylighting
--------------------------------------------------------------------------------
data DisplaySettings = DisplaySettings
{ dsSize :: !Size
, dsWrap :: !Wrap
, dsTabStop :: !Int
, dsMargins :: !Margins
, dsTheme :: !Theme.Theme
, dsSyntaxMap :: !Skylighting.SyntaxMap
}
--------------------------------------------------------------------------------
themed
:: DisplaySettings -> (Theme.Theme -> Maybe Theme.Style) -> PP.Doc -> PP.Doc
themed ds f = case f (dsTheme ds) of
Nothing -> id
Just (Theme.Style []) -> id
Just (Theme.Style codes) -> PP.ansi codes