{-# LANGUAGE NoImplicitPrelude #-}
module Fmt.Operators
( (<//>)
, (</>)
, (<+>)
, (<$>)
, (<$$>)
) where
import Universum ((<>))
import Fmt.Utils (Doc, linebreak, softbreak)
import Prettyprinter (line, softline, space)
import Prettyprinter.Internal (pattern Empty)
(<+>), (<$>), (</>), (<$$>), (<//>) :: Doc -> Doc -> Doc
Doc
Empty <+> :: Doc -> Doc -> Doc
<+> Doc
y = Doc
y
Doc
x <+> Doc
Empty = Doc
x
Doc
x <+> Doc
y = Doc
x Doc -> Doc -> Doc
forall a. Semigroup a => a -> a -> a
<> Doc
forall ann. Doc ann
space Doc -> Doc -> Doc
forall a. Semigroup a => a -> a -> a
<> Doc
y
infixr 6 <+>
Doc
x <$> :: Doc -> Doc -> Doc
<$> Doc
Empty = Doc
x
Doc
Empty <$> Doc
y = Doc
y
Doc
x <$> Doc
y = Doc
x Doc -> Doc -> Doc
forall a. Semigroup a => a -> a -> a
<> Doc
forall ann. Doc ann
line Doc -> Doc -> Doc
forall a. Semigroup a => a -> a -> a
<> Doc
y
Doc
x </> :: Doc -> Doc -> Doc
</> Doc
Empty = Doc
x
Doc
Empty </> Doc
y = Doc
y
Doc
x </> Doc
y = Doc
x Doc -> Doc -> Doc
forall a. Semigroup a => a -> a -> a
<> Doc
forall ann. Doc ann
softline Doc -> Doc -> Doc
forall a. Semigroup a => a -> a -> a
<> Doc
y
Doc
x <$$> :: Doc -> Doc -> Doc
<$$> Doc
Empty = Doc
x
Doc
Empty <$$> Doc
y = Doc
y
Doc
x <$$> Doc
y = Doc
x Doc -> Doc -> Doc
forall a. Semigroup a => a -> a -> a
<> Doc
linebreak Doc -> Doc -> Doc
forall a. Semigroup a => a -> a -> a
<> Doc
y
Doc
x <//> :: Doc -> Doc -> Doc
<//> Doc
Empty = Doc
x
Doc
Empty <//> Doc
y = Doc
y
Doc
x <//> Doc
y = Doc
x Doc -> Doc -> Doc
forall a. Semigroup a => a -> a -> a
<> Doc
softbreak Doc -> Doc -> Doc
forall a. Semigroup a => a -> a -> a
<> Doc
y
infixr 5 </>,<//>,<$>,<$$>