{-|
Description : Overall configuration
-}
module Language.Haskell.Formatter.Configuration
       (Configuration, configurationStyle, configurationStreamName,
        defaultConfiguration, check)
       where
import qualified Language.Haskell.Formatter.Result as Result
import qualified Language.Haskell.Formatter.Source as Source
import qualified Language.Haskell.Formatter.Style as Style
import qualified Language.Haskell.Formatter.Toolkit.StreamName as StreamName

data Configuration = Configuration{Configuration -> Style
configurationStyle :: Style.Style,
                                   Configuration -> StreamName
configurationStreamName ::
                                   StreamName.StreamName}
                       deriving (Configuration -> Configuration -> Bool
(Configuration -> Configuration -> Bool)
-> (Configuration -> Configuration -> Bool) -> Eq Configuration
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Configuration -> Configuration -> Bool
$c/= :: Configuration -> Configuration -> Bool
== :: Configuration -> Configuration -> Bool
$c== :: Configuration -> Configuration -> Bool
Eq, Eq Configuration
Eq Configuration
-> (Configuration -> Configuration -> Ordering)
-> (Configuration -> Configuration -> Bool)
-> (Configuration -> Configuration -> Bool)
-> (Configuration -> Configuration -> Bool)
-> (Configuration -> Configuration -> Bool)
-> (Configuration -> Configuration -> Configuration)
-> (Configuration -> Configuration -> Configuration)
-> Ord Configuration
Configuration -> Configuration -> Bool
Configuration -> Configuration -> Ordering
Configuration -> Configuration -> Configuration
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Configuration -> Configuration -> Configuration
$cmin :: Configuration -> Configuration -> Configuration
max :: Configuration -> Configuration -> Configuration
$cmax :: Configuration -> Configuration -> Configuration
>= :: Configuration -> Configuration -> Bool
$c>= :: Configuration -> Configuration -> Bool
> :: Configuration -> Configuration -> Bool
$c> :: Configuration -> Configuration -> Bool
<= :: Configuration -> Configuration -> Bool
$c<= :: Configuration -> Configuration -> Bool
< :: Configuration -> Configuration -> Bool
$c< :: Configuration -> Configuration -> Bool
compare :: Configuration -> Configuration -> Ordering
$ccompare :: Configuration -> Configuration -> Ordering
$cp1Ord :: Eq Configuration
Ord, Int -> Configuration -> ShowS
[Configuration] -> ShowS
Configuration -> String
(Int -> Configuration -> ShowS)
-> (Configuration -> String)
-> ([Configuration] -> ShowS)
-> Show Configuration
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Configuration] -> ShowS
$cshowList :: [Configuration] -> ShowS
show :: Configuration -> String
$cshow :: Configuration -> String
showsPrec :: Int -> Configuration -> ShowS
$cshowsPrec :: Int -> Configuration -> ShowS
Show)

defaultConfiguration :: Configuration
defaultConfiguration :: Configuration
defaultConfiguration
  = Configuration :: Style -> StreamName -> Configuration
Configuration{configurationStyle :: Style
configurationStyle = Style
Style.defaultStyle,
                  configurationStreamName :: StreamName
configurationStreamName = StreamName
stream}
  where stream :: StreamName
stream = String -> StreamName
StreamName.createStreamName String
filename
        filename :: String
filename = ParseMode -> String
Source.parseFilename ParseMode
Source.defaultParseMode

check :: Configuration -> Result.Result ()
check :: Configuration -> Result ()
check = Style -> Result ()
Style.check (Style -> Result ())
-> (Configuration -> Style) -> Configuration -> Result ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Configuration -> Style
configurationStyle