From be9907ea22acdb8bf2fcce3b05798ac6df4c4a68 Mon Sep 17 00:00:00 2001 From: Georgy Litvinov Date: Thu, 17 Oct 2019 10:19:50 +0300 Subject: [PATCH] Added fix freq mistakes --- IPHRedaction/Clean.xba | 54 ++++++++++++++++++++++++++++++++++++ IPHRedaction/Validation.xba | 2 +- license/license_en.txt | 10 ------- license/license_ru.txt | 7 ----- redaction.oxt | Bin 53629 -> 54546 bytes 5 files changed, 55 insertions(+), 18 deletions(-) delete mode 100644 license/license_en.txt delete mode 100644 license/license_ru.txt diff --git a/IPHRedaction/Clean.xba b/IPHRedaction/Clean.xba index ec440be..13bcb0d 100644 --- a/IPHRedaction/Clean.xba +++ b/IPHRedaction/Clean.xba @@ -17,11 +17,65 @@ disposeAllBookmarks fixTableWidth fixDrawingAnchors + fixFrequentMistakes loadArticleStyles statusIndicator.end() saveAndreload() End Sub +Private Sub fixFrequentMistakes + Dim NBSP As String + Dim space As String + NBSP = " " + space = " " + 'Не должно быть символов табуляции + AskAndReplace("\t","") + 'Не должно быть подряд больше одного пробела + AskAndReplace("(?<=[:space:])[:space:]+","") + 'Не должно быть ни одного пробела в начале абзацев + AskAndReplace("^[:space:]+","") + 'Не должно быть пробелов в конце абзацев + AskAndReplace("[:space:]+$","") + 'Не должно быть пустых абзацев + AskAndReplace("^$","") + 'Не должно быть пробелов перед знаками пунктуации .,;:?!)]}»¡¿”‘’ + AskAndReplace("[:space:]+(?=[\.,;:?!\)\]\}»¡¿”‘’])","") + 'Между словом том и цифрой должен быть неразрывный пробел, а не обычный + AskAndReplace("(?<=\b[тТ](ом|\.))\ (?=[:digit:])",NBSP) + 'Между словом серия и цифрой должен быть неразрывный пробел, а не обычный + AskAndReplace("(?<=\b[сС](ерия|\.))\ +(?=[:digit:])",NBSP) + 'Между словом часть и цифрой должен быть неразрывный пробел, а не обычный + AskAndReplace("(?<=\b[чЧ](асть|\.))\ +(?=[:digit:])",NBSP) + 'Между числом и "г." должен быть неразрывный пробел, а не обычный + AskAndReplace("(?<=[0-9])[:space:]*г(?=\.)",NBSP & "г") + 'Между инициалами и Фамилией должен быть неразрывный пробел, а не обычный + AskAndReplace("(?<=[:upper:]\.[:space:][:upper:]\.)\ (?=[:upper:][:lower:]+)",NBSP) + 'Между Фамилией и инициалами должен быть неразрывный пробел, а не обычный + AskAndReplace("(?<=[:upper:][:lower:]{1,30})\ (?=[:upper:]\.[:space:][:upper:]\.)",NBSP) + + 'Не должно быть пробелов после скобок [({ и кавычек «„ + AskAndReplace("(?<=[\(\[\{«„])[:space:]","") + 'Между "и" и "т." должен быть неразрывный пробел, а не обычный + AskAndReplace("(?<=\bи)\ (?=т\.)",NBSP) + 'Между "т." и "е./н./д./п./к." должен быть неразрывный пробел, а не обычный + AskAndReplace("(?<=\bт)\.\ ?(?=[ендпк]\.)","." & NBSP) + + 'Между буквами среднее тире должно обрамляться пробелами + AskAndReplace("(?<=[:alpha:])–(?=[:alpha:])",NBSP & "–" & NBSP) + 'Между буквами дефис-минус, цифровое тире и длинное тире заменяется на среднее тире + AskAndReplace("(?<=[:alpha:][:space:])[-‒—](?=[:space:][:alpha:])","–") + 'Между двумя цифрами и тире между ними не долнжо быть пробелов. А также тире должно быть цифровым + AskAndReplace("(?<=[:digit:])(?:[:space:])?[-‒–—](?:[:space:])?(?=[:digit:])","‒") + + 'Между двумя римскими цифрами и тире между ними не долнжо быть пробелов. А также тире должно быть средним + AskAndReplace("(?<=[MDCLXVI])(?:[:space:])?[-‒–—](?:[:space:])?(?=[MDCLXVI])","–") + + 'Между буквой и угловой открывающейся скобкой должен быть пробел + AskAndReplace("(?<=[:alpha:])<(?=…>)",space & "<") + 'Между угловой закрывающейся скобкой и буквой должен быть пробел + AskAndReplace("(?<=<…)>(?=[:alpha:])",">" & space) +End Sub + Private Sub loadArticleStyles Dim dispatcher as object Dim fileePath As String diff --git a/IPHRedaction/Validation.xba b/IPHRedaction/Validation.xba index 3f335d9..18fa2ae 100644 --- a/IPHRedaction/Validation.xba +++ b/IPHRedaction/Validation.xba @@ -1,6 +1,6 @@ -Sub markY +Sub markYX End Sub diff --git a/license/license_en.txt b/license/license_en.txt deleted file mode 100644 index 0438ca6..0000000 --- a/license/license_en.txt +++ /dev/null @@ -1,10 +0,0 @@ -The author of this extension is: - Georgy Litvinov (public@litvinovg.pro) -Copyright 2019. - -This library is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 3 of the License. - -This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . - diff --git a/license/license_ru.txt b/license/license_ru.txt deleted file mode 100644 index 4f09405..0000000 --- a/license/license_ru.txt +++ /dev/null @@ -1,7 +0,0 @@ -Автор расширения: - Георгий Литвинов (public@litvinovg.pro) -Copyright 2019. - -Это расширение является свободным программным обеспечением, вы можете распространять и/или модифицировать его в соответствии с лицензией GNU Lesser General Public License версии 3.0, опубликованной Free Software Foundation. - -Это расширение распространяется в надежде, что оно будет полезным, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. См. GNU Lesser General Public License для более детальной информации: http://www.gnu.org/licenses/ diff --git a/redaction.oxt b/redaction.oxt index c950731df688889e30e8a98a83aaf79470803b55..f300c4024aceb245c3fd0e8d77ae2f43bf328632 100644 GIT binary patch delta 8012 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