diff options
Diffstat (limited to 'vendor/gitlab.com/golang-commonmark/linkify/url.go')
-rw-r--r-- | vendor/gitlab.com/golang-commonmark/linkify/url.go | 404 |
1 files changed, 0 insertions, 404 deletions
diff --git a/vendor/gitlab.com/golang-commonmark/linkify/url.go b/vendor/gitlab.com/golang-commonmark/linkify/url.go deleted file mode 100644 index b2a21bbd..00000000 --- a/vendor/gitlab.com/golang-commonmark/linkify/url.go +++ /dev/null @@ -1,404 +0,0 @@ -// 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/utf8" - -func atoi3(s string, start int) (int, bool) { - n := 0 - var i int - for i = start; i < len(s) && digit(s[i]); i++ { - n = n*10 + int(s[i]-'0') - if n > 255 { - return 0, false - } - } - if i == start { - return 0, false - } - return i, true -} - -func skipIPv4(s string) (_ int, _ bool) { - j := 0 - for i := 0; i < 4; i++ { - if j >= len(s) { - return - } - if i > 0 { - if s[j] != '.' { - return - } - j++ - } - n, ok := atoi3(s, j) - if !ok { - return - } - j = n - } - return j, true -} - -func atoi5(s string, start int) (int, bool) { - n := 0 - var i int - for i = start; i < len(s) && digit(s[i]); i++ { - n = n*10 + int(s[i]-'0') - if n > 65535 { - return 0, false - } - } - if i == start || n == 0 { - return 0, false - } - return i, true -} - -func skipPort(s string, start int) int { - if start >= len(s) || s[start] != ':' { - return start - } - end, ok := atoi5(s, start+1) - if !ok { - return start - } - return end -} - -func skipPath(s string, start int) int { - if start >= len(s) || s[start] != '/' { - return start // skip empty path - } - var stack []rune - var notClosedIndex int - var nHyphen int - end := start + 1 -loop: - for end < len(s) { - r, rlen := utf8.DecodeRuneInString(s[end:]) - if r == utf8.RuneError { - nHyphen = 0 - break - } - - switch { - case isUnreserved(r): - if r == '-' { - nHyphen++ - if nHyphen > 2 { - break loop - } - } else { - nHyphen = 0 - } - case isSubDelimiter(r) || r == '[' || r == ']': - nHyphen = 0 - switch r { - case '[', '(': - if len(stack) == 0 { - notClosedIndex = end - } - stack = append(stack, r) - case ']', ')': - opening := '[' - if r == ')' { - opening = '(' - } - if len(stack) == 0 || stack[len(stack)-1] != opening { - break loop - } - stack = stack[:len(stack)-1] - } - case r == '/' || r == ':' || r == '@': - nHyphen = 0 - case r == '%': - nHyphen = 0 - if end+2 >= len(s) { - break loop - } - if !(hexDigit(s[end+1]) && - hexDigit(s[end+2])) { - break loop - } - end += 2 - default: - nHyphen = 0 - if r != ' ' || len(stack) == 0 { - break loop - } - } - end += rlen - } - if len(stack) > 0 { - return notClosedIndex - } - if nHyphen > 0 { - return end - nHyphen + 1 - } - return end -} - -func skipQuery(s string, start int) int { - if start >= len(s) || s[start] != '?' { - return start - } - var stack []rune - var notClosedIndex int - var nHyphen int - end := start + 1 -loop: - for end < len(s) { - r, rlen := utf8.DecodeRuneInString(s[end:]) - if r == utf8.RuneError { - nHyphen = 0 - break - } - - switch { - case isUnreserved(r): - if r == '-' { - nHyphen++ - if nHyphen > 1 { - break loop - } - } else { - nHyphen = 0 - } - case isSubDelimiter(r) || r == '[' || r == ']': - nHyphen = 0 - switch r { - case '[', '(': - if len(stack) == 0 { - notClosedIndex = end - } - stack = append(stack, r) - case ']', ')': - opening := '[' - if r == ')' { - opening = '(' - } - if len(stack) == 0 || stack[len(stack)-1] != opening { - break loop - } - stack = stack[:len(stack)-1] - } - case r == '?' || r == '/' || r == ':' || r == '@': - nHyphen = 0 - case r == '%': - nHyphen = 0 - if end+2 >= len(s) { - break loop - } - if !(hexDigit(s[end+1]) && - hexDigit(s[end+2])) { - break loop - } - end += 2 - default: - nHyphen = 0 - if r != ' ' || len(stack) == 0 { - break loop - } - } - end += rlen - } - if len(stack) > 0 { - return notClosedIndex - } - if nHyphen > 0 { - return end - nHyphen + 1 - } - return end -} - -func skipFragment(s string, start int) int { - if start >= len(s) || s[start] != '#' { - return start - } - var stack []rune - var notClosedIndex int - var nHyphen int - end := start + 1 -loop: - for end < len(s) { - r, rlen := utf8.DecodeRuneInString(s[end:]) - if r == utf8.RuneError { - nHyphen = 0 - break - } - - switch { - case isUnreserved(r): - if r == '-' { - nHyphen++ - if nHyphen > 1 { - break loop - } - } else { - nHyphen = 0 - } - case isSubDelimiter(r) || r == '[' || r == ']': - nHyphen = 0 - switch r { - case '[', '(': - if len(stack) == 0 { - notClosedIndex = end - } - stack = append(stack, r) - case ']', ')': - opening := '[' - if r == ')' { - opening = '(' - } - if len(stack) == 0 || stack[len(stack)-1] != opening { - break loop - } - stack = stack[:len(stack)-1] - } - case r == '?' || r == '/' || r == ':' || r == '@': - nHyphen = 0 - case r == '%': - nHyphen = 0 - if end+2 >= len(s) { - break loop - } - if !(hexDigit(s[end+1]) && - hexDigit(s[end+2])) { - break loop - } - end += 2 - default: - nHyphen = 0 - if r != ' ' || len(stack) == 0 { - break loop - } - } - end += rlen - } - if len(stack) > 0 { - return notClosedIndex - } - if nHyphen > 0 { - return end - nHyphen + 1 - } - return end -} - -func unskipPunct(s string, start int) int { - end := start - 1 - if end < 0 || end >= len(s) || !basicPunct[s[end]] { - return start - } - return end -} - -func findHostnameStart(s string, start int) (_ int, _ bool) { - end := start - lastDot := true - nHyphen := 0 -loop: - for end > 0 { - r, rlen := utf8.DecodeLastRuneInString(s[:end]) - if r == utf8.RuneError { - return - } - - switch { - case r == '.': - if nHyphen > 0 { - return - } - lastDot = true - case r == '-': - if end == start { - return - } - if lastDot { - return - } - nHyphen++ - if nHyphen == 3 { - return - } - case r == ':' || r == '/' || r == '\\' || r == '_': - return - case isPunctOrSpaceOrControl(r): - break loop - default: - lastDot = false - nHyphen = 0 - } - end -= rlen - } - if lastDot || nHyphen > 0 { - return - } - return end, true -} - -func findHostnameEnd(s string, start int) (_ int, _ int, _ bool) { - end := start - lastDot := false - lastDotPos := -1 - nHyphen := 0 -loop: - for end < len(s) { - r, rlen := utf8.DecodeRuneInString(s[end:]) - if r == utf8.RuneError { - return - } - - switch { - case r == '.': - if nHyphen > 0 { - return - } - if lastDot { - break loop - } - lastDot = true - lastDotPos = end - nHyphen = 0 - case r == '-': - lastDot = false - if end == start { - return - } - if lastDot { - return - } - nHyphen++ - if nHyphen == 3 { - break loop - } - case r == '\\' || r == '_': - return - case isPunctOrSpaceOrControl(r): - break loop - default: - lastDot = false - nHyphen = 0 - } - end += rlen - } - - if nHyphen > 0 { - end -= nHyphen - } else if lastDot { - if s[end-1] == '.' { - end-- - } - lastDotPos = end - 1 - for lastDotPos >= start && s[lastDotPos] != '.' { - lastDotPos-- - } - if lastDotPos < start { - lastDotPos = -1 - } - } - - return end, lastDotPos, true -} |