更改重新导出的类型和值的文档

时间:2015-10-16 17:51:49

标签: haskell haddock

假设我有一个从内部模块重新导出值的模块:

module My.Cool.Module (SomeType, someValue) where
import My.Cool.Module.Internal (SomeType, someValue)

我想在SomeTypesomeValue中显示My-Cool-Module.htmlMy-Cool-Module-Internal.html的不同文档,因此前者可以讨论公共API,后者可以讨论它们与其他内部结构的关系。

有没有办法用haddock做到这一点?

我试过了:

module My.Cool.Module (SomeType, someValue) where
import My.Cool.Module.Internal
  ( SomeType -- ^ a serious type for serious people
  , someValue -- ^ a serious value for serious people
  )

但是haddock给了我一个解析错误:

parse error on input ‘-- ^ a serious type for serious people’

1 个答案:

答案 0 :(得分:3)

好的,这是一个我可以忍受的黑客。

Haddock允许您插入named chunks of documentation,它们按照定义的顺序显示。这些命名的块仅针对它们所在的模块显示,而不是在从该模块重新导出值或类型的任何文件中显示。

所以在内部模块中,我可以在公共API文档之后插入包含内部文档的命名块:

-- | Have you welcomed internal modules into your life?
module Public.Private where

-- | Here's the public API information for 'SomeType'
type SomeType = ()
-- $
-- Here's the internal information about 'SomeType': it's really just a stand-in
-- for San Francisco

-- | Here's the public API information for 'someValue'
someValue :: SomeType
-- $ Here's the internal information about 'someValue': it loves cheese.
someValue = ()

然后正常导出类型和值

-- | This is a very serious public API
module Public ( SomeType, someValue) where
import Public.Private ( SomeType , someValue)

现在,Public.Private生成的文档显示了公共文档之后的内部文档:

Generated HTML documentation for Public.Private

虽然导出项目的Public文档未显示内部文档:

Generated HTML documentation for Public

这只允许我附加私人文档,但这比没有好。