mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
parent
35fbfb19a1
commit
1f42e47e47
4 changed files with 34 additions and 4 deletions
|
@ -1326,7 +1326,7 @@ func (p *Page) update(frontmatter map[string]interface{}) error {
|
||||||
Params: p.params,
|
Params: p.params,
|
||||||
Dates: &p.PageDates,
|
Dates: &p.PageDates,
|
||||||
PageURLs: &p.URLPath,
|
PageURLs: &p.URLPath,
|
||||||
BaseFilename: p.BaseFileName(),
|
BaseFilename: p.ContentBaseName(),
|
||||||
ModTime: mtime,
|
ModTime: mtime,
|
||||||
GitAuthorDate: gitAuthorDate,
|
GitAuthorDate: gitAuthorDate,
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,8 @@ type FrontMatterDescriptor struct {
|
||||||
// This the Page's front matter.
|
// This the Page's front matter.
|
||||||
Frontmatter map[string]interface{}
|
Frontmatter map[string]interface{}
|
||||||
|
|
||||||
// This is the Page's base filename, e.g. page.md.
|
// This is the Page's base filename (BaseFilename), e.g. page.md., or
|
||||||
|
// if page is a leaf bundle, the bundle folder name (ContentBaseName).
|
||||||
BaseFilename string
|
BaseFilename string
|
||||||
|
|
||||||
// The content file's mod time.
|
// The content file's mod time.
|
||||||
|
|
|
@ -70,6 +70,10 @@ type File interface {
|
||||||
// not even the optional language extension part.
|
// not even the optional language extension part.
|
||||||
TranslationBaseName() string
|
TranslationBaseName() string
|
||||||
|
|
||||||
|
// ContentBaseName is a either TranslationBaseName or name of containing folder
|
||||||
|
// if file is a leaf bundle.
|
||||||
|
ContentBaseName() string
|
||||||
|
|
||||||
// UniqueID is the MD5 hash of the file's path and is for most practical applications,
|
// UniqueID is the MD5 hash of the file's path and is for most practical applications,
|
||||||
// Hugo content files being one of them, considered to be unique.
|
// Hugo content files being one of them, considered to be unique.
|
||||||
UniqueID() string
|
UniqueID() string
|
||||||
|
@ -106,6 +110,7 @@ type FileInfo struct {
|
||||||
relPath string
|
relPath string
|
||||||
baseName string
|
baseName string
|
||||||
translationBaseName string
|
translationBaseName string
|
||||||
|
contentBaseName string
|
||||||
section string
|
section string
|
||||||
isLeafBundle bool
|
isLeafBundle bool
|
||||||
|
|
||||||
|
@ -144,6 +149,13 @@ func (fi *FileInfo) BaseFileName() string { return fi.baseName }
|
||||||
// language segement (ie. "page").
|
// language segement (ie. "page").
|
||||||
func (fi *FileInfo) TranslationBaseName() string { return fi.translationBaseName }
|
func (fi *FileInfo) TranslationBaseName() string { return fi.translationBaseName }
|
||||||
|
|
||||||
|
// ContentBaseName is a either TranslationBaseName or name of containing folder
|
||||||
|
// if file is a leaf bundle.
|
||||||
|
func (fi *FileInfo) ContentBaseName() string {
|
||||||
|
fi.init()
|
||||||
|
return fi.contentBaseName
|
||||||
|
}
|
||||||
|
|
||||||
// Section returns a file's section.
|
// Section returns a file's section.
|
||||||
func (fi *FileInfo) Section() string {
|
func (fi *FileInfo) Section() string {
|
||||||
fi.init()
|
fi.init()
|
||||||
|
@ -177,11 +189,15 @@ func (fi *FileInfo) init() {
|
||||||
if (!fi.isLeafBundle && len(parts) == 1) || len(parts) > 1 {
|
if (!fi.isLeafBundle && len(parts) == 1) || len(parts) > 1 {
|
||||||
section = parts[0]
|
section = parts[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
fi.section = section
|
fi.section = section
|
||||||
|
|
||||||
fi.uniqueID = helpers.MD5String(filepath.ToSlash(fi.relPath))
|
if fi.isLeafBundle && len(parts) > 0 {
|
||||||
|
fi.contentBaseName = parts[len(parts)-1]
|
||||||
|
} else {
|
||||||
|
fi.contentBaseName = fi.translationBaseName
|
||||||
|
}
|
||||||
|
|
||||||
|
fi.uniqueID = helpers.MD5String(filepath.ToSlash(fi.relPath))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -94,4 +94,17 @@ func TestFileInfoLanguage(t *testing.T) {
|
||||||
|
|
||||||
assert.Equal("sv", fiSv.Lang())
|
assert.Equal("sv", fiSv.Lang())
|
||||||
assert.Equal("en", fiEn.Lang())
|
assert.Equal("en", fiEn.Lang())
|
||||||
|
|
||||||
|
// test contentBaseName implementation
|
||||||
|
fi := s.NewFileInfo("", "2018-10-01-contentbasename.md", false, nil)
|
||||||
|
assert.Equal("2018-10-01-contentbasename", fi.ContentBaseName())
|
||||||
|
|
||||||
|
fi = s.NewFileInfo("", "2018-10-01-contentbasename.en.md", false, nil)
|
||||||
|
assert.Equal("2018-10-01-contentbasename", fi.ContentBaseName())
|
||||||
|
|
||||||
|
fi = s.NewFileInfo("", filepath.Join("2018-10-01-contentbasename", "index.en.md"), true, nil)
|
||||||
|
assert.Equal("2018-10-01-contentbasename", fi.ContentBaseName())
|
||||||
|
|
||||||
|
fi = s.NewFileInfo("", filepath.Join("2018-10-01-contentbasename", "_index.en.md"), false, nil)
|
||||||
|
assert.Equal("_index", fi.ContentBaseName())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue