packages feed

zeroth-2008.10.28: src/Comments.hs

module Comments where

type Comment = (Int,String)

mixComments :: [Comment] -> [(Int,String)] -> [String]
mixComments c [] = map (showComment.lines) (map snd c)
mixComments [] i = map snd i
mixComments c@((cl,cc):cs) i@((il,ic):is)
    | cl <= il = showComment (lines cc):mixComments cs i
    | otherwise = ic:mixComments c is

showComment :: [String] -> String
showComment [x] = '-':'-':' ':x
showComment c = "{- " ++ unlines c ++ " -}"

-- FIXME!
parseComments :: String -> [Comment]
parseComments input = parseComments' (lines input) 1

parseComments' :: [String] -> Int -> [Comment]
parseComments' [] _ = []
parseComments' (('-':'-':c):xs) l = (l,c):parseComments' xs (l+1)
parseComments' (_:xs) l = parseComments' xs (l+1)