liquidhaskell-0.8.2.0: external/hsmisc/Lhs2Hs.hs
#!/usr/bin/env runhaskell
import System.Environment (getArgs)
import System.FilePath (replaceExtension)
import Data.Char (isSpace)
main = getArgs >>= mapM lhs2hsFile
lhs2hsFile f = do str <- readFile f
writeFile (replaceExtension f ".hs") $ lhs2hs txBeginEnd {- txBird -} $ str
lhs2hs tx = unlines . tx . map trimSpaces . lines
trimSpaces = reverse . dropWhile isSpace . reverse
--------------------------------------------------------------------------
txBeginEnd = stepFold step Comment
data Mode = Code | Comment
step Comment "\\begin{code}" = (Code , "")
step Comment "" = (Comment, "")
step Comment s = (Comment, "-- " ++ s)
step Code "\\end{code}" = (Comment, "")
step Code s = (Code , s )
stepFold f b [] = []
stepFold f b (x:xs) = y : stepFold f b' xs
where (b', y) = f b x
--------------------------------------------------------------------------
txBird = map dropTrack
where
dropTrack ('>' : ' ' : l) = l
dropTrack l = "--" ++ l