module Skylighting.Styles (
    parseTheme
  , kate
  , breezeDark
  , pygments
  , espresso
  , tango
  , haddock
  , monochrome
  , zenburn) where

import Data.Aeson (eitherDecode)
import Data.ByteString.Lazy (ByteString)
import qualified Data.Map as Map
import Skylighting.Types

-- | Parse a KDE theme JSON document into a skylighting Style.
parseTheme :: ByteString -> Either String Style
parseTheme :: ByteString -> Either String Style
parseTheme = forall a. FromJSON a => ByteString -> Either String a
eitherDecode

color :: Int -> Maybe Color
color :: Int -> Maybe Color
color = forall a. ToColor a => a -> Maybe Color
toColor

-- | Style based on kate's default colors.
kate :: Style
kate :: Style
kate = Style{
      tokenStyles :: Map TokenType TokenStyle
tokenStyles = forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
        [ ( TokenType
KeywordTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
31 Word8
28 Word8
27), tokenBold :: Bool
tokenBold = Bool
True })
        , ( TokenType
DataTypeTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
0 Word8
87 Word8
174) })
        , ( TokenType
DecValTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
176 Word8
128 Word8
0) })
        , ( TokenType
BaseNTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
176 Word8
128 Word8
0) })
        , ( TokenType
FloatTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
176 Word8
128 Word8
0) })
        , ( TokenType
ConstantTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
170 Word8
85 Word8
0) })
        , ( TokenType
CharTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
146 Word8
76 Word8
157) })
        , ( TokenType
SpecialCharTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
61 Word8
174 Word8
233) })
        , ( TokenType
StringTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
191 Word8
3 Word8
3) })
        , ( TokenType
VerbatimStringTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
191 Word8
3 Word8
3) })
        , ( TokenType
SpecialStringTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
255 Word8
85 Word8
0) })
        , ( TokenType
ImportTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
255 Word8
85 Word8
0) })
        , ( TokenType
CommentTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
137 Word8
136 Word8
135) })
        , ( TokenType
DocumentationTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
96 Word8
120 Word8
128) })
        , ( TokenType
AnnotationTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
202 Word8
96 Word8
202) })
        , ( TokenType
CommentVarTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
0 Word8
149 Word8
255) })
        , ( TokenType
OtherTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
0 Word8
110 Word8
40) })
        , ( TokenType
FunctionTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
100 Word8
74 Word8
155) })
        , ( TokenType
VariableTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
0 Word8
87 Word8
174) })
        , ( TokenType
ControlFlowTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
31 Word8
28 Word8
27), tokenBold :: Bool
tokenBold = Bool
True })
        , ( TokenType
OperatorTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
31 Word8
28 Word8
27) })
        , ( TokenType
BuiltInTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
100 Word8
74 Word8
155), tokenBold :: Bool
tokenBold = Bool
True })
        , ( TokenType
ExtensionTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
0 Word8
149 Word8
255), tokenBold :: Bool
tokenBold = Bool
True })
        , ( TokenType
PreprocessorTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
0 Word8
110 Word8
40) })
        , ( TokenType
AttributeTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
0 Word8
87 Word8
174) })
        , ( TokenType
RegionMarkerTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
0 Word8
87 Word8
174), tokenBackground :: Maybe Color
tokenBackground = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
224 Word8
233 Word8
248)} )
        , ( TokenType
InformationTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
176 Word8
128 Word8
0) })
        , ( TokenType
WarningTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
191 Word8
3 Word8
3) })
        , ( TokenType
AlertTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
191 Word8
3 Word8
3), tokenBackground :: Maybe Color
tokenBackground = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
247 Word8
230 Word8
230), tokenBold :: Bool
tokenBold = Bool
True })
        , ( TokenType
ErrorTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
191 Word8
3 Word8
3), tokenUnderline :: Bool
tokenUnderline = Bool
True })
        , ( TokenType
NormalTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
31 Word8
28 Word8
27) })
        ]
    , defaultColor :: Maybe Color
defaultColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
31 Word8
28 Word8
27)
    , backgroundColor :: Maybe Color
backgroundColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
255 Word8
255 Word8
255)
    , lineNumberColor :: Maybe Color
lineNumberColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
160 Word8
160 Word8
160)
    , lineNumberBackgroundColor :: Maybe Color
lineNumberBackgroundColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
255 Word8
255 Word8
255)
    }

-- | Style from the breeze-dark KDE syntax highlighting theme.
breezeDark :: Style
breezeDark :: Style
breezeDark = Style
    { tokenStyles :: Map TokenType TokenStyle
tokenStyles = forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
        [ ( TokenType
KeywordTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
207 Word8
207 Word8
194), tokenBold :: Bool
tokenBold = Bool
True })
        , ( TokenType
DataTypeTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
41 Word8
128 Word8
185) })
        , ( TokenType
DecValTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
246 Word8
116 Word8
0) })
        , ( TokenType
BaseNTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
246 Word8
116 Word8
0) })
        , ( TokenType
FloatTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
246 Word8
116 Word8
0) })
        , ( TokenType
ConstantTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
39 Word8
174 Word8
174), tokenBold :: Bool
tokenBold = Bool
True })
        , ( TokenType
CharTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
61 Word8
174 Word8
233) })
        , ( TokenType
SpecialCharTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
61 Word8
174 Word8
233) })
        , ( TokenType
StringTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
244 Word8
79 Word8
79) })
        , ( TokenType
VerbatimStringTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
218 Word8
68 Word8
83) })
        , ( TokenType
SpecialStringTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
218 Word8
68 Word8
83) })
        , ( TokenType
ImportTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
39 Word8
174 Word8
96) })
        , ( TokenType
CommentTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
122 Word8
124 Word8
125) })
        , ( TokenType
DocumentationTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
164 Word8
51 Word8
64) })
        , ( TokenType
AnnotationTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
63 Word8
128 Word8
88) })
        , ( TokenType
CommentVarTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
127 Word8
140 Word8
141) })
        , ( TokenType
OtherTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
39 Word8
174 Word8
96) })
        , ( TokenType
FunctionTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
142 Word8
68 Word8
173) })
        , ( TokenType
VariableTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
39 Word8
174 Word8
174) })
        , ( TokenType
ControlFlowTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
253 Word8
188 Word8
75), tokenBold :: Bool
tokenBold = Bool
True })
        , ( TokenType
OperatorTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
207 Word8
207 Word8
194) })
        , ( TokenType
BuiltInTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
127 Word8
140 Word8
141) })
        , ( TokenType
ExtensionTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
0 Word8
153 Word8
255), tokenBold :: Bool
tokenBold = Bool
True })
        , ( TokenType
PreprocessorTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
39 Word8
174 Word8
96) })
        , ( TokenType
AttributeTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
41 Word8
128 Word8
185) })
        , ( TokenType
RegionMarkerTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
41 Word8
128 Word8
185), tokenBackground :: Maybe Color
tokenBackground = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
21 Word8
48 Word8
66) })
        , ( TokenType
InformationTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
196 Word8
91 Word8
0) })
        , ( TokenType
WarningTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
218 Word8
68 Word8
83) })
        , ( TokenType
AlertTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
149 Word8
218 Word8
76), tokenBackground :: Maybe Color
tokenBackground = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
77 Word8
31 Word8
36), tokenBold :: Bool
tokenBold = Bool
True })
        , ( TokenType
ErrorTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
218 Word8
68 Word8
83), tokenUnderline :: Bool
tokenUnderline = Bool
True })
        , ( TokenType
NormalTok, TokenStyle
defStyle { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
207 Word8
207 Word8
194) })
        ]
    , defaultColor :: Maybe Color
defaultColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
207 Word8
207 Word8
194)
    , backgroundColor :: Maybe Color
backgroundColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
35 Word8
38 Word8
41)
    , lineNumberColor :: Maybe Color
lineNumberColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
122 Word8
124 Word8
125)
    , lineNumberBackgroundColor :: Maybe Color
lineNumberBackgroundColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
35 Word8
38 Word8
41)
    }

