module PPmrk (toMrk) where import Ast import Text.PrettyPrint toMrk :: [Judgement] -> String toMrk js = render $ vcat $ map (formatJudgement 1) js formatJudgement level (Judgement (header, comments, judgements)) = formatHeader level header $+$ (nest 2 $ vcat $ map (formatComment) comments) $+$ (vcat $ map (formatJudgement (level + 1)) judgements) formatHeader level (Header (title, point, maxPoints)) = (text $ replicate level '#') <+> text title <> colon <+> double point <> text "/" <> double maxPoints formatComment (Comment (mood, commentParts)) = formatMood mood <+> (vcat $ map formatCommentPart commentParts) formatMood Positive = text "+" formatMood Negative = text "-" formatMood Neutral = text "*" formatMood Impartial = text "?" formatCommentPart (CommentStr string) = text string formatCommentPart (CommentCmt comment) = nest 2 $ formatComment comment