uu-cco-0.1.0.0: src/CCO/Printing/Doc.hs
-------------------------------------------------------------------------------
-- |
-- Module : CCO.Printing.Rendering
-- Copyright : (c) 2008 Utrecht University
-- License : All rights reserved
--
-- Maintainer : stefan@cs.uu.nl
-- Stability : provisional
-- Portability : portable
--
-- Type of pretty-printable documents.
--
-------------------------------------------------------------------------------
module CCO.Printing.Doc (
-- * Type of pretty-printable documents
Doc (..)
, isEmpty -- :: Doc -> Bool
) where
import CCO.Printing.Colour (Colour)
-------------------------------------------------------------------------------
-- Type of pretty-printable documents
-------------------------------------------------------------------------------
-- | The type of documents.
data Doc = Empty -- ^ The empty document.
| Text String -- ^ A text.
| Wrapped String -- ^ A wrapped text.
| Indent Int Doc -- ^ A document indented by a give amount of
-- horizontal space.
| Above Doc Doc -- ^ One document on top of another document.
| Besides Doc Doc -- ^ Two \"dovetailed\" documents.
| Split Doc Doc -- ^ Introduces parallel renderings.
| Join Doc -- ^ Joins all parallel renderings into one
-- rendering.
| Colour Colour Doc -- ^ A document printed in a specified colour.
-- | Indicates whether a document is empty.
isEmpty :: Doc -> Bool
isEmpty Empty = True
isEmpty _ = False