mirror of
https://github.com/gohugoio/hugo.git
synced 2025-04-27 14:10:31 +03:00
hugolib: Refactor/-work the permalink/target path logic
This is a pretty fundamental change in Hugo, but absolutely needed if we should have any hope of getting "multiple outputs" done. This commit's goal is to say: * Every file target path is created by `createTargetPath`, i.e. one function for all. * That function takes every page and site parameter into account, to avoid fragile string parsing to uglify etc. later on. * The path creation logic has full test coverage. * All permalinks, paginator URLs etc. are then built on top of that same logic. Fixes #1252 Fixes #2110 Closes #2374 Fixes #1885 Fixes #3102 Fixes #3179 Fixes #1641 Fixes #1989
This commit is contained in:
parent
c8fff9501d
commit
6bf010fed4
26 changed files with 912 additions and 400 deletions
|
@ -22,6 +22,8 @@ import (
|
|||
|
||||
// PathSpec holds methods that decides how paths in URLs and files in Hugo should look like.
|
||||
type PathSpec struct {
|
||||
BaseURL
|
||||
|
||||
disablePathToLower bool
|
||||
removePathAccents bool
|
||||
uglyURLs bool
|
||||
|
@ -32,8 +34,7 @@ type PathSpec struct {
|
|||
// pagination path handling
|
||||
paginatePath string
|
||||
|
||||
baseURL string
|
||||
theme string
|
||||
theme string
|
||||
|
||||
// Directories
|
||||
themesDir string
|
||||
|
@ -61,6 +62,9 @@ func (p PathSpec) String() string {
|
|||
// NewPathSpec creats a new PathSpec from the given filesystems and Language.
|
||||
func NewPathSpec(fs *hugofs.Fs, cfg config.Provider) *PathSpec {
|
||||
|
||||
// TODO(bep) output error handling
|
||||
baseURL, _ := newBaseURLFromString(cfg.GetString("baseURL"))
|
||||
|
||||
ps := &PathSpec{
|
||||
fs: fs,
|
||||
disablePathToLower: cfg.GetBool("disablePathToLower"),
|
||||
|
@ -71,7 +75,7 @@ func NewPathSpec(fs *hugofs.Fs, cfg config.Provider) *PathSpec {
|
|||
defaultContentLanguageInSubdir: cfg.GetBool("defaultContentLanguageInSubdir"),
|
||||
defaultContentLanguage: cfg.GetString("defaultContentLanguage"),
|
||||
paginatePath: cfg.GetString("paginatePath"),
|
||||
baseURL: cfg.GetString("baseURL"),
|
||||
BaseURL: baseURL,
|
||||
themesDir: cfg.GetString("themesDir"),
|
||||
layoutDir: cfg.GetString("layoutDir"),
|
||||
workingDir: cfg.GetString("workingDir"),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue