module Export.HtmlTable (htmlTableRemarks) where
import Ast
import Export.Generic
import PrettyPrinter
htmlTableRemarks :: [Judgement] -> Table
htmlTableRemarks js = Rows $ tblHead:(concatMap formatStart js)
where
tblHead = "Student":"Total / 100":(tail $ tableHead (head js))
tableHead :: Judgement -> Row
tableHead (j @ (Bonus _)) = [getTitle j]
tableHead (j @ (Judgement (_, _, _, js))) =
((getTitle j) ++ " / " ++ (getMaxPoints j)):(concatMap tableHead js)
formatStart :: Judgement -> [Row]
formatStart (Bonus _) = []
formatStart (j @ (Judgement (_, _, cs, js))) =
[(getTitle j):(getTotal j):r1,"":(formatComments cs):r2]
where
(r1, r2) = concatUnzipMap formatJudgement js
formatJudgement :: Judgement -> (Row, Row)
formatJudgement (j @ (Bonus (_, _, cs))) = ([getTotal j], [formatComments cs])
formatJudgement (j @ (Judgement (_, _, cs, js))) =
((getTotal j):r1, (formatComments cs):r2)
where
(r1, r2) = concatUnzipMap formatJudgement js
concatUnzipMap :: (a -> ([b],[c])) -> [a] -> ([b],[c])
concatUnzipMap f l =
(concat c1, concat c2)
where (c1, c2) = unzip $ map f l
formatComments :: [Comment] -> String
formatComments cs = ppComments cs