fixes: returning json parsing, error messages, yaml header offsets
authortycho garen <garen@tychoish.com>
Sun, 7 Jul 2013 04:49:57 +0000 (00:49 -0400)
committertycho garen <garen@tychoish.com>
Sun, 7 Jul 2013 05:03:12 +0000 (01:03 -0400)
docs/content/doc/example.md
hugolib/page.go

index ab409c5954e3cb6e28bd0b48de7e0d7242f1c8be..51e3c160e04a73a99c89b64946032a4bd8bcaa5f 100644 (file)
@@ -16,7 +16,7 @@ Somethings are better shown than explained. The following is a very basic exampl
     Topics": [ "Development", "GoLang" ]
     Slug": "nitro"
     project_url": "http://github.com/spf13/nitro"
-    ...
+    ---
 
     # Nitro
 
index a1bfffe3da3a30b5aaf1860b3a96da7599c44598..b0e796e97166bc468376318a368643310d916392 100644 (file)
@@ -165,14 +165,13 @@ func (page *Page) parseYamlMetaData(data []byte) ([]string, error) {
                }
 
                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 @@ func (page *Page) parseJsonMetaData(data []byte) ([]string, error) {
                }
        }
 
-       err = page.handleJsonMetaData([]byte(strings.Join(datum, "\n")))
-
+       err = page.handleMetaData(page.handleJsonMetaData([]byte(strings.Join(datum, "\n"))))
        return lines, err
 }
 
@@ -220,11 +218,25 @@ func (p *Page) Permalink() template.HTML {
        }
 }
 
-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) {
@@ -271,8 +283,8 @@ func (page *Page) handleYamlMetaData(datum []byte) error {
                        }
                }
        }
-       //Printer(page.Params)
        return nil
+
 }
 
 func (page *Page) GetParam(key string) interface{} {
@@ -388,7 +400,7 @@ func (page *Page) convertRestructuredText(lines []string) {
        var out bytes.Buffer
        cmd.Stdout = &out
        if err := cmd.Run(); err != nil {
-               print(err)
+               fmt.Println(err)
        }
 
        content := out.String()