0

我正在使用HUGO建立一个博客,作为评论代码仓库,并且我正在包含来自帖子仓库的源文件。

我已经能够让它进入工作状态并想要改进它,但我被卡住了。

我做了什么

在 HUGO 站点根目录中有一个 .gitignore 的repos目录,它包含源代码 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" >}}

获取源文件.html

{{ with .Get 0 }}
```{{.Get 1}}
<pre><code>{{ readFile . }}</code>
<span class="source-footer">{{.}}</span>
</pre>
```
{{ end }}

或者更好的是,从文件扩展名中推断出来!;-)

我认为这应该不会太难,但这是我第一次使用 Hugo、Go 和模板,所以,有人可以帮我解决这个问题吗?

提前致谢。

4

1 回答 1

1

我终于在HUGO的讨论区得到了答案,所以我只想在这里发布它来完成这个问题。

这是最终的简码:

{{ $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>

这甚至解决了文件扩展名中的语言突出显示。

于 2017-03-05T13:49:14.817 回答