package cfg // See https://mycorrhiza.wiki/hypha/configuration/header import ( "github.com/bouncepaw/mycomarkup/blocks" "strings" ) // HeaderLinks is a list off current header links. Feel free to iterate it directly but do not modify it by yourself. Call ParseHeaderLinks if you need to set new header links. var HeaderLinks []HeaderLink // SetDefaultHeaderLinks sets the header links to the default list of: home hypha, recent changes, hyphae list, random hypha. func SetDefaultHeaderLinks() { HeaderLinks = []HeaderLink{ {"/recent-changes", "Recent changes"}, {"/list", "All hyphae"}, {"/random", "Random"}, {"/help", "Help"}, } } // ParseHeaderLinks extracts all rocketlinks from the given text and saves them as header links. func ParseHeaderLinks(text string) { HeaderLinks = []HeaderLink{} for _, line := range strings.Split(text, "\n") { // There is a false positive when parsing markup like that: // // ``` // => this is not a link, it is part of the preformatted block // ``` // // I do not really care. if strings.HasPrefix(line, "=>") { rl := blocks.MakeRocketLink(line, HeaderLinksHypha) href, display := rl.Href(), rl.Display() HeaderLinks = append(HeaderLinks, HeaderLink{ Href: href, Display: display, }) } } } // HeaderLink represents a header link. Header links are the links shown in the top gray bar. type HeaderLink struct { // Href is the URL of the link. It goes .... Href string // Display is what is shown when the link is rendered. It goes here. Display string }