{-# LANGUAGE LambdaCase, TemplateHaskell #-} module Data.Urn.QQ (urn) where import Language.Haskell.TH.Quote import Data.Urn.QQ.ParseExp urn :: QuasiQuoter urn = QuasiQuoter { quoteExp = either fail (pure . urnExp) . parseUrn , quotePat = unsupported "patterns" , quoteType = unsupported "types" , quoteDec = unsupported "declarations" } where unsupported what = fail $ "Literal urns are only supported in expressions, not " ++ what