summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2023-07-05 19:32:57 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2023-07-05 19:32:57 +0200
commitace564e362b8e58e5bc7d730c0f480eff4dcc0bc (patch)
tree3c16bf10e2b8c2966c07ab2a441d10a4c0c15f6a
parentbf7ee8a91acf17613ffcd9c2f8c13abfa1ed0a11 (diff)
Add titleCaseStyle none and firstupperfeat/titlenone-11204
Fixes #11204
-rw-r--r--docs/content/en/getting-started/configuration.md8
-rw-r--r--helpers/general.go6
-rw-r--r--helpers/general_test.go4
3 files changed, 16 insertions, 2 deletions
diff --git a/docs/content/en/getting-started/configuration.md b/docs/content/en/getting-started/configuration.md
index 05465967a..477edc1c4 100644
--- a/docs/content/en/getting-started/configuration.md
+++ b/docs/content/en/getting-started/configuration.md
@@ -623,7 +623,13 @@ status = 404
Set `titleCaseStyle` to specify the title style used by the [title](/functions/title/) template function and the automatic section titles in Hugo.
-By default, Hugo adheres to the capitalization rules in the [Associated Press (AP) Stylebook]. Set `titleCaseStyle` to `chicago` if you would prefer to follow the [Chicago Manual of Style], or set if to `go` to use Go's convention of capitalizing every word.
+Can be one of:
+
+* `ap` (default), the capitalization rules in the [Associated Press (AP) Stylebook]
+* `chicago`, the [Chicago Manual of Style]
+* `go`, Go's convention of capitalizing every word.
+* `firstupper`, capitalize the first letter of the first word.
+* `none`, no capitalization.
[Associated Press (AP) Stylebook]: https://www.apstylebook.com/
[Chicago Manual of Style]: https://www.chicagomanualofstyle.org/home.html
diff --git a/helpers/general.go b/helpers/general.go
index d476b9125..f8f273397 100644
--- a/helpers/general.go
+++ b/helpers/general.go
@@ -205,6 +205,8 @@ func ReaderContains(r io.Reader, subslice []byte) bool {
// - "Go" (strings.Title)
// - "AP" (see https://www.apstylebook.com/)
// - "Chicago" (see http://www.chicagomanualofstyle.org/home.html)
+// - "FirstUpper" (only the first character is upper case)
+// - "None" (no transformation)
//
// If an unknown or empty style is provided, AP style is what you get.
func GetTitleFunc(style string) func(s string) string {
@@ -214,6 +216,10 @@ func GetTitleFunc(style string) func(s string) string {
case "chicago":
tc := transform.NewTitleConverter(transform.ChicagoStyle)
return tc.Title
+ case "none":
+ return func(s string) string { return s }
+ case "firstupper":
+ return FirstUpper
default:
tc := transform.NewTitleConverter(transform.APStyle)
return tc.Title
diff --git a/helpers/general_test.go b/helpers/general_test.go
index 827411027..1463458fa 100644
--- a/helpers/general_test.go
+++ b/helpers/general_test.go
@@ -203,7 +203,7 @@ func TestReaderContains(t *testing.T) {
}
func TestGetTitleFunc(t *testing.T) {
- title := "somewhere over the rainbow"
+ title := "somewhere over the Rainbow"
c := qt.New(t)
c.Assert(helpers.GetTitleFunc("go")(title), qt.Equals, "Somewhere Over The Rainbow")
@@ -213,6 +213,8 @@ func TestGetTitleFunc(t *testing.T) {
c.Assert(helpers.GetTitleFunc("ap")(title), qt.Equals, "Somewhere Over the Rainbow")
c.Assert(helpers.GetTitleFunc("")(title), qt.Equals, "Somewhere Over the Rainbow")
c.Assert(helpers.GetTitleFunc("unknown")(title), qt.Equals, "Somewhere Over the Rainbow")
+ c.Assert(helpers.GetTitleFunc("none")(title), qt.Equals, title)
+ c.Assert(helpers.GetTitleFunc("firstupper")(title), qt.Equals, "Somewhere over the Rainbow")
}
func BenchmarkReaderContains(b *testing.B) {