module Language.Egison.Pretty.Pattern.PrintMode
( ExtPrinter
, PrintFixity(..)
, PrintMode(..)
, PageMode(..)
, Fixity(..)
)
where
import Data.Text ( Text )
import Language.Egison.Syntax.Pattern.Fixity
( Fixity(..) )
type ExtPrinter a = a -> Text
data PrintFixity n =
PrintFixity { forall n. PrintFixity n -> Fixity n
fixity :: Fixity n
, forall n. PrintFixity n -> Text
printed :: Text
}
data PageMode =
PageMode { PageMode -> Int
lineLength :: Int
, PageMode -> Double
ribbonsPerLine :: Double
}
data PrintMode n v e
= PrintMode { forall n v e. PrintMode n v e -> [PrintFixity n]
fixities :: [PrintFixity n]
, forall n v e. PrintMode n v e -> ExtPrinter v
varNamePrinter :: ExtPrinter v
, forall n v e. PrintMode n v e -> ExtPrinter n
namePrinter :: ExtPrinter n
, forall n v e. PrintMode n v e -> ExtPrinter e
valueExprPrinter :: ExtPrinter e
, forall n v e. PrintMode n v e -> Maybe PageMode
pageMode :: Maybe PageMode
}