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