- комментарии, тексты ошибок, вывод CLI и сообщения тестов теперь на английском - по-русски остались только литералы словаря ru и содержимое фикстур: это данные под проверкой, а не текст инструмента - согласование числительных в итоге упростилось до английского plural
42 lines
929 B
Go
42 lines
929 B
Go
package check
|
|
|
|
import (
|
|
"unicode"
|
|
"unicode/utf8"
|
|
)
|
|
|
|
// letterAt reports whether offset i holds a letter or a digit. Cyrillic takes
|
|
// two bytes in UTF-8, so a single byte is not enough to decide.
|
|
func letterAt(text string, i int) bool {
|
|
if i >= len(text) {
|
|
return false
|
|
}
|
|
r, _ := utf8.DecodeRuneInString(text[i:])
|
|
return unicode.IsLetter(r) || unicode.IsDigit(r)
|
|
}
|
|
|
|
// letterBefore reports whether a letter or a digit stands before offset i.
|
|
func letterBefore(text string, i int) bool {
|
|
if i <= 0 {
|
|
return false
|
|
}
|
|
r, _ := utf8.DecodeLastRuneInString(text[:i])
|
|
return unicode.IsLetter(r) || unicode.IsDigit(r)
|
|
}
|
|
|
|
func digitAt(text string, i int) bool {
|
|
if i >= len(text) {
|
|
return false
|
|
}
|
|
r, _ := utf8.DecodeRuneInString(text[i:])
|
|
return unicode.IsDigit(r)
|
|
}
|
|
|
|
func digitBefore(text string, i int) bool {
|
|
if i <= 0 {
|
|
return false
|
|
}
|
|
r, _ := utf8.DecodeLastRuneInString(text[:i])
|
|
return unicode.IsDigit(r)
|
|
}
|