wiki/util.go
Peter Stuifzand ef5e074cb0
All checks were successful
continuous-integration/drone/push Build is passing
Backref basics
2020-05-07 15:20:36 +02:00

55 lines
1019 B
Go

package main
import (
"math/rand"
"regexp"
"strings"
"time"
)
type ParsedLink struct {
Name string
PageName string
}
var random *rand.Rand
func init() {
random = rand.New(rand.NewSource(time.Now().UnixNano()))
}
const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
func RandStringBytes(n int) string {
b := make([]byte, n)
for i := range b {
b[i] = letterBytes[rand.Intn(len(letterBytes))]
}
return string(b)
}
func ParseLinks(content string) ([]ParsedLink, error) {
hrefRE := regexp.MustCompile(`#?\[\[\s*([\w.\- ]+)\s*\]\]`)
links := hrefRE.FindAllStringSubmatch(content, -1)
var result []ParsedLink
for _, matches := range links {
link := matches[0]
if link[0] == '#' {
link = strings.TrimPrefix(link, "#[[")
} else {
link = strings.TrimPrefix(link, "[[")
}
link = strings.TrimSuffix(link, "]]")
link = strings.TrimSpace(link)
l := strings.Replace(link, " ", "_", -1)
result = append(result, ParsedLink{link, l})
}
return result, nil
}