From 6f4b09bb0ad6fe814f5cf39299f31b9d92f70b89 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Tue, 16 Apr 2019 15:51:03 +0200 Subject: [PATCH] Instances for Html --- src/Import/NoFoundation.hs | 2 ++ src/Text/Blaze/Instances.hs | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 src/Text/Blaze/Instances.hs diff --git a/src/Import/NoFoundation.hs b/src/Import/NoFoundation.hs index 74f6f10bd..767067ba1 100644 --- a/src/Import/NoFoundation.hs +++ b/src/Import/NoFoundation.hs @@ -69,6 +69,8 @@ import Numeric.Natural.Instances as Import () import System.Random as Import (Random) import Control.Monad.Random.Class as Import (MonadRandom(..)) +import Text.Blaze.Instances as Import () + import Control.Monad.Trans.RWS (RWST) diff --git a/src/Text/Blaze/Instances.hs b/src/Text/Blaze/Instances.hs new file mode 100644 index 000000000..346b17c60 --- /dev/null +++ b/src/Text/Blaze/Instances.hs @@ -0,0 +1,37 @@ +{-# OPTIONS_GHC -fno-warn-orphans #-} + +module Text.Blaze.Instances + ( + ) where + +import ClassyPrelude +import Text.Blaze +import qualified Text.Blaze.Renderer.Text as Text + +import Text.Read (Read(..)) + +import Data.Hashable (Hashable(..)) +import Data.Aeson (ToJSON(..), FromJSON(..)) +import qualified Data.Aeson as Aeson + + +instance Eq Markup where + (==) = (==) `on` Text.renderMarkup + +instance Ord Markup where + compare = comparing Text.renderMarkup + +instance Read Markup where + readPrec = preEscapedLazyText <$> readPrec + +instance Show Markup where + showsPrec prec = showsPrec prec . Text.renderMarkup + +instance Hashable Markup where + hashWithSalt s = hashWithSalt s . Text.renderMarkup + +instance ToJSON Markup where + toJSON = Aeson.String . toStrict . Text.renderMarkup + +instance FromJSON Markup where + parseJSON = Aeson.withText "Html" $ return . preEscapedText