From 8fb594bfb090c017d4e5cbb2905780221e202c41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Sun, 30 Jul 2017 17:46:04 +0200 Subject: 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 --- hugolib/config.go | 1 + hugolib/site.go | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'hugolib') 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 } -- cgit v1.2.3