-- | Style based on pygments's default colors.
pygments :: Style
pygments :: Style
pygments = Style{
    backgroundColor :: Maybe Color
backgroundColor = forall a. Maybe a
Nothing
  , defaultColor :: Maybe Color
defaultColor = forall a. Maybe a
Nothing
  , lineNumberColor :: Maybe Color
lineNumberColor = Int -> Maybe Color
color Int
0xaaaaaa
  , lineNumberBackgroundColor :: Maybe Color
lineNumberBackgroundColor = forall a. Maybe a
Nothing
  , tokenStyles :: Map TokenType TokenStyle
tokenStyles = forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
    [ (TokenType
KeywordTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x007020, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
DataTypeTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x902000 })
    , (TokenType
DecValTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x40a070 })
    , (TokenType
BaseNTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x40a070 })
    , (TokenType
FloatTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x40a070 })
    , (TokenType
CharTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x4070a0 })
    , (TokenType
StringTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x4070a0 })
    , (TokenType
CommentTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x60a0b0, tokenItalic :: Bool
tokenItalic = Bool
True })
    , (TokenType
OtherTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x007020 })
    , (TokenType
AlertTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xff0000, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
FunctionTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x06287e })
    , (TokenType
ErrorTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xff0000, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
WarningTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x60a0b0, tokenItalic :: Bool
tokenItalic = Bool
True, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
ConstantTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x880000 })
    , (TokenType
SpecialCharTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x4070a0 })
    , (TokenType
VerbatimStringTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x4070a0 })
    , (TokenType
SpecialStringTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xBB6688 })
    , (TokenType
ImportTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x008000, tokenBold :: Bool
tokenBold = Bool
True})
    , (TokenType
VariableTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x19177C })
    , (TokenType
ControlFlowTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x007020, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
OperatorTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x666666 })
    , (TokenType
BuiltInTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x008000})
    , (TokenType
ExtensionTok, TokenStyle
defStyle)
    , (TokenType
PreprocessorTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xBC7A00 })
    , (TokenType
AttributeTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x7D9029 })
    , (TokenType
DocumentationTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xBA2121, tokenItalic :: Bool
tokenItalic = Bool
True })
    , (TokenType
AnnotationTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x60a0b0, tokenItalic :: Bool
tokenItalic = Bool
True, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
CommentVarTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x60a0b0, tokenItalic :: Bool
tokenItalic = Bool
True, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
InformationTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x60a0b0, tokenItalic :: Bool
tokenItalic = Bool
True, tokenBold :: Bool
tokenBold = Bool
True })
    ]
  }


-- | Style based on pygments's tango colors.
tango :: Style
tango :: Style
tango = Style
  { tokenStyles :: Map TokenType TokenStyle
tokenStyles =
      forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
        [ ( TokenType
KeywordTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
32 Word8
74 Word8
135)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
True
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
DataTypeTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
32 Word8
74 Word8
135)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
DecValTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
0 Word8
0 Word8
207)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
BaseNTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
0 Word8
0 Word8
207)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
FloatTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
0 Word8
0 Word8
207)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
ConstantTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
143 Word8
89 Word8
2)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
CharTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
78 Word8
154 Word8
6)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
SpecialCharTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
206 Word8
92 Word8
0)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
True
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
StringTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
78 Word8
154 Word8
6)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
VerbatimStringTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
78 Word8
154 Word8
6)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
SpecialStringTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
78 Word8
154 Word8
6)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
ImportTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. Maybe a
Nothing
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
CommentTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
143 Word8
89 Word8
2)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
True
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
DocumentationTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
143 Word8
89 Word8
2)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
True
              , tokenItalic :: Bool
tokenItalic = Bool
True
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
AnnotationTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
143 Word8
89 Word8
2)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
True
              , tokenItalic :: Bool
tokenItalic = Bool
True
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
CommentVarTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
143 Word8
89 Word8
2)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
True
              , tokenItalic :: Bool
tokenItalic = Bool
True
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
OtherTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
143 Word8
89 Word8
2)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
FunctionTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
32 Word8
74 Word8
135)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
True
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
VariableTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
0 Word8
0 Word8
0)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
ControlFlowTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
32 Word8
74 Word8
135)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
True
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
OperatorTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
206 Word8
92 Word8
0)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
True
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
ExtensionTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. Maybe a
Nothing
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
PreprocessorTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
143 Word8
89 Word8
2)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
True
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
AttributeTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
32 Word8
74 Word8
135)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
InformationTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
143 Word8
89 Word8
2)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
True
              , tokenItalic :: Bool
tokenItalic = Bool
True
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
WarningTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
143 Word8
89 Word8
2)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
True
              , tokenItalic :: Bool
tokenItalic = Bool
True
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
AlertTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
239 Word8
41 Word8
41)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
False
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        , ( TokenType
ErrorTok
          , TokenStyle
              { tokenColor :: Maybe Color
tokenColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
164 Word8
0 Word8
0)
              , tokenBackground :: Maybe Color
tokenBackground = forall a. Maybe a
Nothing
              , tokenBold :: Bool
tokenBold = Bool
True
              , tokenItalic :: Bool
tokenItalic = Bool
False
              , tokenUnderline :: Bool
tokenUnderline = Bool
False
              }
          )
        ]
  , defaultColor :: Maybe Color
defaultColor = forall a. Maybe a
Nothing
  , backgroundColor :: Maybe Color
backgroundColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
248 Word8
248 Word8
248)
  , lineNumberColor :: Maybe Color
lineNumberColor = forall a. a -> Maybe a
Just (Word8 -> Word8 -> Word8 -> Color
RGB Word8
170 Word8
170 Word8
170)
  , lineNumberBackgroundColor :: Maybe Color
