module HIndent.Pretty.Combinators.Wrap
( parens
, parensIfSymbol
, bananaBrackets
, braces
, doubleQuotes
, brackets
, typedBrackets
, backticks
, backticksIfNotSymbol
, wrapWithBars
, promotedListBrackets
, promotedTupleParens
, unboxedParens
) where
import GHC.Types.Name
import HIndent.Pretty.Combinators.Indent
import HIndent.Pretty.Combinators.String
import HIndent.Printer
parens :: Printer a -> Printer a
parens :: forall a. Printer a -> Printer a
parens = String -> String -> Printer a -> Printer a
forall a. String -> String -> Printer a -> Printer a
wrap String
"(" String
")"
parensIfSymbol :: OccName -> Printer a -> Printer a
parensIfSymbol :: forall a. OccName -> Printer a -> Printer a
parensIfSymbol OccName
name
| OccName -> Bool
isSymOcc OccName
name = Printer a -> Printer a
forall a. Printer a -> Printer a
parens
| Bool
otherwise = Printer a -> Printer a
forall a. a -> a
id
bananaBrackets :: Printer a -> Printer a
bananaBrackets :: forall a. Printer a -> Printer a
bananaBrackets = String -> String -> Printer a -> Printer a
forall a. String -> String -> Printer a -> Printer a
wrap String
"(|" String
"|)"
braces :: Printer a -> Printer a
braces :: forall a. Printer a -> Printer a
braces = String -> String -> Printer a -> Printer a
forall a. String -> String -> Printer a -> Printer a
wrap String
"{" String
"}"
brackets :: Printer a -> Printer a
brackets :: forall a. Printer a -> Printer a
brackets = String -> String -> Printer a -> Printer a
forall a. String -> String -> Printer a -> Printer a
wrap String
"[" String
"]"
typedBrackets :: Printer a -> Printer a
typedBrackets :: forall a. Printer a -> Printer a
typedBrackets = String -> String -> Printer a -> Printer a
forall a. String -> String -> Printer a -> Printer a
wrap String
"[||" String
"||]"
doubleQuotes :: Printer a -> Printer a
doubleQuotes :: forall a. Printer a -> Printer a
doubleQuotes = String -> String -> Printer a -> Printer a
forall a. String -> String -> Printer a -> Printer a
wrap String
"\"" String
"\""
backticks :: Printer a -> Printer a
backticks :: forall a. Printer a -> Printer a
backticks = String -> String -> Printer a -> Printer a
forall a. String -> String -> Printer a -> Printer a
wrap String
"`" String
"`"
backticksIfNotSymbol :: OccName -> Printer a -> Printer a
backticksIfNotSymbol :: forall a. OccName -> Printer a -> Printer a
backticksIfNotSymbol OccName
name
| OccName -> Bool
isSymOcc OccName
name = Printer a -> Printer a
forall a. a -> a
id
| Bool
otherwise = Printer a -> Printer a
forall a. Printer a -> Printer a
backticks
wrapWithBars :: Printer a -> Printer a
wrapWithBars :: forall a. Printer a -> Printer a
wrapWithBars = String -> String -> Printer a -> Printer a
forall a. String -> String -> Printer a -> Printer a
wrap String
"|" String
"|"
promotedListBrackets :: Printer a -> Printer a
promotedListBrackets :: forall a. Printer a -> Printer a
promotedListBrackets = String -> String -> Printer a -> Printer a
forall a. String -> String -> Printer a -> Printer a
wrap String
"'[ " String
"]"
promotedTupleParens :: Printer a -> Printer a
promotedTupleParens :: forall a. Printer a -> Printer a
promotedTupleParens = String -> String -> Printer a -> Printer a
forall a. String -> String -> Printer a -> Printer a
wrap String
"'( " String
")"
unboxedParens :: Printer a -> Printer a
unboxedParens :: forall a. Printer a -> Printer a
unboxedParens = String -> String -> Printer a -> Printer a
forall a. String -> String -> Printer a -> Printer a
wrap String
"(# " String
" #)"
wrap :: String -> String -> Printer a -> Printer a
wrap :: forall a. String -> String -> Printer a -> Printer a
wrap String
open String
close Printer a
p = HasCallStack => String -> Printer ()
String -> Printer ()
string String
open Printer () -> Printer a -> Printer a
forall a. Printer () -> Printer a -> Printer a
|=> Printer a
p Printer a -> Printer () -> Printer a
forall a b. Printer a -> Printer b -> Printer a
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a
<* HasCallStack => String -> Printer ()
String -> Printer ()
string String
close