2012-12-17 1 views
3

Предположим, у меня есть библиотека, упакованная и построенная с помощью Cabal, а некоторый модуль Internal не находится в моем файле кэша Exposed-modules. Есть ли тогда никакой разницы, если я указываю прагмуУстраняет {- # OPTIONS_HADDOCK hide # -} влияние на неэкспортируемые модули?

{-# OPTIONS_HADDOCK hide #-} 

в верхней части Internal.hs, или он уже автоматически скрыты в соответствии с пикши?

Если это действительно имеет значение, какой эффект у него есть?

ответ

4

Это действительно имеет значение, если пикши пакета созданы с флагом --internal до cabal haddock.

$ cabal help haddock 
Usage: cabal haddock [FLAGS] 

Flags for haddock: 
-h --help     Show this help text 
-v --verbose[=n]   Control verbosity (n is 0--3, default verbosity 
          level is 1) 
    <snip> 
    --executables   Run haddock for Executables targets 
    --internal    Run haddock for internal modules and include all 
          symbols 
    <snip> 

Если пикши созданы без --internal флага, атрибут модуль hide не имеет никакого эффекта: никаких документов не создается для модуля в любом случае.

--internal Если задано, то документация создается для не подвергавшихся воздействию модулей , за исключением тех, которые указать атрибут hide.

Другими словами, документация генерируется, если hide не установлен и либо --internal указан или модуль экспортируется.

Применение --internal для cabal haddock могут быть указаны с cabal install --haddock-internal, или при вызове вручную cabal haddock, или с интерфейсом runhaskell ./Setup.hs ....

Большинство людей просто запускают cabal install с настройками по умолчанию, поэтому лишь немногие будут наблюдать разницу.

+0

Это флаг 'cabal'. Я немного расширюсь. –

+0

Я просто сделал довольно тяжелое редактирование вашего ответа, я надеюсь, что все в порядке. Я также удалил свой теперь неактуальный комментарий. –

+0

Это нормально, это было улучшение. Спасибо, @Ben. –