purescript-0.15.15: src/Language/PureScript/Publish/BoxesHelpers.hs
module Language.PureScript.Publish.BoxesHelpers
( Boxes.Box
, Boxes.nullBox
, module Language.PureScript.Publish.BoxesHelpers
) where
import Prelude
import Data.Text (Text)
import Data.Text qualified as T
import System.IO (hPutStr, stderr)
import Text.PrettyPrint.Boxes qualified as Boxes
width :: Int
width = 79
indentWidth :: Int
indentWidth = 2
para :: String -> Boxes.Box
para = Boxes.para Boxes.left width
indented :: Boxes.Box -> Boxes.Box
indented b = Boxes.hcat Boxes.left [Boxes.emptyBox 1 indentWidth, b]
successivelyIndented :: [String] -> Boxes.Box
successivelyIndented [] =
Boxes.nullBox
successivelyIndented (x:xs) =
Boxes.vcat Boxes.left [para x, indented (successivelyIndented xs)]
vcat :: [Boxes.Box] -> Boxes.Box
vcat = Boxes.vcat Boxes.left
spacer :: Boxes.Box
spacer = Boxes.emptyBox 1 1
bulletedList :: (a -> String) -> [a] -> [Boxes.Box]
bulletedList f = map (indented . para . ("* " ++) . f)
bulletedListT :: (a -> Text) -> [a] -> [Boxes.Box]
bulletedListT f = bulletedList (T.unpack . f)
printToStderr :: Boxes.Box -> IO ()
printToStderr = hPutStr stderr . Boxes.render