packages feed

lhae-0.0.2: src/Controller/Menu/File/Export/Diagram/BoxPlotParameters.hs

module Controller.Menu.File.Export.Diagram.BoxPlotParameters
    (Parameters(..),defaultParams)
        where

import Util.Sexp (Sexp(..))
import Util.Sexpable (Sexpable(..),PSE,unexpected,recordToSexp
                     ,recordFromSexp)

data Parameters = Parameters { columns :: [Int]
                             , boxWidth :: Double
                             , gaps :: Int
                             }

defaultParams :: Parameters
defaultParams = Parameters [] 0.5 1

instance Sexpable Parameters where
    toSexp = recordToSexp
             [ ("boxWidth", toSexp . boxWidth)
             , ("gaps", toSexp . gaps)
             ]
    fromSexp = recordFromSexp setParam defaultParams

setParam :: Parameters -> Sexp -> PSE Parameters
setParam p sexp =
    case sexp of
      List [Atom "boxWidth",w] -> do
                parameter <- fromSexp w
                return $ p {boxWidth = parameter}
      List [Atom "gaps",g] -> do
                parameter <- fromSexp g
                return $ p {gaps = parameter}
      _ -> unexpected sexp