{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module OM.Show (
showt,
showj,
ShowJ(..),
) where
import Data.Aeson (encode, ToJSON)
import Data.String (IsString, fromString)
import qualified Data.Text.Lazy as TL
import qualified Data.Text.Lazy.Encoding as TLE
showt :: (Show a, IsString b) => a -> b
showt :: forall a b. (Show a, IsString b) => a -> b
showt = String -> b
forall a. IsString a => String -> a
fromString (String -> b) -> (a -> String) -> a -> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> String
forall a. Show a => a -> String
show
showj :: (ToJSON a, IsString b) => a -> b
showj :: forall a b. (ToJSON a, IsString b) => a -> b
showj = String -> b
forall a. IsString a => String -> a
fromString (String -> b) -> (a -> String) -> a -> b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
TL.unpack (Text -> String) -> (a -> Text) -> a -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Text
TLE.decodeUtf8 (ByteString -> Text) -> (a -> ByteString) -> a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> ByteString
forall a. ToJSON a => a -> ByteString
encode
newtype ShowJ a = ShowJ a
deriving stock (ShowJ a -> ShowJ a -> Bool
(ShowJ a -> ShowJ a -> Bool)
-> (ShowJ a -> ShowJ a -> Bool) -> Eq (ShowJ a)
forall a. Eq a => ShowJ a -> ShowJ a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => ShowJ a -> ShowJ a -> Bool
== :: ShowJ a -> ShowJ a -> Bool
$c/= :: forall a. Eq a => ShowJ a -> ShowJ a -> Bool
/= :: ShowJ a -> ShowJ a -> Bool
Eq, Eq (ShowJ a)
Eq (ShowJ a) =>
(ShowJ a -> ShowJ a -> Ordering)
-> (ShowJ a -> ShowJ a -> Bool)
-> (ShowJ a -> ShowJ a -> Bool)
-> (ShowJ a -> ShowJ a -> Bool)
-> (ShowJ a -> ShowJ a -> Bool)
-> (ShowJ a -> ShowJ a -> ShowJ a)
-> (ShowJ a -> ShowJ a -> ShowJ a)
-> Ord (ShowJ a)
ShowJ a -> ShowJ a -> Bool
ShowJ a -> ShowJ a -> Ordering
ShowJ a -> ShowJ a -> ShowJ a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (ShowJ a)
forall a. Ord a => ShowJ a -> ShowJ a -> Bool
forall a. Ord a => ShowJ a -> ShowJ a -> Ordering
forall a. Ord a => ShowJ a -> ShowJ a -> ShowJ a
$ccompare :: forall a. Ord a => ShowJ a -> ShowJ a -> Ordering
compare :: ShowJ a -> ShowJ a -> Ordering
$c< :: forall a. Ord a => ShowJ a -> ShowJ a -> Bool
< :: ShowJ a -> ShowJ a -> Bool
$c<= :: forall a. Ord a => ShowJ a -> ShowJ a -> Bool
<= :: ShowJ a -> ShowJ a -> Bool
$c> :: forall a. Ord a => ShowJ a -> ShowJ a -> Bool
> :: ShowJ a -> ShowJ a -> Bool
$c>= :: forall a. Ord a => ShowJ a -> ShowJ a -> Bool
>= :: ShowJ a -> ShowJ a -> Bool
$cmax :: forall a. Ord a => ShowJ a -> ShowJ a -> ShowJ a
max :: ShowJ a -> ShowJ a -> ShowJ a
$cmin :: forall a. Ord a => ShowJ a -> ShowJ a -> ShowJ a
min :: ShowJ a -> ShowJ a -> ShowJ a
Ord)
deriving newtype ([ShowJ a] -> Value
[ShowJ a] -> Encoding
ShowJ a -> Bool
ShowJ a -> Value
ShowJ a -> Encoding
(ShowJ a -> Value)
-> (ShowJ a -> Encoding)
-> ([ShowJ a] -> Value)
-> ([ShowJ a] -> Encoding)
-> (ShowJ a -> Bool)
-> ToJSON (ShowJ a)
forall a. ToJSON a => [ShowJ a] -> Value
forall a. ToJSON a => [ShowJ a] -> Encoding
forall a. ToJSON a => ShowJ a -> Bool
forall a. ToJSON a => ShowJ a -> Value
forall a. ToJSON a => ShowJ a -> Encoding
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: forall a. ToJSON a => ShowJ a -> Value
toJSON :: ShowJ a -> Value
$ctoEncoding :: forall a. ToJSON a => ShowJ a -> Encoding
toEncoding :: ShowJ a -> Encoding
$ctoJSONList :: forall a. ToJSON a => [ShowJ a] -> Value
toJSONList :: [ShowJ a] -> Value
$ctoEncodingList :: forall a. ToJSON a => [ShowJ a] -> Encoding
toEncodingList :: [ShowJ a] -> Encoding
$comitField :: forall a. ToJSON a => ShowJ a -> Bool
omitField :: ShowJ a -> Bool
ToJSON)
instance (ToJSON a) => Show (ShowJ a) where
show :: ShowJ a -> String
show = ShowJ a -> String
forall a b. (ToJSON a, IsString b) => a -> b
showj