fix tags not being in lowercase, #491
authorJoel Scoble <joel.scoble@outlook.com>
Tue, 9 Sep 2014 20:58:02 +0000 (15:58 -0500)
committerspf13 <steve.francia@gmail.com>
Thu, 11 Sep 2014 21:03:31 +0000 (17:03 -0400)
hugolib/page.go
hugolib/page_taxonomy_test.go
hugolib/page_test.go

index 15299e12caa5508c798db2f01875d36fe074be84..0a9648e5e54eb4bf9bf68bdc67fe3cd505668013 100644 (file)
@@ -431,7 +431,7 @@ func (page *Page) GetParam(key string) interface{} {
        case bool:
                return cast.ToBool(v)
        case string:
-               return cast.ToString(v)
+               return strings.ToLower(cast.ToString(v))
        case int64, int32, int16, int8, int:
                return cast.ToInt(v)
        case float64, float32:
@@ -439,7 +439,7 @@ func (page *Page) GetParam(key string) interface{} {
        case time.Time:
                return cast.ToTime(v)
        case []string:
-               return v
+               return sliceToLower(v.([]string))
        }
        return nil
 }
@@ -795,3 +795,17 @@ func (p *Page) TargetPath() (outfile string) {
 
        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
+}
index f372a595a4ac9e9fd579b4bccd6bf047d9787d2a..1b34015d3f708a3d4346dce90799c2ad306c5a22 100644 (file)
@@ -6,7 +6,7 @@ import (
 )
 
 var PAGE_YAML_WITH_TAXONOMIES_A = `---
-tags: ['a', 'b', 'c']
+tags: ['a', 'B', 'c']
 categories: 'd'
 ---
 YAML frontmatter with tags and categories taxonomy.`
@@ -14,20 +14,20 @@ YAML frontmatter with tags and categories taxonomy.`
 var PAGE_YAML_WITH_TAXONOMIES_B = `---
 tags:
  - "a"
- - "b"
+ - "B"
  - "c"
 categories: 'd'
 ---
 YAML frontmatter with tags and categories taxonomy.`
 
 var PAGE_YAML_WITH_TAXONOMIES_C = `---
-tags: 'e'
+tags: 'E'
 categories: 'd'
 ---
 YAML frontmatter with tags and categories taxonomy.`
 
 var PAGE_JSON_WITH_TAXONOMIES = `{
-  "categories": "d",
+  "categories": "D",
   "tags": [
     "a",
     "b",
@@ -37,7 +37,7 @@ var PAGE_JSON_WITH_TAXONOMIES = `{
 JSON Front Matter with tags and categories`
 
 var PAGE_TOML_WITH_TAXONOMIES = `+++
-tags = [ "a", "b", "c" ]
+tags = [ "a", "B", "c" ]
 categories = "d"
 +++
 TOML Front Matter with tags and categories`
index d5f6cf15dfa3c81df3cbaf0304a522914a26e61a..b8383f5027226ec9b4da74a687c0d23e8d4dda2d 100644 (file)
@@ -40,7 +40,7 @@ Leading
 {
 "title": "spf13-vim 3.0 release and new website",
 "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",
 "categories": [
     "Development",
@@ -55,7 +55,7 @@ Content of the file goes Here
 {
 "title": "spf13-vim 3.0 release and new website"
 "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"
 "categories": [
     "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 {
        if len(left) != len(right) {
                return false