shithub: hugo

Download patch

ref: b024454ea99e647c2b85ce13b3c89c61a4cd0e54
parent: 67f4da30b184866434d14ae485e63910a66c62ef
author: tycho garen <[email protected]>
date: Sat Jul 6 20:49:57 EDT 2013

fixes: returning json parsing, error messages, yaml header offsets

--- a/docs/content/doc/example.md
+++ b/docs/content/doc/example.md
@@ -16,7 +16,7 @@
     Topics": [ "Development", "GoLang" ]
     Slug": "nitro"
     project_url": "http://github.com/spf13/nitro"
-    ...
+    ---
 
     # Nitro
 
--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -165,14 +165,13 @@
 		}
 
 		if found == 0 {
-			datum = lines[0: i+1]
-			lines = lines[i+1:]
+			datum = lines[1: i+2]
+			lines = lines[i+3:]
 			break
 		}
 	}
 
-	err = page.handleYamlMetaData([]byte(strings.Join(datum, "\n")))
-
+	err = page.handleMetaData(page.handleYamlMetaData([]byte(strings.Join(datum, "\n"))))
 	return lines, err
 }
 
@@ -203,8 +202,7 @@
 		}
 	}
 
-	err = page.handleJsonMetaData([]byte(strings.Join(datum, "\n")))
-
+	err = page.handleMetaData(page.handleJsonMetaData([]byte(strings.Join(datum, "\n"))))
 	return lines, err
 }
 
@@ -220,12 +218,26 @@
 	}
 }
 
-func (page *Page) handleYamlMetaData(datum []byte) error {
+func (page *Page) handleYamlMetaData(datum []byte) interface{} {
 	m := map[string]interface{}{}
 	if err := goyaml.Unmarshal(datum, &m); err != nil {
-		return fmt.Errorf("Invalid YAML in $v \nError parsing page meta data: %s", page.FileName, err)
+		return fmt.Errorf("Invalid YAML in %s \nError parsing page meta data: %s", page.FileName, err)
 	}
+	return m
+}
 
+
+func (page *Page) handleJsonMetaData(datum []byte) interface{} {
+	var f interface{}
+	if err := json.Unmarshal(datum, &f); err != nil {
+		return fmt.Errorf("Invalide JSON in $v \nError parsing page meta data: %s", page.FileName, err)
+	}
+	return f
+}
+
+func (page *Page) handleMetaData(f interface{}) error {
+	m := f.(map[string]interface{})
+
 	for k, v := range m {
 		switch strings.ToLower(k) {
 		case "title":
@@ -271,8 +283,8 @@
 			}
 		}
 	}
-	//Printer(page.Params)
 	return nil
+
 }
 
 func (page *Page) GetParam(key string) interface{} {
@@ -388,7 +400,7 @@
 	var out bytes.Buffer
 	cmd.Stdout = &out
 	if err := cmd.Run(); err != nil {
-		print(err)
+		fmt.Println(err)
 	}
 
 	content := out.String()