我正在使用HUGO建立一个博客,作为一个注释代码回购,我直接在帖子的回购中包含源文件。
我已经能够让它达到工作状态,并希望改善它,但我被卡住了。
在HUGO网站根目录中有一个.gitignore'd repos 目录,其中包含源代码存储库。
有一个 getSourceFile.html 短代码:
{{ with .Get 0 }}
<pre><code>{{ readFile . }}</code>
<span class="source-footer">{{.}}</span>
</pre>
{{ end }}
然后,在帖子中我可以像这样使用短代码:
#### Base/EntityTypeConfiguration.cs
Estas clases permiten manejar una clase de configuración por cada clase del modelo...
{{< getSourceFile "repos/EFCoreApp/src/EFCore.App/Base/EntityTypeConfiguration.cs" >}}
我得到了这个:
这是非常好的,因为我不需要复制和粘贴代码,它是100%最新的,我相信它会编译。
但这就是我被困住的地方!
1)在前面设置repo root,这样短代码就更容易使用,如下所示:
{{< getSourceFile "src/EFCore.App/Base/EntityTypeConfiguration.cs" >}}
2)能够将语言作为参数传递给短代码以在突出显示功能中使用它,就像这样(这不起作用):
{{< getSourceFile "src/EFCore.App/Base/EntityTypeConfiguration.cs" "csharp" >}}
getSourceFile.html :
{{ with .Get 0 }}
```{{.Get 1}}
<pre><code>{{ readFile . }}</code>
<span class="source-footer">{{.}}</span>
</pre>
```
{{ end }}
或者更好的是,从文件扩展名中推断它! ; - )
我认为这不应该太难,但这是我第一次使用Hugo,Go和模板,所以,有人可以帮助我吗?
提前致谢。
答案 0 :(得分:1)
我终于在HUGO's dicussion forum得到了答案,所以我只是想在这里发帖来完成这个问题。
这是最终的短代码:
{{ $file := .Get 0 }}
{{ $repoFilePath := printf "%s/%s" $.Page.Params.reponame $file }}
{{ $repoFile := printf "repos/%s" $repoFilePath }}
{{ $fileExt := replace (index (findRE "(\\.)\\w+$" $file) 0) "." "" }}
<pre><code class="language-{{ $fileExt }}">{{ readFile $repoFile }}</code>
<span class="source-footer">{{ $repoFilePath }}</span>
</pre>
这甚至可以解决文件扩展名中突出显示的语言。