module PrettyDoc where
import TokenTags
data Layout = Horiz Sep | Vert | HorizOrVert Sep | Fill Sep deriving (Show)
data Sep = Cat | Sep deriving (Show)
nonEmpty Empty = False
nonEmpty d = True
data Doc
= Empty
| Char Char
| Text String
| Attr TokenTag Doc
| Nest Int Doc
| Group Layout [Doc]
deriving (Show)
{-
class Doc doc where
-- Required methods:
empty :: doc
text :: String->doc
nest :: Int->doc->doc
group :: Layout->[doc]->doc
-- Methods with default implementations:
char :: Char->doc
char c = text [c]
-}