remarks 0.1.1 → 0.1.2
raw patch · 3 files changed
+35/−1 lines, 3 filesdep +pretty
Dependencies added: pretty
Files
- app/Main.hs +5/−0
- remarks.cabal +3/−1
- src/PPmrk.hs +27/−0
app/Main.hs view
@@ -3,6 +3,7 @@ import Ast import Parser import Validator+import PPmrk import Control.Monad ( void, filterM ) import Data.List ( sort, partition )@@ -120,6 +121,9 @@ check :: [Judgement] -> IO () check js = putStrLn $ pretty $ map validate js +ppMarkup :: [Judgement] -> IO ()+ppMarkup = putStrLn . toMrk+ main :: IO () main = do args <- getArgs@@ -127,4 +131,5 @@ [] -> noCommand ("parse" : paths) -> parsePaths paths >>= putStrLn . pretty ("check" : paths) -> parsePaths paths >>= mapM_ check+ ("markup" : paths) -> parsePaths paths >>= mapM_ ppMarkup (c:args) -> invalidCommand c args
remarks.cabal view
@@ -1,5 +1,5 @@ name: remarks-version: 0.1.1+version: 0.1.2 synopsis: A DSL for marking student work description: A DSL for marking student work; see README.md for further details. homepage: https://github.com/oleks/remarks#readme@@ -19,8 +19,10 @@ , Parser , Parser.Impl , Validator+ , PPmrk build-depends: base >= 4.7 && < 5 , GenericPretty >= 1.2.1+ , pretty >= 1.1.3.3 default-language: Haskell2010 executable remarks
+ src/PPmrk.hs view
@@ -0,0 +1,27 @@+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