intoc
https://gyazo.com/19fd6514ad67b6dff3a6118f060fd5f0
GitHub
Qiita解説
sta.icon
見出しのアンカーつくるところが一番苦労した
同じページ名があったら-(番号)つけて重複防ぐ
記号系や日本語系(の一部)は無かったことにしてしまうことが多い
この一部の特定に一番苦労した
code:go
func sectionname2anchor(sectionname string, dup *Duplicator) string {
ret := sectionname
ret = strings.ToLower(ret)
ret = strings.Replace(ret, " ", "-", -1)
reAsciiMarksWithoutHypenAndUnderscore := regexp.MustCompile("[!\"#$%&'\\(\\)\\*\\+,\\./:;<=>?@\\\\\\\\\\^`\\{\\|\\}~]") ret = reAsciiMarksWithoutHypenAndUnderscore.ReplaceAllString(ret, "")
ret = reJapaneseMarks.ReplaceAllString(ret, "")
dupCount := dup.Add(ret)
if dupCount > 0 {
ret = fmt.Sprintf("%s-%d", ret, dupCount)
}
return ret
}