PiRSquared17 / ooofbtools

Automatically exported from code.google.com/p/ooofbtools
0 stars 0 forks source link

OOoFBTools-1.25 сломан фильтр отработки кавычек #68

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Исходная строка:
test "test".

После применения фильтра "корректор 
текста" преобразуетсяк виду:
test»test».

Правильный результатат:
test «test».

Original issue reported on code.google.com by BlackCat...@yandex.ru on 10 Dec 2011 at 5:46

GoogleCodeExporter commented 9 years ago
Спасибо, посмотрю

Original comment by dik...@gmail.com on 21 Dec 2011 at 4:05

GoogleCodeExporter commented 9 years ago
Такой результат. как у вас, получается 
потому, что ОБЕ кавычки в вашем тексте - 
ЗАКРЫВАЮЩИЕ (из-за шрифта это может не быть 
сразу заметно). Корректор не меняет 
ошибочно проставленные кавычки, т.к. не 
знает, в каком случае нужна открывающая, а 
когда - закрывающая кавычка. Он просто, по 
заданному алгоритму, встретив Закрывающую 
кавычку, убирает перед ней все пробелы и 
меняет ее на Закрывающую "ёлочку". Как и 
должно быть.
Если вы измените 1-ю кавычку в вашем тексте 
на Открывающую, то результат "приятно 
удивит вас" :).
Вот пример:
test "test" - 2 Закрывающие кавычки. Результат: 
test»test»
test “test” - Открывающая и Закрывающая 
кавычки. Результат: test «test».

Original comment by dik...@gmail.com on 22 Dec 2011 at 5:04

GoogleCodeExporter commented 9 years ago
Интересный тезис...
Мне почему-то всегда казалось, что базовые 
(ANSI) кавычки на открывающие/закрывающие не 
подразделяются.
Также интересен вопрос: почему фильтр в 1.23 
отрабатывает их корректно.

Original comment by BlackCat...@yandex.ru on 22 Dec 2011 at 7:40

GoogleCodeExporter commented 9 years ago
Не скажу сейчас, почему. Возможно там не 
удаления пробелов перед закрывающей 
кавычкой, не помню...

Original comment by dik...@gmail.com on 22 Dec 2011 at 9:42

GoogleCodeExporter commented 9 years ago
Про кавычки:
Я просмотрю код Корректора на предмет 
изменения алгоритма обработки кавычек.

Original comment by dik...@gmail.com on 23 Dec 2011 at 4:41

GoogleCodeExporter commented 9 years ago
С кавычками - проблема:
В Корректоре есть две опции, работа одной 
"портит" исходные данные для другой и 
наоборот. Это 1. "Удалить пробелы внутри 
кавычек (« слово » -> «слово»)" и 2. "Замена 
кавычек на ёлочку".
Программно, используя регулярные 
выражения сложно (если возможно?) 
различить: кавычка " является открывающей, 
или закрывающей. И поэтому 1-я опция, 
встретив кавычку ", не может понять. 
открывающая она или закрывающая (это не 
относится к кавычкам вида “ и «) и удаляет 
перед ней пробелы, как перед закрывающей 
кавычкой.
2-я опция  - тоже нельзя понять - открывающая 
" или закрывающая, и, соответственно, 
непонятно, на какую ёлочку ее менять. 
При совместной работе этих 2-х опций, 
сначала удаляются все пробелы перед и до 
кавычек, а потом кавычки перобразуются в 
ёлочку. И, в связи с вышеописанным, простая 
кавычка ", если перед ней был пробел, 
"прилипает" к предыдущему слову, и уже 
воспринимается в регулярном выражении, как 
закрывающая. и меняется на ». test " test " -> 
Получаем: test»test»
Я "ограничил" опцию "Удалить пробелы внутри 
кавычек (« слово » -> «слово») обработкой 
только кавычек вида “,« и ”,» 
соответственно. Т.е. эта опция не будет 
убирать пробела в таких ситуациях: test " test ", 
а, следовательно, и не будет замены на 
елочку для этой ситуации. Ситуации же test 
"test" корректно обрабатываются и получаем: 
test «test»
Иного пути я пока не вижу при использовании 
регулярных выражений...

Original comment by dik...@gmail.com on 23 Dec 2011 at 6:40

GoogleCodeExporter commented 9 years ago
Версия 1.26.
Замена на ёлочку выключена.
Файл: http://flibusta.net/b/150510
После фильтра: 'лозунг 1971–го"давайте' 
(потерян пробел в том числе перед кавычкой).

Original comment by BlackCat...@yandex.ru on 12 Feb 2012 at 8:07

GoogleCodeExporter commented 9 years ago
Посмотрю...

Original comment by dik...@gmail.com on 21 Feb 2012 at 11:56

GoogleCodeExporter commented 9 years ago
Прогони у себя, пожалуйста, еще раз. На 
версии 1.27 (многое в Корректоре менял) у меня 
получилось так: `лозунг 1971–го "давайте 
присматривать за полицией"`
Как у тебя?

Original comment by dik...@gmail.com on 21 Feb 2012 at 12:04

GoogleCodeExporter commented 9 years ago
1.24 --- как показала практика фильтр тоже был 
сломан.
1.27 --- по тестированному примеру (не 
совпадает с ранее приводившимися) фильтр 
корректора текста кавычки отработал как 
надо.
Так что похоже проблема решена.

Original comment by BlackCat...@yandex.ru on 6 Mar 2012 at 5:37

GoogleCodeExporter commented 9 years ago
Похоже с заключением о решённости проблемы 
я погорячился...

Original comment by BlackCat...@yandex.ru on 12 Mar 2012 at 5:15

GoogleCodeExporter commented 9 years ago
Укажи, пожалуйста. что и где не так 
обработалось - у меня все нормально. 
Возможно мой глаз уже "замылился" :)

Original comment by dik...@gmail.com on 18 Mar 2012 at 5:33

GoogleCodeExporter commented 9 years ago

Original comment by dik...@gmail.com on 7 Dec 2012 at 2:31