summaryrefslogtreecommitdiffstats
path: root/hugolib
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-07-30 17:46:04 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-07-31 22:16:46 +0200
commit8fb594bfb090c017d4e5cbb2905780221e202c41 (patch)
treef622b6aa90757827ea8f07cc27be692fb37b76c4 /hugolib
parent9b4170ce768717adfbe9d97c46e38ceaec2ce994 (diff)
Make the title case style guide configurable
This works for the `title` func and the other places where Hugo makes title case. * AP style (new default) * Chicago style * Go style (what we have today) Fixes #989
Diffstat (limited to 'hugolib')
-rw-r--r--hugolib/config.go1
-rw-r--r--hugolib/site.go11
2 files changed, 10 insertions, 2 deletions
diff --git a/hugolib/config.go b/hugolib/config.go
index e70d07756..8f3625331 100644
--- a/hugolib/config.go
+++ b/hugolib/config.go
@@ -101,6 +101,7 @@ func loadDefaultSettingsFor(v *viper.Viper) {
v.SetDefault("canonifyURLs", false)
v.SetDefault("relativeURLs", false)
v.SetDefault("removePathAccents", false)
+ v.SetDefault("titleCaseStyle", "AP")
v.SetDefault("taxonomies", map[string]string{"tag": "tags", "category": "categories"})
v.SetDefault("permalinks", make(PermalinkOverrides, 0))
v.SetDefault("sitemap", Sitemap{Priority: -1, Filename: "sitemap.xml"})
diff --git a/hugolib/site.go b/hugolib/site.go
index 47c2af453..629881856 100644
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -132,6 +132,9 @@ type Site struct {
// Logger etc.
*deps.Deps `json:"-"`
+ // The func used to title case titles.
+ titleFunc func(s string) string
+
siteStats *siteStats
}
@@ -172,6 +175,7 @@ func (s *Site) reset() *Site {
return &Site{Deps: s.Deps,
layoutHandler: output.NewLayoutHandler(s.PathSpec.ThemeSet()),
disabledKinds: s.disabledKinds,
+ titleFunc: s.titleFunc,
outputFormats: s.outputFormats,
outputFormatsConfig: s.outputFormatsConfig,
mediaTypesConfig: s.mediaTypesConfig,
@@ -227,11 +231,14 @@ func newSite(cfg deps.DepsCfg) (*Site, error) {
return nil, err
}
+ titleFunc := helpers.GetTitleFunc(cfg.Language.GetString("titleCaseStyle"))
+
s := &Site{
PageCollections: c,
layoutHandler: output.NewLayoutHandler(cfg.Cfg.GetString("themesDir") != ""),
Language: cfg.Language,
disabledKinds: disabledKinds,
+ titleFunc: titleFunc,
outputFormats: outputFormats,
outputFormatsConfig: siteOutputFormatsConfig,
mediaTypesConfig: siteMediaTypesConfig,
@@ -2121,7 +2128,7 @@ func (s *Site) newTaxonomyPage(plural, key string) *Page {
p.Title = helpers.FirstUpper(key)
key = s.PathSpec.MakePathSanitized(key)
} else {
- p.Title = strings.Replace(strings.Title(key), "-", " ", -1)
+ p.Title = strings.Replace(s.titleFunc(key), "-", " ", -1)
}
return p
@@ -2141,6 +2148,6 @@ func (s *Site) newSectionPage(name string) *Page {
func (s *Site) newTaxonomyTermsPage(plural string) *Page {
p := s.newNodePage(KindTaxonomyTerm, plural)
- p.Title = strings.Title(plural)
+ p.Title = s.titleFunc(plural)
return p
}