diff options
Diffstat (limited to 'src/WWW/Colors/QQ.hs')
| -rw-r--r-- | src/WWW/Colors/QQ.hs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/WWW/Colors/QQ.hs b/src/WWW/Colors/QQ.hs new file mode 100644 index 0000000..4a03dbb --- /dev/null +++ b/src/WWW/Colors/QQ.hs @@ -0,0 +1,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" |
