packages feed

baskell-0.1: src/Pretty.hs

{-------------------------------------------------------------------------------

        Copyright:              Bernie Pope 2007

        Module:                 Pretty

        Description:            Utilities that support pretty printing. 

        Primary Authors:        Bernie Pope

-------------------------------------------------------------------------------}

{-
    This file is part of baskell.

    baskell is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    baskell is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with baskell; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-}

module Pretty
   ( module HughesPJ
   , module Pretty
   )
   where


import Text.PrettyPrint.HughesPJ as HughesPJ

--------------------------------------------------------------------------------

prettyText :: Pretty a => a -> String
prettyText = render . pretty

class Pretty a where
   pretty :: a -> Doc
   pretty x = text "Pretty not implemented"

instance Pretty Int where
  pretty = int

instance Pretty Char where
  pretty = char 

-- conditionally wrap parentheses around a document
parensIf :: Bool -> Doc -> Doc
parensIf test doc
   = if test then parens doc else doc