mirror of
https://github.com/ru-de/faq.git
synced 2024-11-09 20:21:01 +00:00
commit
37bed1c536
26
.travis.sh
Normal file
26
.travis.sh
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
go build spell-checker.go
|
||||||
|
|
||||||
|
EXIT_CODE=0
|
||||||
|
|
||||||
|
git diff HEAD^ --name-only > changed_files
|
||||||
|
|
||||||
|
while read FILE; do
|
||||||
|
echo -n "Проверка файла $FILE на опечатки... ";
|
||||||
|
|
||||||
|
OUTPUT_RU=$(cat "$FILE" | hunspell -d ru_RU | ./spell-checker);
|
||||||
|
RU_EXIT_CODE=$?
|
||||||
|
OUTPUT_EN=$(cat "$FILE" | hunspell -d en_US | ./spell-checker);
|
||||||
|
EN_EXIT_CODE=$?
|
||||||
|
|
||||||
|
if [ $RU_EXIT_CODE -ne 0 ] || [ $EN_EXIT_CODE -ne 0 ]; then
|
||||||
|
EXIT_CODE=1;
|
||||||
|
echo "ошибка";
|
||||||
|
echo "$OUTPUT_RU\n$OUTPUT_EN" | sort -n -k1,4;
|
||||||
|
else
|
||||||
|
echo "пройдена";
|
||||||
|
fi
|
||||||
|
done < changed_files
|
||||||
|
|
||||||
|
exit $EXIT_CODE
|
@ -1,9 +1,10 @@
|
|||||||
before_install:
|
before_install:
|
||||||
- sudo apt-get -qq update
|
- sudo apt-get -qq update
|
||||||
- sudo apt-get install -y hunspell hunspell-ru hunspell-en-us
|
- sudo apt-get install -y hunspell hunspell-ru hunspell-en-us
|
||||||
|
- curl -s http://extensions.libreoffice.org/extension-center/russian-spellcheck-dictionary.-based-on-works-of-aot-group | grep -oP "http://extensions.libreoffice.org/extension-center/russian-spellcheck-dictionary.-based-on-works-of-aot-group/pscre[^\"]+" | sort -r | head -1 | wget -q -i - -O dictionary.otx
|
||||||
|
- unzip dictionary.otx
|
||||||
script:
|
script:
|
||||||
- git diff HEAD^ | hunspell -d ru_RU,en_US | grep "^&"
|
- sh .travis.sh
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
email: false
|
email: false
|
||||||
|
59
spell-checker.go
Normal file
59
spell-checker.go
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"bufio"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
type TypeResult struct {
|
||||||
|
results []Result
|
||||||
|
}
|
||||||
|
|
||||||
|
type Result struct {
|
||||||
|
line int
|
||||||
|
word string
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
scanner := bufio.NewScanner(os.Stdin)
|
||||||
|
types := parseHunspellOutput(scanner);
|
||||||
|
|
||||||
|
_, ok := types["&"]
|
||||||
|
|
||||||
|
if ok {
|
||||||
|
for _, result := range types["&"].results {
|
||||||
|
fmt.Println("Строка " + fmt.Sprintf("%v", result.line) + ":" + result.word)
|
||||||
|
}
|
||||||
|
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseHunspellOutput(scanner *bufio.Scanner) map[string]*TypeResult {
|
||||||
|
line := 1;
|
||||||
|
types := make(map[string]*TypeResult)
|
||||||
|
|
||||||
|
scanner.Scan()
|
||||||
|
|
||||||
|
for scanner.Scan() {
|
||||||
|
text := scanner.Text()
|
||||||
|
|
||||||
|
if text == "" {
|
||||||
|
line++;
|
||||||
|
} else {
|
||||||
|
resultType := text[0:1]
|
||||||
|
typeResult, ok := types[resultType]
|
||||||
|
|
||||||
|
if !ok {
|
||||||
|
typeResult = &TypeResult{}
|
||||||
|
types[resultType] = typeResult
|
||||||
|
}
|
||||||
|
|
||||||
|
typeResult.results = append(typeResult.results, Result{line: line, word: text[1:]})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return types
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user