生成具有相对路径的文档

时间:2016-05-14 02:35:00

标签: haskell documentation

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

我已经四处寻找,但似乎有太多的选项组合,所以我觉得最好在这里问一下,看看是否有人知道。

我当前的配置:

documentation: True

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

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

这使我只能在本地阅读doc。所以我希望在html中,它包含以下链接:

lens-4.14/html/Control-Lens.html

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

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

希望这是有道理的。

任何人都知道我需要设置哪些选项才能启用此功能?

3 个答案:

答案 0 :(得分:1)

一种选择是使用stack - 它可以创建具有您想要的相对链接的HTML文档。

对于每个包,只需运行:

apply plugin: 'com.android.application'

android {
signingConfigs {
    config {
        keyAlias 'alias'
        keyPassword 'passwordAlias'
        storeFile file('/path/file.jks')
        storePassword 'passwordFile'
    }
}
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
    applicationId "com.company.project"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.config
    }
}
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
*libs*
}

stack build --haddock <package-name>

使用特定的解析器。然后查看stack --resolver ... build --haddock <package-name>

注意 - $HOME/.stack/snapshots/<arch>/<resolver>/<ghc-version>/doc/只是包名称 - 不包括版本。

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

答案 1 :(得分:0)

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

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

  • 此程序包集内标识符的链接是相对的
  • 指向外部软件包标识符的链接导致hackage

答案 2 :(得分:0)

我无法真正找到解决方案,所以我最终编写了自己的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文件放在那里。它应该能够做到这一点。