2015-10-16 4 views
4

Пусть у меня есть модуль, который повторно экспортирует значение из внутреннего модуля:Изменение документации для реэкспортируемых типов и значение

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

Я хотел бы показать другую документацию для SomeType и someValue в My-Cool-Module.html и My-Cool-Module-Internal.html, так что первые могут обсуждать публичный API, и последний может обсудить, как они относятся к остальным внутренним частям.

Есть ли способ сделать это с помощью пикши?

Я пробовал:

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 
) 

Но пикши дал мне ошибку синтаксического анализа:

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

Не можете ли вы вместо реэкспортирования функции просто переопределить его? Я имею в виду импорт 'Внутренний' квалифицированный и определить' someType = Internal.someType'. Это должно позволить вам добавить вашу собственную документацию. – mb14

+0

mb14: кажется хорошей идеей. Однако переопределение типов кажется проблематичным. – rampion

+0

Вы правы, я не понимал, что вы также спрашиваете о Типе. – mb14

ответ

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

Это только позволяет мне добавить личное документации, но это лучше, чем ничего.

 Смежные вопросы

  • Нет связанных вопросов^_^