packages feed

ddc-tools-0.4.1.1: src/ddci-tetra/DDCI/Tetra/Mode.hs

module DDCI.Tetra.Mode
        ( Mode (..)
        , readMode)
where


-- | ddci-tetra mode flags.
data Mode
        -- | Dump all intermediate versions of the code during compilation.
        = Dump

        -- Pretty Printer Config ------
        -- There is one mode here for each field in Driver.Config.ConfigPretty

        -- | Use 'letcase' when pretty printing core modules.
        |  PrettyUseLetCase

        -- | Display types on primitive variables.
        |  PrettyVarTypes

        -- | Display types on primitive constructors.
        |  PrettyConTypes

        -- | Suppress import lists when printing modules.
        |  SuppressImports

        -- | Suppress export lists when printing modules.
        |  SuppressExports

        -- | Suppress type annotations on let-bindings.
        |  SuppressLetTypes

        deriving (Eq, Ord, Show)


-- Parse a mode from a string.
readMode :: String -> Maybe Mode
readMode str
 = case str of
        "Dump"                  -> Just Dump
        "PrettyUseLetCase"      -> Just PrettyUseLetCase
        "PrettyVarTypes"        -> Just PrettyVarTypes
        "PrettyConTypes"        -> Just PrettyConTypes
        "SuppressImports"       -> Just SuppressImports
        "SuppressExports"       -> Just SuppressExports
        "SuppressLetTypes"      -> Just SuppressLetTypes
        _                       -> Nothing