suite check: реализована проверка целостности набора
- разбор документа по языку конвенций: шапка, области правил, блоки под метками - проверки формы правила, распространения, ссылок и самого suite.toml - словарь языка живёт в бинаре реестром «версия × естественный язык», темы и префиксы берутся только из манифеста
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package check
|
||||
|
||||
import (
|
||||
"unicode"
|
||||
"unicode/utf8"
|
||||
)
|
||||
|
||||
// letterAt отвечает, стоит ли по смещению i буква или цифра. Кириллица в UTF-8
|
||||
// занимает два байта, поэтому решать по одному байту нельзя.
|
||||
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 отвечает, стоит ли перед смещением 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)
|
||||
}
|
||||
Reference in New Issue
Block a user