
Am Mittwoch 16 Dezember 2009 07:56:26 schrieb Colin Paul Adams:
"Daniel" == Daniel Fischer
writes: Daniel> Now, would you be interested in a transformation the other Daniel> way round, so that you can read other people's code in Daniel> your preferred style?
I would, applied to the output of haddock, at least.
As a pre-alpha version: ------------------------------------------------------------ module Main (main) where import Data.Char (isUpper, isLower, toLower) main :: IO () main = interact unCamel unCamel :: String -> String unCamel ('<':cs) = '<' : inTag cs unCamel (a:bs@(b:cs)) | isLower a && isUpper b = a : '_' : toLower b : unCamel cs | otherwise = a : unCamel bs unCamel cs = cs inTag :: String -> String inTag ('>':cs) = '>' : unCamel cs inTag (a:cs) = a : inTag cs inTag [] = [] ------------------------------------------------------------ Compile, run with ./unCamel < /path/to/HaddockOutput.html > /path/to/Haddock_output.html (or whatever Windows uses to redirect stdin and stdout) This makes a few not-well-founded assumptions about haddock's output. Try it on a couple of files, report bugs. If it works satisfactorily, we can add a front-end to make transformation easy (like, pass an input directory and an output directory on the command line, and it recursively copies the directory content, transforming all .html files, giving you a complete documentation with working links).