module HaskellWorks.Data.Json.Internal.Doc
  ( hEncloseSep
  ) where

import Text.PrettyPrint.ANSI.Leijen

hEncloseSep :: Doc -> Doc -> Doc -> [Doc] -> Doc
hEncloseSep :: Doc -> Doc -> Doc -> [Doc] -> Doc
hEncloseSep Doc
l Doc
r Doc
s [Doc]
ds = case [Doc]
ds of
  []  -> Doc
l forall a. Semigroup a => a -> a -> a
<> Doc
r
  [Doc
d] -> Doc
l forall a. Semigroup a => a -> a -> a
<> Doc
d forall a. Semigroup a => a -> a -> a
<> Doc
r
  [Doc]
_   -> [Doc] -> Doc
hcat (forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith forall a. Semigroup a => a -> a -> a
(<>) (Doc
l forall a. a -> [a] -> [a]
: forall a. a -> [a]
repeat Doc
s) [Doc]
ds) forall a. Semigroup a => a -> a -> a
<> Doc
r