lineNumberBackgroundColor = forall a. Maybe a
Nothing
  }

-- | Style based on ultraviolet's espresso_libre.css (dark background).
espresso :: Style
espresso :: Style
espresso = Style{
    backgroundColor :: Maybe Color
backgroundColor = Int -> Maybe Color
color Int
0x2A211C
  , defaultColor :: Maybe Color
defaultColor = Int -> Maybe Color
color Int
0xBDAE9D
  , lineNumberColor :: Maybe Color
lineNumberColor = Int -> Maybe Color
color Int
0xBDAE9D
  , lineNumberBackgroundColor :: Maybe Color
lineNumberBackgroundColor = Int -> Maybe Color
color Int
0x2A211C
  , tokenStyles :: Map TokenType TokenStyle
tokenStyles = forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
    [ (TokenType
KeywordTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x43A8ED, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
DataTypeTok, TokenStyle
defStyle{ tokenUnderline :: Bool
tokenUnderline = Bool
True })
    , (TokenType
DecValTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x44AA43 })
    , (TokenType
BaseNTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x44AA43 })
    , (TokenType
FloatTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x44AA43 })
    , (TokenType
CharTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x049B0A })
    , (TokenType
StringTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x049B0A })
    , (TokenType
CommentTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x0066FF, tokenItalic :: Bool
tokenItalic = Bool
True })
    , (TokenType
AlertTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xffff00 })
    , (TokenType
FunctionTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xFF9358, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
ErrorTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xffff00, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
WarningTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xffff00, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
ConstantTok, TokenStyle
defStyle)
    , (TokenType
SpecialCharTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x049B0A })
    , (TokenType
VerbatimStringTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x049B0A })
    , (TokenType
SpecialStringTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x049B0A })
    , (TokenType
ImportTok, TokenStyle
defStyle)
    , (TokenType
VariableTok, TokenStyle
defStyle)
    , (TokenType
ControlFlowTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x43A8ED, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
OperatorTok, TokenStyle
defStyle)
    , (TokenType
BuiltInTok, TokenStyle
defStyle)
    , (TokenType
ExtensionTok, TokenStyle
defStyle)
    , (TokenType
PreprocessorTok, TokenStyle
defStyle{ tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
AttributeTok, TokenStyle
defStyle)
    , (TokenType
DocumentationTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x0066FF, tokenItalic :: Bool
tokenItalic = Bool
True })
    , (TokenType
AnnotationTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x0066FF, tokenItalic :: Bool
tokenItalic = Bool
True, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
CommentTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x0066FF, tokenItalic :: Bool
tokenItalic = Bool
True, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
InformationTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x0066FF, tokenItalic :: Bool
tokenItalic = Bool
True, tokenBold :: Bool
tokenBold = Bool
True })
    ]
  }

-- | Style based on haddock's source highlighting.
haddock :: Style
haddock :: Style
haddock = Style{
    backgroundColor :: Maybe Color
backgroundColor = forall a. Maybe a
Nothing
  , defaultColor :: Maybe Color
defaultColor = forall a. Maybe a
Nothing
  , lineNumberColor :: Maybe Color
lineNumberColor = Int -> Maybe Color
color Int
0xaaaaaa
  , lineNumberBackgroundColor :: Maybe Color
lineNumberBackgroundColor = forall a. Maybe a
Nothing
  , tokenStyles :: Map TokenType TokenStyle
tokenStyles = forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
    [ (TokenType
KeywordTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x0000FF })
    , (TokenType
CharTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x008080 })
    , (TokenType
StringTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x008080 })
    , (TokenType
CommentTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x008000 })
    , (TokenType
OtherTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xff4000 })
    , (TokenType
AlertTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xff0000 })
    , (TokenType
ErrorTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xff0000, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
WarningTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x008000, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
ConstantTok, TokenStyle
defStyle)
    , (TokenType
SpecialCharTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x008080 })
    , (TokenType
VerbatimStringTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x008080 })
    , (TokenType
SpecialStringTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x008080 })
    , (TokenType
ImportTok, TokenStyle
defStyle)
    , (TokenType
VariableTok, TokenStyle
defStyle)
    , (TokenType
ControlFlowTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x0000FF })
    , (TokenType
OperatorTok, TokenStyle
defStyle)
    , (TokenType
BuiltInTok, TokenStyle
defStyle)
    , (TokenType
ExtensionTok, TokenStyle
defStyle)
    , (TokenType
PreprocessorTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xff4000 })
    , (TokenType
DocumentationTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x008000 })
    , (TokenType
AnnotationTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x008000 })
    , (TokenType
CommentVarTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x008000 })
    , (TokenType
AttributeTok, TokenStyle
defStyle)
    , (TokenType
InformationTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x008000 })
    ]
  }

