1
0
mirror of https://github.com/ru-de/faq.git synced 2024-11-22 10:22:20 +00:00

add custom dictionary, minimum word length and better output

This commit is contained in:
Evgeniy Sokolov 2016-01-19 10:46:22 +01:00
parent fd05826a5b
commit a1d9ed43ce
3 changed files with 21 additions and 7 deletions

View File

@ -10,15 +10,17 @@ git diff HEAD^ --name-status | grep "^D" -v | awk '{print $2}' > changed_files
while read FILE; do while read FILE; do
echo -n "Проверка файла $FILE на опечатки... "; echo -n "Проверка файла $FILE на опечатки... ";
OUTPUT_RU=$(cat "$FILE" | hunspell -d ru_RU | $DIR/spell-checker); OUTPUT_RU=$(cat "$FILE" | hunspell -d russian-aot,en_US,de_DE,$DIR/dictionary | $DIR/spell-checker);
RU_EXIT_CODE=$? RU_EXIT_CODE=$?
OUTPUT_EN=$(cat "$FILE" | hunspell -d en_US | $DIR/spell-checker); OUTPUT_EN=$(cat "$FILE" | hunspell -d en_US,russian-aot,de_DE,$DIR/dictionary | $DIR/spell-checker);
EN_EXIT_CODE=$? EN_EXIT_CODE=$?
OUTPUT_DE=$(cat "$FILE" | hunspell -d de_DE,en_US,russian-aot,$DIR/dictionary | $DIR/spell-checker);
DE_EXIT_CODE=$?
if [ $RU_EXIT_CODE -ne 0 ] || [ $EN_EXIT_CODE -ne 0 ]; then if [ $RU_EXIT_CODE -ne 0 ] || [ $EN_EXIT_CODE -ne 0 ] || [ $DE_EXIT_CODE -ne 0 ]; then
EXIT_CODE=1; EXIT_CODE=1;
echo "ошибка"; echo "ошибка";
echo "$OUTPUT_RU\n$OUTPUT_EN" | sort -n -k2; echo "$OUTPUT_RU\n$OUTPUT_EN\n$OUTPUT_DE" | sort -n -k2 | uniq;
else else
echo "пройдена"; echo "пройдена";
fi fi

2
files/dictionary.dic Normal file
View File

@ -0,0 +1,2 @@
1
StVzo

View File

@ -4,6 +4,8 @@ import (
"fmt" "fmt"
"os" "os"
"bufio" "bufio"
"regexp"
"strings"
) )
@ -23,11 +25,18 @@ func main() {
_, ok := types["&"] _, ok := types["&"]
if ok { if ok {
var dropCol = regexp.MustCompile(`^([^ ]+) \d+ \d+:(.*)$`)
var minimumWord = regexp.MustCompile(`^[^ ]{3}`)
exitCode := 0
for _, result := range types["&"].results { for _, result := range types["&"].results {
fmt.Println("Строка " + fmt.Sprintf("%v", result.line) + ":" + result.word) if minimumWord.MatchString(result.word) {
exitCode = 1
fmt.Println("Строка " + fmt.Sprintf("%v", result.line) + ": " + dropCol.ReplaceAllString(result.word, "$1 >$2"))
}
} }
os.Exit(1) os.Exit(exitCode)
} }
} }
@ -44,6 +53,7 @@ func parseHunspellOutput(scanner *bufio.Scanner) map[string]*TypeResult {
line++; line++;
} else { } else {
resultType := text[0:1] resultType := text[0:1]
typeResult, ok := types[resultType] typeResult, ok := types[resultType]
if !ok { if !ok {
@ -51,7 +61,7 @@ func parseHunspellOutput(scanner *bufio.Scanner) map[string]*TypeResult {
types[resultType] = typeResult types[resultType] = typeResult
} }
typeResult.results = append(typeResult.results, Result{line: line, word: text[1:]}) typeResult.results = append(typeResult.results, Result{line: line, word: strings.Trim(text[1:], " ")})
} }
} }