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

This commit is contained in:
tycho garen 2013-07-07 00:49:57 -04:00
parent 67f4da30b1
commit b024454ea9
2 changed files with 23 additions and 11 deletions

View file

@ -16,7 +16,7 @@ Somethings are better shown than explained. The following is a very basic exampl
Topics": [ "Development", "GoLang" ] Topics": [ "Development", "GoLang" ]
Slug": "nitro" Slug": "nitro"
project_url": "http://github.com/spf13/nitro" project_url": "http://github.com/spf13/nitro"
... ---
# Nitro # Nitro

View file

@ -165,14 +165,13 @@ func (page *Page) parseYamlMetaData(data []byte) ([]string, error) {
} }
if found == 0 { if found == 0 {
datum = lines[0: i+1] datum = lines[1: i+2]
lines = lines[i+1:] lines = lines[i+3:]
break break
} }
} }
err = page.handleYamlMetaData([]byte(strings.Join(datum, "\n"))) err = page.handleMetaData(page.handleYamlMetaData([]byte(strings.Join(datum, "\n"))))
return lines, err 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 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{}{} m := map[string]interface{}{}
if err := goyaml.Unmarshal(datum, &m); err != nil { 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 { for k, v := range m {
switch strings.ToLower(k) { switch strings.ToLower(k) {
@ -271,8 +283,8 @@ func (page *Page) handleYamlMetaData(datum []byte) error {
} }
} }
} }
//Printer(page.Params)
return nil return nil
} }
func (page *Page) GetParam(key string) interface{} { func (page *Page) GetParam(key string) interface{} {
@ -388,7 +400,7 @@ func (page *Page) convertRestructuredText(lines []string) {
var out bytes.Buffer var out bytes.Buffer
cmd.Stdout = &out cmd.Stdout = &out
if err := cmd.Run(); err != nil { if err := cmd.Run(); err != nil {
print(err) fmt.Println(err)
} }
content := out.String() content := out.String()