-- | Style with no colors.
monochrome :: Style
monochrome :: Style
monochrome = Style{
    backgroundColor :: Maybe Color
backgroundColor = forall a. Maybe a
Nothing
  , defaultColor :: Maybe Color
defaultColor = forall a. Maybe a
Nothing
  , lineNumberColor :: Maybe Color
lineNumberColor = forall a. Maybe a
Nothing
  , lineNumberBackgroundColor :: Maybe Color
lineNumberBackgroundColor = forall a. Maybe a
Nothing
  , tokenStyles :: Map TokenType TokenStyle
tokenStyles = forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
    [ (TokenType
KeywordTok, TokenStyle
defStyle{ tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
DataTypeTok, TokenStyle
defStyle{ tokenUnderline :: Bool
tokenUnderline = Bool
True })
    , (TokenType
CommentTok, TokenStyle
defStyle{ tokenItalic :: Bool
tokenItalic = Bool
True })
    , (TokenType
AlertTok, TokenStyle
defStyle{ tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
ErrorTok, TokenStyle
defStyle{ tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
WarningTok, TokenStyle
defStyle{ tokenItalic :: Bool
tokenItalic = Bool
True })
    , (TokenType
ControlFlowTok, TokenStyle
defStyle{ tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
PreprocessorTok, TokenStyle
defStyle{ tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
DocumentationTok, TokenStyle
defStyle{ tokenItalic :: Bool
tokenItalic = Bool
True })
    , (TokenType
AnnotationTok, TokenStyle
defStyle{ tokenItalic :: Bool
tokenItalic = Bool
True })
    , (TokenType
CommentVarTok, TokenStyle
defStyle{ tokenItalic :: Bool
tokenItalic = Bool
True })
    , (TokenType
InformationTok, TokenStyle
defStyle{ tokenItalic :: Bool
tokenItalic = Bool
True })
    ]
  }

-- | Style based on the popular zenburn vim color scheme
zenburn :: Style
zenburn :: Style
zenburn = Style{
    backgroundColor :: Maybe Color
backgroundColor = Int -> Maybe Color
color Int
0x303030
  , defaultColor :: Maybe Color
defaultColor = Int -> Maybe Color
color Int
0xcccccc
  , lineNumberColor :: Maybe Color
lineNumberColor = forall a. Maybe a
Nothing
  , lineNumberBackgroundColor :: Maybe Color
lineNumberBackgroundColor = forall a. Maybe a
Nothing
  , tokenStyles :: Map TokenType TokenStyle
tokenStyles = forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList
    [ (TokenType
KeywordTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xf0dfaf })
    , (TokenType
DataTypeTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xdfdfbf })
    , (TokenType
DecValTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xdcdccc })
    , (TokenType
BaseNTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xdca3a3 })
    , (TokenType
FloatTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xc0bed1 })
    , (TokenType
CharTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xdca3a3 })
    , (TokenType
StringTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xcc9393 })
    , (TokenType
CommentTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x7f9f7f })
    , (TokenType
OtherTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xefef8f })
    , (TokenType
AlertTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xffcfaf })
    , (TokenType
FunctionTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xefef8f })
    , (TokenType
ErrorTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xc3bf9f })
    , (TokenType
WarningTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x7f9f7f, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
ConstantTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xdca3a3, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
SpecialCharTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xdca3a3 })
    , (TokenType
VerbatimStringTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xcc9393 })
    , (TokenType
SpecialStringTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xcc9393 })
    , (TokenType
ImportTok, TokenStyle
defStyle)
    , (TokenType
VariableTok, TokenStyle
defStyle)
    , (TokenType
ControlFlowTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xf0dfaf })
    , (TokenType
OperatorTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xf0efd0 })
    , (TokenType
BuiltInTok, TokenStyle
defStyle)
    , (TokenType
ExtensionTok, TokenStyle
defStyle)
    , (TokenType
PreprocessorTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0xffcfaf, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
AttributeTok, TokenStyle
defStyle)
    , (TokenType
DocumentationTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x7f9f7f })
    , (TokenType
AnnotationTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x7f9f7f, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
CommentVarTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x7f9f7f, tokenBold :: Bool
tokenBold = Bool
True })
    , (TokenType
InformationTok, TokenStyle
defStyle{ tokenColor :: Maybe Color
tokenColor = Int -> Maybe Color
color Int
0x7f9f7f, tokenBold :: Bool
tokenBold = Bool
True })
    ]
  }