repochecker/grammalecte: Refactor grammar passage extraction
This commit is contained in:
parent
ccc2c5d1d7
commit
2381dfe4f5
|
@ -183,19 +183,11 @@ func grammalecte(name string, text string, paragraph int, exceptions *sync.Check
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, gerror := range data.GrammarErrors {
|
for _, gerror := range data.GrammarErrors {
|
||||||
if data.Text[0] == '>' && gerror.RuleId == "poncfin_règle1" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if gerror.RuleId == "mc_mot_composé" && ((gerror.End+1 < len(data.Text) && gerror.Start+1 < len(data.Text) && exceptions.HasException(fmt.Sprintf(":spelling:%s", data.Text[gerror.Start+1:gerror.End+1]))) || exceptions.HasException(fmt.Sprintf(":spelling:%s", data.Text[gerror.Start:gerror.End]))) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if (paragraph == 0 && exceptions.HasException(fmt.Sprintf(":%d:%s", data.Paragraph, gerror.RuleId))) || (paragraph < 0 && exceptions.HasException(fmt.Sprintf(":%s", gerror.RuleId))) || (paragraph > 0 && exceptions.HasException(fmt.Sprintf(":%d:%s", paragraph, gerror.RuleId))) {
|
if (paragraph == 0 && exceptions.HasException(fmt.Sprintf(":%d:%s", data.Paragraph, gerror.RuleId))) || (paragraph < 0 && exceptions.HasException(fmt.Sprintf(":%s", gerror.RuleId))) || (paragraph > 0 && exceptions.HasException(fmt.Sprintf(":%d:%s", paragraph, gerror.RuleId))) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
errs = append(errs, lib.GrammarError{
|
err := lib.GrammarError{
|
||||||
Prefix: name,
|
Prefix: name,
|
||||||
Source: data.Text,
|
Source: data.Text,
|
||||||
NSource: data.Paragraph,
|
NSource: data.Paragraph,
|
||||||
|
@ -206,7 +198,13 @@ func grammalecte(name string, text string, paragraph int, exceptions *sync.Check
|
||||||
Message: gerror.Message,
|
Message: gerror.Message,
|
||||||
Suggestions: gerror.Suggestions,
|
Suggestions: gerror.Suggestions,
|
||||||
URL: gerror.URL,
|
URL: gerror.URL,
|
||||||
})
|
}
|
||||||
|
|
||||||
|
if err.RuleId == "mc_mot_composé" && exceptions.HasException(fmt.Sprintf(":spelling:%s", err.GetPassage())) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
errs = append(errs, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
"unicode/utf8"
|
||||||
)
|
)
|
||||||
|
|
||||||
const LOG_PREFIX_LEN = 20
|
const LOG_PREFIX_LEN = 20
|
||||||
|
@ -72,6 +73,22 @@ func (e GrammarError) Error() string {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e GrammarError) GetPassage() string {
|
||||||
|
nb := 0
|
||||||
|
var ret []byte
|
||||||
|
for _, r := range e.Source {
|
||||||
|
if nb >= e.End {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if nb >= e.Start {
|
||||||
|
ret = utf8.AppendRune(ret, r)
|
||||||
|
}
|
||||||
|
nb += 1
|
||||||
|
}
|
||||||
|
|
||||||
|
return string(ret)
|
||||||
|
}
|
||||||
|
|
||||||
func underline(prefix, start, end int) string {
|
func underline(prefix, start, end int) string {
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue