aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/yuin/goldmark/util/util.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/yuin/goldmark/util/util.go')
-rw-r--r--vendor/github.com/yuin/goldmark/util/util.go88
1 files changed, 44 insertions, 44 deletions
diff --git a/vendor/github.com/yuin/goldmark/util/util.go b/vendor/github.com/yuin/goldmark/util/util.go
index c074d72..68a84bf 100644
--- a/vendor/github.com/yuin/goldmark/util/util.go
+++ b/vendor/github.com/yuin/goldmark/util/util.go
@@ -6,6 +6,7 @@ import (
"io"
"net/url"
"regexp"
+ "slices"
"sort"
"strconv"
"unicode"
@@ -127,13 +128,13 @@ func IsBlank(bs []byte) bool {
// VisualizeSpaces visualize invisible space characters.
func VisualizeSpaces(bs []byte) []byte {
- bs = bytes.Replace(bs, []byte(" "), []byte("[SPACE]"), -1)
- bs = bytes.Replace(bs, []byte("\t"), []byte("[TAB]"), -1)
- bs = bytes.Replace(bs, []byte("\n"), []byte("[NEWLINE]\n"), -1)
- bs = bytes.Replace(bs, []byte("\r"), []byte("[CR]"), -1)
- bs = bytes.Replace(bs, []byte("\v"), []byte("[VTAB]"), -1)
- bs = bytes.Replace(bs, []byte("\x00"), []byte("[NUL]"), -1)
- bs = bytes.Replace(bs, []byte("\ufffd"), []byte("[U+FFFD]"), -1)
+ bs = bytes.ReplaceAll(bs, []byte(" "), []byte("[SPACE]"))
+ bs = bytes.ReplaceAll(bs, []byte("\t"), []byte("[TAB]"))
+ bs = bytes.ReplaceAll(bs, []byte("\n"), []byte("[NEWLINE]\n"))
+ bs = bytes.ReplaceAll(bs, []byte("\r"), []byte("[CR]"))
+ bs = bytes.ReplaceAll(bs, []byte("\v"), []byte("[VTAB]"))
+ bs = bytes.ReplaceAll(bs, []byte("\x00"), []byte("[NUL]"))
+ bs = bytes.ReplaceAll(bs, []byte("\ufffd"), []byte("[U+FFFD]"))
return bs
}
@@ -197,13 +198,15 @@ func DedentPosition(bs []byte, currentPos, width int) (pos, padding int) {
w := 0
l := len(bs)
i := 0
+loop:
for ; i < l; i++ {
- if bs[i] == '\t' {
+ switch bs[i] {
+ case '\t':
w += TabWidth(currentPos + w)
- } else if bs[i] == ' ' {
+ case ' ':
w++
- } else {
- break
+ default:
+ break loop
}
}
if w >= width {
@@ -225,13 +228,15 @@ func DedentPositionPadding(bs []byte, currentPos, paddingv, width int) (pos, pad
w := 0
i := 0
l := len(bs)
+loop:
for ; i < l; i++ {
- if bs[i] == '\t' {
+ switch bs[i] {
+ case '\t':
w += TabWidth(currentPos + w)
- } else if bs[i] == ' ' {
+ case ' ':
w++
- } else {
- break
+ default:
+ break loop
}
}
if w >= width {
@@ -242,17 +247,16 @@ func DedentPositionPadding(bs []byte, currentPos, paddingv, width int) (pos, pad
// IndentWidth calculate an indent width for the given line.
func IndentWidth(bs []byte, currentPos int) (width, pos int) {
- l := len(bs)
- for i := 0; i < l; i++ {
- b := bs[i]
- if b == ' ' {
+ for i := range len(bs) {
+ switch bs[i] {
+ case ' ':
width++
pos++
- } else if b == '\t' {
+ case '\t':
width += TabWidth(currentPos + width)
pos++
- } else {
- break
+ default:
+ return
}
}
return
@@ -315,12 +319,13 @@ func FindClosure(bs []byte, opener, closure byte, codeSpan, allowNesting bool) i
}
}
} else if (codeSpan && codeSpanOpener == 0) || !codeSpan {
- if c == closure {
+ switch c {
+ case closure:
opened--
if opened == 0 {
return i
}
- } else if c == opener {
+ case opener:
if !allowNesting {
return -1
}
@@ -340,7 +345,7 @@ func TrimLeft(source, b []byte) []byte {
for ; i < len(source); i++ {
c := source[i]
found := false
- for j := 0; j < len(b); j++ {
+ for j := range len(b) {
if c == b[j] {
found = true
break
@@ -359,7 +364,7 @@ func TrimRight(source, b []byte) []byte {
for ; i >= 0; i-- {
c := source[i]
found := false
- for j := 0; j < len(b); j++ {
+ for j := range len(b) {
if c == b[j] {
found = true
break
@@ -532,8 +537,9 @@ var htmlQuote = []byte("&quot;")
var htmlAmp = []byte("&amp;")
var htmlLess = []byte("&lt;")
var htmlGreater = []byte("&gt;")
+var htmlNull = []byte("\ufffd")
-var htmlEscapeTable = [256]*[]byte{nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, &htmlQuote, nil, nil, nil, &htmlAmp, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, &htmlLess, nil, &htmlGreater, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil} //nolint:golint,lll
+var htmlEscapeTable = [256]*[]byte{&htmlNull, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, &htmlQuote, nil, nil, nil, &htmlAmp, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, &htmlLess, nil, &htmlGreater, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil} //nolint:golint,lll
// EscapeHTMLByte returns HTML escaped bytes if the given byte should be escaped,
// otherwise nil.
@@ -549,7 +555,7 @@ func EscapeHTMLByte(b byte) []byte {
func EscapeHTML(v []byte) []byte {
cob := NewCopyOnWriteBuffer(v)
n := 0
- for i := 0; i < len(v); i++ {
+ for i := range len(v) {
c := v[i]
escaped := htmlEscapeTable[c]
if escaped != nil {
@@ -865,7 +871,7 @@ type BufWriter interface {
// A PrioritizedValue struct holds pair of an arbitrary value and a priority.
type PrioritizedValue struct {
// Value is an arbitrary value that you want to prioritize.
- Value interface{}
+ Value any
// Priority is a priority of the value.
Priority int
}
@@ -881,7 +887,7 @@ func (s PrioritizedSlice) Sort() {
}
// Remove removes the given value from this slice.
-func (s PrioritizedSlice) Remove(v interface{}) PrioritizedSlice {
+func (s PrioritizedSlice) Remove(v any) PrioritizedSlice {
i := 0
found := false
for ; i < len(s); i++ {
@@ -893,11 +899,11 @@ func (s PrioritizedSlice) Remove(v interface{}) PrioritizedSlice {
if !found {
return s
}
- return append(s[:i], s[i+1:]...)
+ return slices.Delete(s, i, i+1)
}
// Prioritized returns a new PrioritizedValue.
-func Prioritized(v interface{}, priority int) PrioritizedValue {
+func Prioritized(v any, priority int) PrioritizedValue {
return PrioritizedValue{v, priority}
}
@@ -952,7 +958,7 @@ func NewBytesFilterString(elements string) BytesFilter {
slots: make([][][]byte, 64),
}
start := 0
- for i := 0; i < len(elements); i++ {
+ for i := range len(elements) {
if elements[i] == ',' {
s.Add(StringToReadOnlyBytes(elements[start:i]))
start = i + 1
@@ -967,11 +973,8 @@ func NewBytesFilterString(elements string) BytesFilter {
func (s *bytesFilter) Add(b []byte) {
l := len(b)
- m := s.threshold
- if l < s.threshold {
- m = l
- }
- for i := 0; i < m; i++ {
+ m := min(l, s.threshold)
+ for i := range m {
s.chars[b[i]] |= 1 << uint8(i)
}
h := bytesHash(b) % uint64(len(s.slots))
@@ -1007,7 +1010,7 @@ func (s *bytesFilter) ExtendString(elements string) BytesFilter {
newFilter.slots[k] = v
}
start := 0
- for i := 0; i < len(elements); i++ {
+ for i := range len(elements) {
if elements[i] == ',' {
newFilter.Add(StringToReadOnlyBytes(elements[start:i]))
start = i + 1
@@ -1021,11 +1024,8 @@ func (s *bytesFilter) ExtendString(elements string) BytesFilter {
func (s *bytesFilter) Contains(b []byte) bool {
l := len(b)
- m := s.threshold
- if l < s.threshold {
- m = l
- }
- for i := 0; i < m; i++ {
+ m := min(l, s.threshold)
+ for i := range m {
if (s.chars[b[i]] & (1 << uint8(i))) == 0 {
return false
}