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]