module Language.PureScript.Bridge.CodeGenSwitches
( Settings (..)
, ForeignOptions(..)
, defaultSettings
, purs_0_11_settings
, Switch
, getSettings
, defaultSwitch
, noLenses, genLenses
, useGen, useGenRep
, genForeign, noForeign
) where
import Data.Monoid (Endo(..))
data Settings = Settings
{ generateLenses :: Bool
, genericsGenRep :: Bool
, generateForeign :: Maybe ForeignOptions
}
deriving (Eq, Show)
data ForeignOptions = ForeignOptions
{ unwrapSingleConstructors :: Bool
}
deriving (Eq, Show)
defaultSettings :: Settings
defaultSettings = Settings True True Nothing
purs_0_11_settings :: Settings
purs_0_11_settings = Settings True False Nothing
type Switch = Endo Settings
getSettings :: Switch -> Settings
getSettings switch = appEndo switch defaultSettings
defaultSwitch :: Switch
defaultSwitch = mempty
noLenses :: Switch
noLenses = Endo $ \settings -> settings { generateLenses = False }
genLenses :: Switch
genLenses = Endo $ \settings -> settings { generateLenses = True }
useGenRep :: Switch
useGenRep = Endo $ \settings -> settings { genericsGenRep = True }
useGen :: Switch
useGen = Endo $ \settings -> settings { genericsGenRep = False }
genForeign :: ForeignOptions -> Switch
genForeign opts = Endo $ \settings -> settings { generateForeign = Just opts }
noForeign :: Switch
noForeign = Endo $ \settings -> settings { generateForeign = Nothing }