module Disco.Report where
import Data.List (intersperse)
data Report
= RTxt String
| RSeq [Report]
| RVSeq [Report]
| RList [Report]
| RNest Report
deriving (Int -> Report -> ShowS
[Report] -> ShowS
Report -> String
(Int -> Report -> ShowS)
-> (Report -> String) -> ([Report] -> ShowS) -> Show Report
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Report] -> ShowS
$cshowList :: [Report] -> ShowS
show :: Report -> String
$cshow :: Report -> String
showsPrec :: Int -> Report -> ShowS
$cshowsPrec :: Int -> Report -> ShowS
Show)
text :: String -> Report
text :: String -> Report
text = String -> Report
RTxt
hcat :: [Report] -> Report
hcat :: [Report] -> Report
hcat = [Report] -> Report
RSeq
hsep :: [Report] -> Report
hsep :: [Report] -> Report
hsep = [Report] -> Report
hcat ([Report] -> Report)
-> ([Report] -> [Report]) -> [Report] -> Report
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Report -> [Report] -> [Report]
forall a. a -> [a] -> [a]
intersperse (String -> Report
text String
" ")
vcat :: [Report] -> Report
vcat :: [Report] -> Report
vcat = [Report] -> Report
RVSeq
vsep :: [Report] -> Report
vsep :: [Report] -> Report
vsep = [Report] -> Report
vcat ([Report] -> Report)
-> ([Report] -> [Report]) -> [Report] -> Report
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Report -> [Report] -> [Report]
forall a. a -> [a] -> [a]
intersperse (String -> Report
text String
"")
list :: [Report] -> Report
list :: [Report] -> Report
list = [Report] -> Report
RList
nest :: Report -> Report
nest :: Report -> Report
nest = Report -> Report
RNest