func recursivelyValidate()

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
}