1 module Parse ( ekitaiOpts, optTimeStep, hGetLines ) where
3 import System.Console.GetOpt
4 import System.Environment
10 data Options = Options
14 defaultOptions = Options
18 options :: [OptDescr (Options -> Options)]
20 [ Option ['t'] ["timestep"]
21 (ReqArg (\t opts -> opts { optTimeStep = read t :: Int }) "timestep")
22 "sets the simulation time step"
25 ekitaiOpts :: [String] -> IO (Options, String)
27 case getOpt RequireOrder options argv of
28 (o, [n], []) -> return (foldl (flip id) defaultOptions o, n)
29 (o, _, []) -> ioError $ userError $ "missing input file"
30 (_, _, errs) -> ioError $ userError $ concat errs
32 -- reads in file by lines
33 hGetLines :: Handle -> IO [String]
37 if isEof then return [line]