diff options
Diffstat (limited to 'src/Election.hs')
-rw-r--r-- | src/Election.hs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/Election.hs b/src/Election.hs index a475f0e..8a0e4d0 100644 --- a/src/Election.hs +++ b/src/Election.hs @@ -80,8 +80,8 @@ data Transfer = Transfer -createElection :: FilePath -> Sen.SenateCounter -> Int -> Bool -> IO Election -createElection outDir counter numToElect verbosity = do +createElection :: FilePath -> FilePath -> Sen.SenateCounter -> Int -> Bool -> IO Election +createElection outDir mainLog counter numToElect verbosity = do entries <- mapM (candToEntry counter) (Sen.getBallot counter) return (Election { getEntries = entries @@ -89,7 +89,7 @@ createElection outDir counter numToElect verbosity = do , getLogDir = outDir , getTotalPapers = Sen.getTotal counter , getQuota = droopQuota (Sen.getTotal counter) numToElect - , getMainLog = outDir ++ "/" ++ "log.txt" + , getMainLog = mainLog , getNextLogNum = 1 , getSeats = numToElect , getVacancies = numToElect @@ -360,7 +360,14 @@ excludeCandidates e = do let v1 = v + i n1 = n + 1 if (v1 > appliedBreakpoint) - then n > 0 ? ET.left e $ ET.left r + then if (n > 0) + then do + MIO.liftIO $ Con.when (n > 1) $ do + let logmsg = "Bulk exclusion at logfile #" ++ show (getNextLogNum e) + IO.appendFile (getMainLog e) (logmsg ++ "\n") + Con.when (isVerbose e) (IO.hPutStrLn IO.stderr logmsg) + ET.left e + else ET.left r else excludeLoop n1 v1 r if (length running > 0 && all (< getQuota e) (map getTotalVotes running)) |