module Test.Hspec.Core.Formatters.Pretty.Unicode (
  ushow
, ushows
) where

import           Prelude ()
import           Test.Hspec.Core.Compat

import           Data.Char

ushow :: String -> String
ushow :: String -> String
ushow String
xs = String -> String -> String
ushows String
xs String
""

ushows :: String -> ShowS
ushows :: String -> String -> String
ushows = String -> String -> String
uShowString

uShowString :: String -> ShowS
uShowString :: String -> String -> String
uShowString String
cs = Char -> String -> String
showChar Char
'"' (String -> String) -> (String -> String) -> String -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> String -> String
showLitString String
cs (String -> String) -> (String -> String) -> String -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> String -> String
showChar Char
'"'

showLitString :: String -> ShowS
showLitString :: String -> String -> String
showLitString []         String
s = String
s
showLitString (Char
'"' : String
cs) String
s = String -> String -> String
showString String
"\\\"" (String -> String -> String
showLitString String
cs String
s)
showLitString (Char
c   : String
cs) String
s = Char -> String -> String
uShowLitChar Char
c (String -> String -> String
showLitString String
cs String
s)

uShowLitChar :: Char -> ShowS
uShowLitChar :: Char -> String -> String
uShowLitChar Char
c
  | Char -> Bool
isPrint Char
c Bool -> Bool -> Bool
&& Bool -> Bool
not (Char -> Bool
isAscii Char
c) = Char -> String -> String
showChar Char
c
  | Bool
otherwise = Char -> String -> String
showLitChar Char
c