func (self *Options) StringSlice(key string) []string { value, err := cast.ToStringSliceE(self.Interface(key)) if err != nil { self.log.Printf("%s for key '%s'", err.Error(), key) } return value }
func (p *Page) Menus() PageMenus { p.pageMenusInit.Do(func() { p.pageMenus = PageMenus{} if ms, ok := p.Params["menu"]; ok { link, _ := p.RelPermalink() me := MenuEntry{Name: p.LinkTitle(), Weight: p.Weight, URL: link} // Could be the name of the menu to attach it to mname, err := cast.ToStringE(ms) if err == nil { me.Menu = mname p.pageMenus[mname] = &me return } // Could be a slice of strings mnames, err := cast.ToStringSliceE(ms) if err == nil { for _, mname := range mnames { me.Menu = mname p.pageMenus[mname] = &me } return } // Could be a structured menu entry menus, err := cast.ToStringMapE(ms) if err != nil { jww.ERROR.Printf("unable to process menus for %q\n", p.Title) } for name, menu := range menus { menuEntry := MenuEntry{Name: p.LinkTitle(), URL: link, Weight: p.Weight, Menu: name} if menu != nil { jww.DEBUG.Printf("found menu: %q, in %q\n", name, p.Title) ime, err := cast.ToStringMapE(menu) if err != nil { jww.ERROR.Printf("unable to process menus for %q: %s", p.Title, err) } menuEntry.marshallMap(ime) } p.pageMenus[name] = &menuEntry } } }) return p.pageMenus }
func (page *Page) Menus() PageMenus { ret := PageMenus{} if ms, ok := page.Params["menu"]; ok { link, _ := page.Permalink() me := MenuEntry{Name: page.LinkTitle(), Weight: page.Weight, Url: link} // Could be the name of the menu to attach it to mname, err := cast.ToStringE(ms) if err == nil { me.Menu = mname ret[mname] = &me return ret } // Could be an slice of strings mnames, err := cast.ToStringSliceE(ms) if err == nil { for _, mname := range mnames { me.Menu = mname ret[mname] = &me return ret } } // Could be a structured menu entry menus, err := cast.ToStringMapE(ms) if err != nil { jww.ERROR.Printf("unable to process menus for %q\n", page.Title) } for name, menu := range menus { menuEntry := MenuEntry{Name: page.LinkTitle(), Url: link, Weight: page.Weight, Menu: name} jww.DEBUG.Printf("found menu: %q, in %q\n", name, page.Title) ime, err := cast.ToStringMapE(menu) if err != nil { jww.ERROR.Printf("unable to process menus for %q\n", page.Title) } menuEntry.MarshallMap(ime) ret[name] = &menuEntry } return ret } return nil }
func TestConvertAllDocs(t *testing.T) { err := convertAllDocs() assert.Equal(t, nil, err) metadata_en, content_en, err := getMetadata("content/doc/commands/hugo_new_en.md") assert.Equal(t, nil, err) docs_en, err := cast.ToStringSliceE(metadata_en["doc"]) assert.Equal(t, nil, err) assert.Equal(t, "commands_en", docs_en[0]) assert.NotEqual(t, 0, len(content_en)) metadata, content, err := getMetadata("content/doc/commands/hugo_new.md") assert.Equal(t, nil, err) docs, err := cast.ToStringSliceE(metadata["doc"]) assert.Equal(t, nil, err) assert.Equal(t, "commands", docs[0]) assert.NotEqual(t, 0, len(content)) // exclude showcase dir _, err = os.Stat("/content/doc/showcase/spf13.md") assert.True(t, os.IsNotExist(err)) }