dispatch/vendor/github.com/golang-commonmark/markdown/linkify/charset.go
2017-07-17 23:11:36 +02:00

51 lines
1.1 KiB
Go

// Copyright 2015 The Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package linkify
import "unicode"
var (
trigger [256]bool
unreserved [256]bool
subdelims [256]bool
emailcs [256]bool
basicPunct [256]bool
)
func init() {
for _, b := range "-._~" {
unreserved[b] = true
}
for _, b := range "!$&'()*+,;=" {
subdelims[b] = true
}
for _, b := range "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&'*+/=?^_`{|}~-" {
emailcs[b] = true
}
for _, b := range ".,?!;:" {
basicPunct[b] = true
}
}
func isAllowedInEmail(r rune) bool {
return r < 0x7f && emailcs[r]
}
func isLetterOrDigit(r rune) bool {
return unicode.In(r, unicode.Letter, unicode.Digit)
}
func isPunctOrSpaceOrControl(r rune) bool {
return r == '<' || r == '>' || unicode.In(r, unicode.Punct, unicode.Space, unicode.Cc)
}
func isUnreserved(r rune) bool {
return (r < 0x7f && unreserved[r]) || isLetterOrDigit(r)
}
func isSubDelimiter(r rune) bool {
return r < 0x7f && subdelims[r]
}