// SuffixMatch performs suffix-match func SuffixMatch(caseSensitive bool, forward bool, input []rune, pattern []rune) (int, int) { runes := util.TrimRight(input) trimmedLen := len(runes) diff := trimmedLen - len(pattern) if diff < 0 { return -1, -1 } for index, r := range pattern { char := runes[index+diff] if !caseSensitive { char = unicode.ToLower(char) } if char != r { return -1, -1 } } return trimmedLen - len(pattern), trimmedLen }
// SuffixMatch performs suffix-match func SuffixMatch(caseSensitive bool, forward bool, input []rune, pattern []rune) Result { runes := util.TrimRight(input) trimmedLen := len(runes) diff := trimmedLen - len(pattern) if diff < 0 { return Result{-1, -1, 0} } for index, r := range pattern { char := runes[index+diff] if !caseSensitive { char = unicode.ToLower(char) } if char != r { return Result{-1, -1, 0} } } lenPattern := len(pattern) sidx := trimmedLen - lenPattern eidx := trimmedLen return Result{int32(sidx), int32(eidx), evaluateBonus(caseSensitive, runes, pattern, sidx, eidx)} }