rewriting guessSection to accurately reflect intent and usage. Update tests.

This commit is contained in:
spf13 2014-11-04 20:19:45 -05:00
parent e2634752ce
commit a40bd3caf1
2 changed files with 24 additions and 20 deletions

View file

@ -209,36 +209,37 @@ func GetRelativePath(path, base string) (final string, err error) {
} }
// Given a source path, determine the section // 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 { func GuessSection(in string) string {
parts := strings.Split(in, "/") 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 "" return ""
} }
// trim filename // If it doesn't have a leading slash and value and file or trailing slash, then return ""
if !strings.HasSuffix(in, "/") { if parts[0] == "" && len(parts) < 3 {
parts = parts[:len(parts)-1] return ""
} }
if len(parts) == 0 { // strip leading slash
return "" if parts[0] == "" {
parts = parts[1:]
} }
// if first directory is "content", return second directory // if first directory is "content", return second directory
section := "" if parts[0] == "content" {
if len(parts) > 2 {
if parts[0] == "content" && len(parts) > 1 { return parts[1]
section = parts[1] } else {
} else { return ""
section = parts[0] }
} }
if section == "." { return parts[0]
return ""
}
return section
} }
func PathPrep(ugly bool, in string) string { func PathPrep(ugly bool, in string) string {

View file

@ -423,17 +423,20 @@ func TestGuessSection(t *testing.T) {
{"", ""}, {"", ""},
{"/content", ""}, {"/content", ""},
{"content/", ""}, {"content/", ""},
{"/content/", "content"}, {"/content/", ""}, // /content/ is a special case. It will never be the section
{"/blog", ""}, {"/blog", ""},
{"/blog/", "blog"}, {"/blog/", "blog"},
{"blog", ""}, {"blog", ""},
{"content/blog", ""}, {"content/blog", ""},
{"/content/blog/", "blog"}, {"/content/blog/", "blog"},
{"/content/blog", "blog"}, {"/content/blog", ""}, // Lack of trailing slash indicates 'blog' is not a directory.
{"content/blog/", ""}, {"content/blog/", "blog"},
{"/contents/myblog/", "contents"}, {"/contents/myblog/", "contents"},
{"/contents/yourblog", "contents"}, {"/contents/yourblog", "contents"},
{"/contents/ourblog/", "contents"}, {"/contents/ourblog/", "contents"},
{"/content/myblog/", "myblog"},
{"/content/yourblog", ""},
{"/content/ourblog/", "ourblog"},
} }
for i, d := range data { for i, d := range data {