mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -05:00
rewriting guessSection to accurately reflect intent and usage. Update tests.
This commit is contained in:
parent
e2634752ce
commit
a40bd3caf1
2 changed files with 24 additions and 20 deletions
|
@ -209,36 +209,37 @@ func GetRelativePath(path, base string) (final string, err error) {
|
|||
}
|
||||
|
||||
// Given a source path, determine the section
|
||||
// A section is the part between the root slash and the second slash or before the first slash
|
||||
func GuessSection(in string) string {
|
||||
parts := strings.Split(in, "/")
|
||||
// This will include an empty entry before and after paths with leading and trailing slashes
|
||||
// eg... /sect/one/ -> ["", "sect", "one", ""]
|
||||
|
||||
if len(parts) == 0 {
|
||||
// Needs to have at least a value and a slash
|
||||
if len(parts) < 2 {
|
||||
return ""
|
||||
}
|
||||
|
||||
// trim filename
|
||||
if !strings.HasSuffix(in, "/") {
|
||||
parts = parts[:len(parts)-1]
|
||||
// If it doesn't have a leading slash and value and file or trailing slash, then return ""
|
||||
if parts[0] == "" && len(parts) < 3 {
|
||||
return ""
|
||||
}
|
||||
|
||||
if len(parts) == 0 {
|
||||
return ""
|
||||
// strip leading slash
|
||||
if parts[0] == "" {
|
||||
parts = parts[1:]
|
||||
}
|
||||
|
||||
// if first directory is "content", return second directory
|
||||
section := ""
|
||||
|
||||
if parts[0] == "content" && len(parts) > 1 {
|
||||
section = parts[1]
|
||||
} else {
|
||||
section = parts[0]
|
||||
if parts[0] == "content" {
|
||||
if len(parts) > 2 {
|
||||
return parts[1]
|
||||
} else {
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
if section == "." {
|
||||
return ""
|
||||
}
|
||||
|
||||
return section
|
||||
return parts[0]
|
||||
}
|
||||
|
||||
func PathPrep(ugly bool, in string) string {
|
||||
|
|
|
@ -423,17 +423,20 @@ func TestGuessSection(t *testing.T) {
|
|||
{"", ""},
|
||||
{"/content", ""},
|
||||
{"content/", ""},
|
||||
{"/content/", "content"},
|
||||
{"/content/", ""}, // /content/ is a special case. It will never be the section
|
||||
{"/blog", ""},
|
||||
{"/blog/", "blog"},
|
||||
{"blog", ""},
|
||||
{"content/blog", ""},
|
||||
{"/content/blog/", "blog"},
|
||||
{"/content/blog", "blog"},
|
||||
{"content/blog/", ""},
|
||||
{"/content/blog", ""}, // Lack of trailing slash indicates 'blog' is not a directory.
|
||||
{"content/blog/", "blog"},
|
||||
{"/contents/myblog/", "contents"},
|
||||
{"/contents/yourblog", "contents"},
|
||||
{"/contents/ourblog/", "contents"},
|
||||
{"/content/myblog/", "myblog"},
|
||||
{"/content/yourblog", ""},
|
||||
{"/content/ourblog/", "ourblog"},
|
||||
}
|
||||
|
||||
for i, d := range data {
|
||||
|
|
Loading…
Reference in a new issue