Am Mittwoch, 18. April 2007 19:29 schrieb Wolfgang Jeltsch:
> Hello everybody,
>
> I urgently need Haddock support for type operators like in the following
> code snippet:
>
>     infix  2 :::, :=
>     infixl 9 :.:
>
>     data name ::: value = name := value
>     newtype Composition f g a = Composition { runComposition :: f (g a) }
>     type (:.:) = Composition
>
> Does anybody know whether this is easy to implement or whether there is a
> quick hack to make this work?  Can I do the hacking myself or is deeper
> knowledge of the Haddock source code necessary to provide this feature?
>
> Thank you in advance for any help.
>
> Best wishes,
> Wolfgang

Hello again,

after looking a bit at the source code and coming to the conclusion that it 
doesn’t look too scary ;-) , I’ve started to make the necessary modifications 
myself.  The result of my hacking is attached as a darcs patch.

Note that this is really a hack.  One additional parser conflict is added.  
Neither the parser nor the renderer considers any fixity declarations.  Infix 
operator applications are always rendered without parantheses.  But for me it 
works! :-) 

Best wishes,
Wolfgang
New patches:

[some hackery to support type constructor operators
Wolfgang Jeltsch <[EMAIL PROTECTED]>**20070418212824] {
hunk ./src/HaddockHtml.hs 1022
+  hsep [ppHsBType a, toHtml sym, ppHsBType b]
+ppHsBType (HsTyApp (HsTyApp (HsTyCon opName@(Qual _ (HsVarName (HsSymbol 
sym)))) a) b) =
+  hsep [ppHsBType a, ppHsQName opName, ppHsBType b]
+ppHsBType (HsTyApp (HsTyApp (HsTyCon (UnQual (HsVarName (HsSymbol sym)))) a) 
b) =
hunk ./src/HsParser.ly 268
+>      | '(' consym ')'                { $2 }
hunk ./src/HsParser.ly 411
+>      | btype qconop btype            { HsTyApp (HsTyApp (HsTyCon $2) $1) $3 }
hunk ./src/HsParser.ly 421
+>      | btype qconop type1            { HsTyApp (HsTyApp (HsTyCon $2) $1) $3 }
hunk ./src/HsParser.ly 442
+>      | '(' qconsym ')'               { $2 }
hunk ./src/HsParser.ly 473
+>      | tyvar conop tyvar             { ($2,[$1,$3]) }
+>      | '(' consym ')' tyvars         { ($2,$4) }
}

Context:

[Add a flag --allow-missing-html
Ian Lynagh <[EMAIL PROTECTED]>**20070307145955
 With this flag, haddock ignores whether or not the HTML directory of
 packages depended upon exists. We need this when haddocking groups of
 packages that aren't installed yet.
] 
[Add a --ghc-pkg flag
Ian Lynagh <[EMAIL PROTECTED]>**20070307144253] 
[added substitution %{FILE///c}
Conal Elliott <[EMAIL PROTECTED]>**20070214215400] 
[Do not create empty tables for data declarations which don't have any 
constructors, instances or comments. Gets better HTML 4.01 compliance
Neil Mitchell**20070206174912] 
[infix type op precedence tweak, ppHsNameAsVar 
Conal Elliott <[EMAIL PROTECTED]>**20070115171157] 
[tweaked tyvarop precedence
Conal Elliott <[EMAIL PROTECTED]>**20070110002300] 
[added infix type operators
Conal Elliott <[EMAIL PROTECTED]>**20070105172038] 
[Make the search box in a form so that enter does the default search
Neil Mitchell <http://www.cs.york.ac.uk/~ndm/>**20070112125817] 
[Make the max number of results 75 instead of 50, to allow map searching in the 
base library to work
Neil Mitchell <http://www.cs.york.ac.uk/~ndm/>**20070112122501] 
[Rewrite much of the index searching code, previously was too slow to execute 
on the base library with IE, the new version guarantees less than O(log n) 
operations be performed, where n is the number in the list (before was always 
O(n))
Neil Mitchell <http://www.cs.york.ac.uk/~ndm/>**20070112121746] 
[Make the index be in case-insensitive alphabetic order
Neil Mitchell <http://www.cs.york.ac.uk/~ndm/>**20070111185143] 
[Change from tabs to spaces in the ppHtmlIndex function
Neil Mitchell <http://www.cs.york.ac.uk/~ndm/>**20070111182244] 
[Delete more stuff that is no longer required
Neil Mitchell <http://www.cs.york.ac.uk/~ndm/>**20070111182119] 
[Delete dead code, now there is only one index page
Neil Mitchell <http://www.cs.york.ac.uk/~ndm/>**20070111181746] 
[Add searching on the index page
Neil Mitchell <http://www.cs.york.ac.uk/~ndm/>**20070111170709] 
[Never do spliting index files into many
Neil Mitchell <http://www.cs.york.ac.uk/~ndm/>**20070111154115] 
[add test for blank lines inside @...@ code block
Simon Marlow <[EMAIL PROTECTED]>**20070109131444] 
[allow blank lines inside a @...@ code block
Simon Marlow <[EMAIL PROTECTED]>**20070109131434] 
[Fix up a case of extra vertical space after a code block
Simon Marlow <[EMAIL PROTECTED]>**20070105111341
 
 
] 
[TODO: do something better about re-exported symbols from another package
Simon Marlow <[EMAIL PROTECTED]>**20061215155200] 
[fix <<URL>> image markup
Simon Marlow <[EMAIL PROTECTED]>**20061208100637] 
[add todo item for --maintainer
Simon Marlow <[EMAIL PROTECTED]>**20061206160507] 
[fix --use-package error message
Simon Marlow <[EMAIL PROTECTED]>**20061013105135] 
[Cabal's sdist does not generate "-src.tar.gz" files, but ".tar.gz" ones
[EMAIL PROTECTED] 
[Rename haddock.js to haddock-util.js
Simon Marlow <[EMAIL PROTECTED]>**20061011141737
 haddock.js will be run automatically by Windows when you type
 'haddock' if it is found on the PATH, so rename to avoid confusion.
 Spotted by Adrian Hey.
] 
[TAG 0.8 release
Simon Marlow <[EMAIL PROTECTED]>**20061010122403] 
Patch bundle hash:
91c25b645efb9990a8679f42924f124c02832129
_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to