1234567891011121314151617181920212223242526272829 |
- // Package sanitized_anchor_name provides a func to create sanitized anchor names.
- //
- // Its logic can be reused by multiple packages to create interoperable anchor names
- // and links to those anchors.
- //
- // At this time, it does not try to ensure that generated anchor names
- // are unique, that responsibility falls on the caller.
- package sanitized_anchor_name // import "github.com/shurcooL/sanitized_anchor_name"
- import "unicode"
- // Create returns a sanitized anchor name for the given text.
- func Create(text string) string {
- var anchorName []rune
- var futureDash = false
- for _, r := range []rune(text) {
- switch {
- case unicode.IsLetter(r) || unicode.IsNumber(r):
- if futureDash && len(anchorName) > 0 {
- anchorName = append(anchorName, '-')
- }
- futureDash = false
- anchorName = append(anchorName, unicode.ToLower(r))
- default:
- futureDash = true
- }
- }
- return string(anchorName)
- }
|