kanta's spike

Hugoで管理しているブログの記事のファイル名には、プレフィックスとして連番の数字を付与している。

100-Hugoの記事のタイトルからプレフィックスを削除したい.md

hugo new contetでこのようなファイルから記事を作成した場合、記事のタイトルにプレフィックスが残ってしまう。

タイトルからプレフィックスを削除したい。

解決策

archetypesファイルのタイトル処理でプレフィックスを削除すれば良い。

現状、archetypesファイルは以下になっている。

---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

それを、以下のように修正すれば良い。

---
title: "{{ .Name | replaceRE "^[0-9]+-" "" | humanize | title }}"
date: {{ .Date }}
draft: true
---

以下に詳細を説明する。

| (Pipelines)

|(Pipelines)は、Hugo(正確にはGoのテンプレート言語)のコマンドを繋げる仕組みである。

|の前後には、値(例: "hello world")メソッド(例: .Name)、そして関数とその引数(例: printf "%s")を指定できる。

|の後に、関数とその引数(例: printf "%s")を指定した場合は、|の前を評価した結果が、関数とその引数(例: printf "%s")の最後の引数となる。

そのため、以下のコードは、

"abcdef" | printf "%s"

以下と同じ意味となる。

$var := "abcdef"
printf "%s" $var
📄 注意

Hugoのrelpace関数のシンタックスは以下のように、 置換対象の文字列が第1引数になる。

replace INPUT OLD NEW [LIMIT]

そのため、置換対象の文字列をパイプでつないで渡すことはできない。

置換したい場合は、strings.ReplaceRE | Hugoを利用したほうが良さそう。

replaceRE PATTERN REPLACEMENT INPUT [LIMIT]

参考

作成日: 2023/12/21