servant/servant-examples/tutorial/convert.hs

30 lines
641 B
Haskell

import Control.Arrow
import Data.Foldable
import Data.List
import System.Environment
main = do
files <- getArgs
forM_ files $ \ file -> do
convertM file
convertM :: FilePath -> IO ()
convertM file = do
contents <- readFile file
seq (length contents) (return ())
writeFile file (convert contents)
convert :: String -> String
convert =
lines >>>
groupBy (\ a b -> take 1 a == take 1 b) >>>
map go >>>
concat >>>
unlines
where
go :: [String] -> [String]
go (a : r)
| ">" `isPrefixOf` a
= "``` haskell" : map (drop 2) (a : r) ++ "```" : []
go x = x