blob: 4a03dbb6aa9b9163fda075f0cfcf707036606238 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
{-# LANGUAGE TemplateHaskell #-}
module WWW.Colors.QQ
( hex
) where
-- import Data.Colour
-- import Data.Colour.SRGB
import Control.Monad ((>=>))
import Diagrams.Backend.CmdLine (readHexColor)
import Language.Haskell.TH.Quote
-- | QuasiQuoter which reads in a hex color code and ouputs a 'AlphaColour Double'.
hex :: QuasiQuoter
hex = QuasiQuoter
{ quoteExp = readHexColor >=> \x -> x `seq` pure [|x|]
, quotePat = failure "quotePat"
, quoteType = failure "quoteType"
, quoteDec = failure "quoteDec"
} where
failure s = const $ fail $ "No " <> s <> " defined for the hexcolor quasiquoter."
-- readit = sRGB24reads :: ReadS (Colour Double)
-- parseit s =
-- case readit s of
-- [(x,[])] -> x `seq` [|x|]
-- _ -> fail $ "Can't understand " <> s <> " as a valid hex color"
|