    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