Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
738 B
45 lines
738 B
package match |
|
|
|
import ( |
|
"fmt" |
|
"github.com/gobwas/glob/util/strings" |
|
) |
|
|
|
type Any struct { |
|
Separators []rune |
|
} |
|
|
|
func NewAny(s []rune) Any { |
|
return Any{s} |
|
} |
|
|
|
func (self Any) Match(s string) bool { |
|
return strings.IndexAnyRunes(s, self.Separators) == -1 |
|
} |
|
|
|
func (self Any) Index(s string) (int, []int) { |
|
found := strings.IndexAnyRunes(s, self.Separators) |
|
switch found { |
|
case -1: |
|
case 0: |
|
return 0, segments0 |
|
default: |
|
s = s[:found] |
|
} |
|
|
|
segments := acquireSegments(len(s)) |
|
for i := range s { |
|
segments = append(segments, i) |
|
} |
|
segments = append(segments, len(s)) |
|
|
|
return 0, segments |
|
} |
|
|
|
func (self Any) Len() int { |
|
return lenNo |
|
} |
|
|
|
func (self Any) String() string { |
|
return fmt.Sprintf("<any:![%s]>", string(self.Separators)) |
|
}
|
|
|