fix tags not being in lowercase, #491

This commit is contained in:
Joel Scoble 2014-09-09 15:58:02 -05:00 committed by spf13
parent 012a473e27
commit 4e9b04086a
3 changed files with 43 additions and 9 deletions

View file

@ -431,7 +431,7 @@ func (page *Page) GetParam(key string) interface{} {
case bool: case bool:
return cast.ToBool(v) return cast.ToBool(v)
case string: case string:
return cast.ToString(v) return strings.ToLower(cast.ToString(v))
case int64, int32, int16, int8, int: case int64, int32, int16, int8, int:
return cast.ToInt(v) return cast.ToInt(v)
case float64, float32: case float64, float32:
@ -439,7 +439,7 @@ func (page *Page) GetParam(key string) interface{} {
case time.Time: case time.Time:
return cast.ToTime(v) return cast.ToTime(v)
case []string: case []string:
return v return sliceToLower(v.([]string))
} }
return nil return nil
} }
@ -795,3 +795,17 @@ func (p *Page) TargetPath() (outfile string) {
return path.Join(p.Dir, strings.TrimSpace(outfile)) return path.Join(p.Dir, strings.TrimSpace(outfile))
} }
// sliceToLower goes through the source slice and lowers all values.
func sliceToLower(s []string) []string {
if s == nil {
return nil
}
l := make([]string, len(s))
for i, v := range s {
l[i] = strings.ToLower(v)
}
return l
}

View file

@ -6,7 +6,7 @@ import (
) )
var PAGE_YAML_WITH_TAXONOMIES_A = `--- var PAGE_YAML_WITH_TAXONOMIES_A = `---
tags: ['a', 'b', 'c'] tags: ['a', 'B', 'c']
categories: 'd' categories: 'd'
--- ---
YAML frontmatter with tags and categories taxonomy.` YAML frontmatter with tags and categories taxonomy.`
@ -14,20 +14,20 @@ YAML frontmatter with tags and categories taxonomy.`
var PAGE_YAML_WITH_TAXONOMIES_B = `--- var PAGE_YAML_WITH_TAXONOMIES_B = `---
tags: tags:
- "a" - "a"
- "b" - "B"
- "c" - "c"
categories: 'd' categories: 'd'
--- ---
YAML frontmatter with tags and categories taxonomy.` YAML frontmatter with tags and categories taxonomy.`
var PAGE_YAML_WITH_TAXONOMIES_C = `--- var PAGE_YAML_WITH_TAXONOMIES_C = `---
tags: 'e' tags: 'E'
categories: 'd' categories: 'd'
--- ---
YAML frontmatter with tags and categories taxonomy.` YAML frontmatter with tags and categories taxonomy.`
var PAGE_JSON_WITH_TAXONOMIES = `{ var PAGE_JSON_WITH_TAXONOMIES = `{
"categories": "d", "categories": "D",
"tags": [ "tags": [
"a", "a",
"b", "b",
@ -37,7 +37,7 @@ var PAGE_JSON_WITH_TAXONOMIES = `{
JSON Front Matter with tags and categories` JSON Front Matter with tags and categories`
var PAGE_TOML_WITH_TAXONOMIES = `+++ var PAGE_TOML_WITH_TAXONOMIES = `+++
tags = [ "a", "b", "c" ] tags = [ "a", "B", "c" ]
categories = "d" categories = "d"
+++ +++
TOML Front Matter with tags and categories` TOML Front Matter with tags and categories`

View file

@ -40,7 +40,7 @@ Leading
{ {
"title": "spf13-vim 3.0 release and new website", "title": "spf13-vim 3.0 release and new website",
"description": "spf13-vim is a cross platform distribution of vim plugins and resources for Vim.", "description": "spf13-vim is a cross platform distribution of vim plugins and resources for Vim.",
"tags": [ ".vimrc", "plugins", "spf13-vim", "vim" ], "tags": [ ".vimrc", "plugins", "spf13-vim", "VIm" ],
"date": "2012-04-06", "date": "2012-04-06",
"categories": [ "categories": [
"Development", "Development",
@ -55,7 +55,7 @@ Content of the file goes Here
{ {
"title": "spf13-vim 3.0 release and new website" "title": "spf13-vim 3.0 release and new website"
"description": "spf13-vim is a cross platform distribution of vim plugins and resources for Vim." "description": "spf13-vim is a cross platform distribution of vim plugins and resources for Vim."
"tags": [ ".vimrc", "plugins", "spf13-vim", "vim" ] "tags": [ ".vimrc", "plugins", "spf13-vim", "VIm" ]
"date": "2012-04-06" "date": "2012-04-06"
"categories": [ "categories": [
"Development" "Development"
@ -565,6 +565,26 @@ func TestLayoutOverride(t *testing.T) {
} }
} }
func TestSliceToLower(t *testing.T) {
tests := []struct{
value []string
expected []string
}{
{[]string{"a","b","c"}, []string{"a", "b", "c"}},
{[]string{"a","B","c"}, []string{"a", "b", "c"}},
{[]string{"A","B","C"}, []string{"a", "b", "c"}},
}
for _, test := range tests {
res := sliceToLower(test.value)
for i, val := range res {
if val != test.expected[i] {
t.Errorf("Case mismatch. Expected %s, got %s", test.expected[i], res[i])
}
}
}
}
func listEqual(left, right []string) bool { func listEqual(left, right []string) bool {
if len(left) != len(right) { if len(left) != len(right) {
return false return false