Am Mittwoch 16 Dezember 2009 07:56:26 schrieb Colin Paul Adams:
> >>>>> "Daniel" == Daniel Fischer <[email protected]> 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).
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to