apiary-1.3.0: src/Web/Apiary/TH.hs
{-# LANGUAGE TemplateHaskell #-}
module Web.Apiary.TH(key) where
import Data.Apiary.Compat(SProxy(..))
import Language.Haskell.TH.Quote (QuasiQuoter(..))
import qualified Language.Haskell.TH as TH
-- | construct string literal proxy.
--
-- prop> [key|foo|] == (Proxy :: Proxy "foo")
--
key :: QuasiQuoter
key = QuasiQuoter
{ quoteExp = \s -> [| SProxy :: SProxy $(TH.litT $ TH.strTyLit s) |]
, quotePat = error "key qq only exp or type."
, quoteType = \s -> [t| SProxy $(TH.litT $ TH.strTyLit s) |]
, quoteDec = error "key qq only exp or type."
}