add vendoring
This commit is contained in:
39
vendor/github.com/jhillyerd/enmime/internal/stringutil/find.go
generated
vendored
Normal file
39
vendor/github.com/jhillyerd/enmime/internal/stringutil/find.go
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
package stringutil
|
||||
|
||||
// FindUnquoted returns the indexes of the instance of v in s, or empty slice if v is not present in s.
|
||||
// It ignores v present inside quoted runs.
|
||||
func FindUnquoted(s string, v rune, quote rune) []int {
|
||||
escaped := false
|
||||
quoted := false
|
||||
indexes := make([]int, 0)
|
||||
quotedIndexes := make([]int, 0)
|
||||
|
||||
for i := 0; i < len(s); i++ {
|
||||
switch rune(s[i]) {
|
||||
case escape:
|
||||
escaped = !escaped // escape can escape itself.
|
||||
case quote:
|
||||
if escaped {
|
||||
escaped = false
|
||||
continue
|
||||
}
|
||||
|
||||
quoted = !quoted
|
||||
if !quoted {
|
||||
quotedIndexes = quotedIndexes[:0] // drop possible indices inside quoted segment
|
||||
}
|
||||
case v:
|
||||
escaped = false
|
||||
if quoted {
|
||||
quotedIndexes = append(quotedIndexes, i)
|
||||
} else {
|
||||
indexes = append(indexes, i)
|
||||
}
|
||||
default:
|
||||
escaped = false
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return append(indexes, quotedIndexes...)
|
||||
}
|
||||
Reference in New Issue
Block a user