diff options
| author | Neil Mitchell <unknown> | 2008-07-10 15:53:00 +0000 | 
|---|---|---|
| committer | Neil Mitchell <unknown> | 2008-07-10 15:53:00 +0000 | 
| commit | f55439cfcdef0f65b0be79f9efa17bf3fba5be9a (patch) | |
| tree | 2802509123b32749e7faa142c59fee40e162ddd9 /src | |
| parent | 8a57a3cbb683eef73749cac779ae7e01d2f89362 (diff) | |
Put brackets round operators in more places in the Hoogle output
Diffstat (limited to 'src')
| -rw-r--r-- | src/Haddock/Backends/Hoogle.hs | 16 | 
1 files changed, 13 insertions, 3 deletions
| diff --git a/src/Haddock/Backends/Hoogle.hs b/src/Haddock/Backends/Hoogle.hs index f0eced51..33dd5da8 100644 --- a/src/Haddock/Backends/Hoogle.hs +++ b/src/Haddock/Backends/Hoogle.hs @@ -75,7 +75,12 @@ out = f . unwords . map (dropWhile isSpace) . lines . showSDocUnqual . ppr  typeSig :: String -> [String] -> String -typeSig name flds = name ++ " :: " ++ concat (intersperse " -> " flds) +typeSig name flds = operator name ++ " :: " ++ concat (intersperse " -> " flds) + + +operator :: String -> String +operator (x:xs) | not (isAlphaNum x) && x `notElem` " ([{" = "(" ++ x:xs ++ ")" +operator x = x  --------------------------------------------------------------------- @@ -117,7 +122,12 @@ ppData x = showData x{tcdCons=[],tcdDerivs=Nothing} :             concatMap (ppCtor x . unL) (tcdCons x)      where          -- GHC gives out "data Bar =", we want to delete the equals -        showData = reverse . dropWhile (`elem` " =") . reverse . out +        -- also writes data : a b, when we want data (:) a b +        showData x = unwords $ map f $ if last xs == "=" then init xs else xs +            where +                xs = words $ out x +                nam = out $ tcdLName x +                f x = if x == nam then operator nam else x  ppCtor :: TyClDecl Name -> ConDecl Name -> [String] @@ -133,7 +143,7 @@ ppCtor dat con = ldoc (con_doc con) ++ f (con_details con)          name = out $ unL $ con_name con          resType = case con_res con of -            ResTyH98 -> unwords $ out (tcdLName dat) : map out (tcdTyVars dat) +            ResTyH98 -> unwords $ operator (out (tcdLName dat)) : map out (tcdTyVars dat)              ResTyGADT x -> out $ unL x | 
