in menuvalidator/main.go [54:88]
func recursivelyValidate(entries *[]MenuEntry, level int) bool {
did_fail := false
for i, entry := range *entries {
if entry.Text == "" {
fmt.Printf("Menu entry %d at sublevel %d has no menu text\n", i, level)
did_fail = true
}
if entry.Type != "link" && entry.Type != "submenu" {
fmt.Printf("Menu entry %d at level %d (%s) has an invalid type %s - expecting 'link' or 'submenu'\n", i, level, entry.Text, entry.Type)
did_fail = true
}
if entry.Href == "" && entry.Content == nil {
fmt.Printf("Menu entry %d at level %d (%s %s) has blank href and content\n", i, level, entry.Type, entry.Text)
did_fail = true
}
if entry.Href != "" && entry.Content != nil {
fmt.Printf("Menu entry %d at level %d (%s %s) has both href and content set\n", i, level, entry.Type, entry.Text)
did_fail = true
}
if entry.Href != "" {
_, urlErr := url.Parse(entry.Href)
if urlErr != nil {
fmt.Printf("Link for menu entry %d at level %d (%s %s) is not valid: %s\n", i, level, entry.Type, entry.Text, urlErr)
did_fail = true
}
}
if entry.Content != nil && len(entry.Content) > 0 {
subLevelFailed := recursivelyValidate(&entry.Content, level+1)
if subLevelFailed {
did_fail = true
}
}
}
return did_fail
}