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 { PrintFixity n -> Fixity n
fixity :: Fixity n
, PrintFixity n -> Text
printed :: Text
}
data PageMode =
PageMode { PageMode -> Int
lineLength :: Int
, PageMode -> Double
ribbonsPerLine :: Double
}
data PrintMode n v e
= PrintMode { PrintMode n v e -> [PrintFixity n]
fixities :: [PrintFixity n]
, PrintMode n v e -> ExtPrinter v
varNamePrinter :: ExtPrinter v
, PrintMode n v e -> ExtPrinter n
namePrinter :: ExtPrinter n
, PrintMode n v e -> ExtPrinter e
valueExprPrinter :: ExtPrinter e
, PrintMode n v e -> Maybe PageMode
pageMode :: Maybe PageMode
}