[Haskell-cafe] Re: Allowing hyphens in identifiers
Daniel Fischer
daniel.is.fischer at web.de
Wed Dec 16 04:18:00 EST 2009
Am Mittwoch 16 Dezember 2009 07:56:26 schrieb Colin Paul Adams:
> >>>>> "Daniel" == Daniel Fischer <daniel.is.fischer at web.de> 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).
More information about the Haskell-Cafe
mailing list