使用相对路径生成文档

generate documentation with relative paths

我正在尝试设置 cabal 配置,以便它能够以我可以在本地或远程浏览的形式生成文档。所以要求之一是生成正确形式的 html,即相对路径。

我搜索了一下,好像选项的组合太多了,所以我觉得还是过来问一下,看看有没有人知道比较好。

我当前的配置:

documentation: True

其他选项无关紧要。编译器生成 links 类似于这个:

file:///home/hu/.cabal/share/doc/x86_64-linux-ghc-7.10.3/lens-4.14/html/Control-Lens.html

这让我只能在本地阅读文档。所以我希望在 html 中,它包含 link 作为:

lens-4.14/html/Control-Lens.html

这样在远程浏览器中,我可以看到 link 为:

http://linux/ghc-doc/lens-4.14/html/Control-Lens.html

希望这是有道理的。

有人知道我需要设置哪些选项才能启用此功能吗?

一种选择是使用 stack——它会创建 HTML 带有您想要的相关链接的文档。

对于每个包,只需 运行:

stack build --haddock <package-name>

stack --resolver ... build --haddock <package-name>

使用特定的解析器。然后在$HOME/.stack/snapshots/<arch>/<resolver>/<ghc-version>/doc/

中查找

注意 - <package-name> 只是包名称 - 不包括版本。

需要注意的是,堆栈不会重建包 - 也许有一个标志 - 但你总是可以在开始之前删除你的快照目录。

也许你想要这个:http://documentup.com/feuerbach/standalone-haddock

引用:它生成文档...带有正确的链接:

  • 此包集中标识符的链接是相对的
  • 指向外部包标识符的链接导致黑客攻击

我真的找不到解决方案,所以我最终编写了自己的 cgi 脚本来帮助我进行转换。这是要点:

https://gist.github.com/HuStmpHrrr/b7de3c49f77a925dc6cf85da16a1d231

其中 pipeline 是将更正超链接的那个。由于这是一个快速而肮脏的脚本,如果有人能指出我可以从中改进什么,我们将不胜感激。

我们还需要设置 http 服务器(在我的例子中,它是 apache2):

  1. 启用cgi

    LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so

  2. 将你的 apache 配置为 运行 cgi:

     ScriptAlias /cgis/ $somepath/cgis/
     <Directory "$somepath/cgis">
         AllowOverride None
         Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
         Require all granted
     </Directory>
    
  3. 然后把cgi文件放在那里。它应该能够做到这一点。