-module Parse ( ekitaiOpts, optTimeStep ) where
+module Parse ( ekitaiOpts, optTimeStep, hGetLines ) where
import System.Console.GetOpt
import System.Environment
import System.Exit
+import System.IO
import Data.Maybe
import Data.Either
data Options = Options
- { optHelp :: Bool
- , optColor :: Bool
- , optTimeStep :: Int
+ { optTimeStep :: Int
}
defaultOptions = Options
- { optHelp = False
- , optColor = False
- , optTimeStep = 50000
+ { optTimeStep = 50000
}
options :: [OptDescr (Options -> Options)]
options =
- [ Option ['h'] ["help"]
- (NoArg (\opts -> opts { optHelp = True }))
- "display's this message"
- , Option ['c'] ["color", "colour"]
- (NoArg (\opts -> opts { optColor = True }))
- "enables color"
- , Option ['t'] ["timestep"]
+ [ Option ['t'] ["timestep"]
(ReqArg (\t opts -> opts { optTimeStep = read t :: Int }) "timestep")
"sets the simulation time step"
]
(o, _, []) -> ioError $ userError $ "missing input file"
(_, _, errs) -> ioError $ userError $ concat errs
--- ++ usageInfo header options
--- where header = "Usage: ekitai [OPTIONS...] simfile"
+-- reads in file by lines
+hGetLines :: Handle -> IO [String]
+hGetLines h = do
+ line <- hGetLine h
+ isEof <- hIsEOF h
+ if isEof then return [line]
+ else do
+ lines <- hGetLines h
+ return (line:lines)
- -- (o, _, []) -> do
- -- opts <- (foldl (flip id) defaultOptions o)
- -- if optHelp then userError $ concat usageInfo "Usage: ekitai [OPTIONS...] simfile" options
- -- else ioError $ userError $ "missing input file"