{-# LANGUAGE OverloadedStrings #-}
module Prettyprinter.Ext ( (<#>)
, (<##>)
, (<~>)
, prettyHex
, prettyLines
, sepDecls
) where
import Numeric (showHex)
import Prettyprinter
infixr 6 <#>
infixr 6 <##>
infixr 6 <~>
(<#>) :: Doc a -> Doc a -> Doc a
<#> :: Doc a -> Doc a -> Doc a
(<#>) Doc a
x Doc a
y = Doc a
x Doc a -> Doc a -> Doc a
forall a. Semigroup a => a -> a -> a
<> Doc a
forall ann. Doc ann
hardline Doc a -> Doc a -> Doc a
forall a. Semigroup a => a -> a -> a
<> Doc a
y
(<##>) :: Doc a -> Doc a -> Doc a
<##> :: Doc a -> Doc a -> Doc a
(<##>) Doc a
x Doc a
y = Doc a
x Doc a -> Doc a -> Doc a
forall a. Semigroup a => a -> a -> a
<> Doc a
forall ann. Doc ann
hardline Doc a -> Doc a -> Doc a
forall a. Semigroup a => a -> a -> a
<> Doc a
forall ann. Doc ann
hardline Doc a -> Doc a -> Doc a
forall a. Semigroup a => a -> a -> a
<> Doc a
y
(<~>) :: Doc a -> Doc a -> Doc a
<~> :: Doc a -> Doc a -> Doc a
(<~>) Doc a
x Doc a
y = Doc a
x Doc a -> Doc a -> Doc a
forall a. Semigroup a => a -> a -> a
<> Doc a
", " Doc a -> Doc a -> Doc a
forall a. Semigroup a => a -> a -> a
<> Doc a
y
prettyHex :: (Integral a, Show a) => a -> Doc ann
prettyHex :: a -> Doc ann
prettyHex a
x = Doc ann
"0x" Doc ann -> Doc ann -> Doc ann
forall a. Semigroup a => a -> a -> a
<> String -> Doc ann
forall a ann. Pretty a => a -> Doc ann
pretty (a -> ShowS
forall a. (Integral a, Show a) => a -> ShowS
showHex a
x String
forall a. Monoid a => a
mempty)
prettyLines :: [Doc ann] -> Doc ann
prettyLines :: [Doc ann] -> Doc ann
prettyLines = (Doc ann -> Doc ann -> Doc ann) -> [Doc ann] -> Doc ann
forall (t :: * -> *) ann.
Foldable t =>
(Doc ann -> Doc ann -> Doc ann) -> t (Doc ann) -> Doc ann
concatWith Doc ann -> Doc ann -> Doc ann
forall a. Doc a -> Doc a -> Doc a
(<#>)
sepDecls :: [Doc ann] -> Doc ann
sepDecls :: [Doc ann] -> Doc ann
sepDecls = (Doc ann -> Doc ann -> Doc ann) -> [Doc ann] -> Doc ann
forall (t :: * -> *) ann.
Foldable t =>
(Doc ann -> Doc ann -> Doc ann) -> t (Doc ann) -> Doc ann
concatWith Doc ann -> Doc ann -> Doc ann
forall a. Doc a -> Doc a -> Doc a
(<##>)