Обсуждение Википедии:Викификатор — Википедия

Фильм с кавычками[править код]

Дано: статья про фильм, в названии статьи кавычки, и вся ссылка вместе тоже должна быть в кавычках. Должно получиться так:

«[[Ааа «Ббб»|Ааа „Ббб“]]» 

Я нахожу в статье текст:

«[[Ааа «Ббб»]]» 

Хочу это исправить, делаю копипейстом так:

«[[Ааа «Ббб»|Ааа «Ббб»]]» 

а потом запускаю Викификатор, ожидая, что он отформатирует кавычки в видимой части ссылки. Однако вместо этого он замечает, что части до палки и после палки совпадают, и возвращает как было. Я согласен, что такая оптимизация ссылок полезна. Но нельзя ли сделать, чтобы обработка кавычек происходила раньше? Vcohen (обс.) 08:28, 16 сентября 2020 (UTC)[ответить]

Неплохо было бы, если он преобразовывался в «типографский» апостроф, тогда же, когда и обычный машинописный апостроф. 217.117.125.72 12:23, 8 ноября 2020 (UTC)[ответить]

Маркированные списки[править код]

Просьба сделать так, чтобы викификатор заменял на * в начале строки и, возможно, убирал пустые строки между строками с такими заменами. 217.117.125.83 10:20, 2 июня 2021 (UTC)[ответить]

Ряд предложений[править код]

1. Этот блок вероятно не нужен, phab:T198010 давно закрыто.

2. Нужен ли MediaWiki:Gadget-wikificator.css? Не нахожу использования .oo-ui-icon-wikify, сам скрипт использует другие иконки.

3. Загрузка скрипта registerTool жёстко привязана к домену 'ru.wikipedia.org', иначе грузит скрипт по url. А если викификатор ставится по другому домену, где MediaWiki:Gadget-registerTool.js уже установлен в MediaWiki:Gadgets-definition и прописан в зависимости wikificator[ResourceLoader|dependencies=ext.gadget.registerTool (например в Викитеке или в др. яз. разделе)? Предлагаю заменить это на проверку наличия локального registerTool, как сделано в соседнем гаджете.

4a. Лишние пробелы в конце строк. Лучше заменить на r( /( | |\x00a0|\t)+$/gm, '' ); // spaces at EOL - доп. чистятся другие виды пробелов.

4b. Ещё можно над строками вроде hideTag( 'nowiki' ); (с. 116) добавить r( /^( | |\x00a0|\t)+$/gm, '' ); // spaces in empty lines, чтобы удалять пробелы из пустых строк и в скрытых шаблонах и тэгах.

5. Замену тире на дефис в номерах Боингов надо отделить от строки с общими заменами. Поскольку кроме Боингов может быть неопределённая масса других исключений, учитывая, что скрипт предлагается использовать не только в Википедии. Т. е. в первой строке менять на дефисы по общим правилам. А во второй строке уже исправлять исключения - искать тире и менять на дефисы. (Правка где в строку включили Боинг.) Vladis13 (обс.) 13:39, 15 июля 2021 (UTC)[ответить]

Ударение[править код]

Почему-то не убирает такой шаблон: Винницкие Иваны. Но при этом убирает subst:Ударение. 185.16.139.123 19:09, 29 сентября 2021 (UTC)[ответить]

Не совсем понятно, какой шаблон не убирает? — A.sav (обс.) 13:43, 5 октября 2021 (UTC)[ответить]
Имелась в виду вот такая правка. Судя по всему, это было сделано вручную, викификатор этого не делает. Vcohen (обс.) 13:53, 5 октября 2021 (UTC)[ответить]
  • Шаблоны продолжают втыкать в текст. Какая-то реакция будет? Почему викификатор раскрывает {{подст:ударение}}, но не должен раскрывать {{ударение}}? 194.50.15.241 22:40, 14 октября 2021 (UTC)[ответить]
    • {{подст:ударение}} обрабатывать викификатором действительно смысла нет, это встроенный функционал движка. А нужно ли раскрывать {{ударение}} ? — A.sav (обс.) 11:27, 19 октября 2021 (UTC)[ответить]
      • Коллега @A.sav, ну не знаю, я использую викификатор для быстрого преобразования {{subst:'}} в ударение и это удобно, сразу видно, не приходится ждать подстановки… Викизавр (обс.) 13:20, 29 октября 2021 (UTC)[ответить]
  • Закрыл запрос на редактирование. Судя по обсуждению, эта правка не кажется очевидной, и её нужно обсуждать. — putnik 22:49, 25 декабря 2021 (UTC)[ответить]
    • Но так как шаблон должен использоваться только с подстановкой, то такую замену я поддержу. Если в ближайшее время возражений не появится, добавлю её в код. — putnik 12:13, 26 декабря 2021 (UTC)[ответить]
      • Это уже не отклонение, а согласие. 194.50.15.56 21:13, 27 декабря 2021 (UTC)[ответить]
        • {{editprotected}} используется только для очевидных правок, которые автор не может внести из-за нехватки прав. Для всего остального он не должен использоваться, иначе засоряется категория, и других подобные правки не выполняются. В данном случае мы никуда не спешим и ждём, возможно будут другие мнения. — putnik 23:37, 29 декабря 2021 (UTC)[ответить]

Галерея[править код]

Мне кажется, что не обрабатывается текст в галереях. Показываемый текст в ссылках да, подписи к файлам, вставляемым по одному, тоже да, а подписи к файлам в галереях нет. Vcohen (обс.) 13:40, 5 октября 2021 (UTC)[ответить]

Удаление устаревших параметров шаблона НП срабатывает не во всех случаях[править код]

Эта замена не срабатывает при отсутствии символов после знака равенства до конца строки: размер карты
А вот эта замена срабатывает (почти) всегда, поскольку после имени параметра (почти) всегда есть хотя бы один символ, не являющийся концом параметра или шаблона, и это знак равенства: CoordAddon|ЯндексКарта
Предлагаемые исправления:
Фрагмент кода

		if ( txt.indexOf( '{{НП' ) > -1 ) { 			r( / *\| *(?:CoordAddon|ЯндексКарта)[^\|\}]+\n/g, '' ); 			r( / *\| *размер карты (?:страны|региона|района) *= *[^\|\}]+\n/g, '' ); 		} 

заменить на

		if ( txt.indexOf( '{{НП' ) > -1 ) { 			r( /\|\s*(?:CoordAddon|ЯндексКарта)[^\|\}]*/g, '' ); 			r( /\|\s*размер карты (?:страны|региона|района)[^\|\}]*/g, '' ); 		} 

Суть изменений:

  1. удалены лидирующие пробелы перед символом начала параметра, поскольку удаление будет производиться до символов | или }, а не до конца строки, как ранее, при этом отступы будут сохранены, если они были равны до замены, то есть эта замена не ухудшит выравнивание кода разметки
  2. пробелы после | расширены до класса всех пробельных символов, поскольку вполне могут встречаться и те же переводы строк, например
  3. для параметров «размер карты» удалён фрагмент со знаком равенства, поскольку его может и не быть.
  4. квантификаторы + для [^\|\}] заменены на *, поскольку не обязательно наличие хотя бы одного такого символа, главное, что как только встречается один из этих символов — совпадение заканчивается
  5. удалены символы перевода строки в концах регулярных выражений для учёта случаев, когда параметр оказывается разорван переводом (переводами) строк

Цели: учесть случаи

  1. параметров с полным отсутствием символов до конца строки (бывает, встречаются такие сломанные параметры)
  2. с полным отсутствием символов после знака равенства до конца строки (такое встречается существенно чаще).
  3. когда параметр оказывается разорван переводом (переводами) строк

Alex NB IT (обс.) 15:30, 29 декабря 2021 (UTC)[ответить]

  • См. случай:
Викификатор
Имя при рождении Вася
Полное имя Василий Иваныч
Дата рождения 1990(1990)
{{Персона |имя при рождении     = Вася |полное имя            = Василий Иваныч |дата рождения        = 1990 }} 

Abiyoyo (обс.) 20:29, 29 декабря 2021 (UTC)[ответить]

  • @Abiyoyo: Ваш пример станет контрпримером только при добавлении после квантификаторов + или * ещё и квантификатора ?
    Сейчас же регулярное выражение отнюдь не ленивое :-)
    Предлагаемый мной вариант прекрасно сработает и в этом случае, совпадение будет включать в себя две строки, можно проверить на сайте https://regex101.com/
    Удаление параметров «CoordAddon» и «ЯндексКарта» уже реализовано почти так же, я лишь предлагаю уточнить в нём квантификатор с + на * и по такому же принципу организовать и удаление второго параметра для охвата случаев вида
    {{НП |CoordAddon |размер карты страны |размер карты региона= |размер карты района=310 }}
    где в конце строк нет пробелов. Сейчас из-за квантификатора + и обязательного требования наличия знака равенства в параметрах «размер карты» в приведённом мной выше примере Викификатор удалит только последний параметр — это легко проверить, выделив текст внутри тегов «syntaxhighlight», но не включая сами теги, поскольку текст внутри них экранируется Викификатором и нажав кнопку Викификатора. — Alex NB IT (обс.) 21:03, 29 декабря 2021 (UTC)[ответить]
    • Сорри, пример неправильный. Правильный такой:
Викификатор
Имя при рождении Вася
Полное имя Василий Иваныч
Дата рождения 1990(1990)
{{Персона |имя при рождении     = Вася |полное имя            = Василий Иваныч |дата рождения        = 1990 }} 
    • Я хочу сказать, что перевод строки — не универсальный маркер конца параметра. Конец параметра надо определять через что-то типа (?=[\|\}]). Текущий код тоже на этом ломанется. См. [1]Abiyoyo (обс.) 21:17, 29 декабря 2021 (UTC)[ответить]
      • Да, действительно, это также проблемы уже существующего кода. Внёс дополнительные изменения в эти регулярные выражения. — Alex NB IT (обс.) 21:52, 29 декабря 2021 (UTC)[ответить]
        • Так совсем стремно делать. См.:
          {{НП}} где-то в тексте [[Яндекс-карта|ЯндексКарта]]
          Впрочем и нынешний код сломается на пусть и нетипичном, но синтаксически допустимом
          {{НП}} где-то в тексте [[Яндекс-карта|ЯндексКарта ]]
          Все это требует полного парсинга предыдущей строки и проверки, что это именно параметр шаблона НП, а не встречается где-то в тексте или в другом шаблоне, файле или вики-ссылке. Я уж не говорю о случаях
          {{НП}} {{другой шаблон |размер карты страны= 123 |еще параметр=345 }}  {{iw|ЯндексКарта (новая)|ЯндексКарта (новая) |en|YandexMap New}}
          которые сломаются и сейчас. Но в вашем примере теперь ошибка вылезет еще и на:
          [[:Файл:abc.png|размер карты региона [[Каталония (регион)|Каталония]] дальше любые слова|thumb]]  или  {{iw|ЯндексКарта (новая)|ЯндексКарта (новая)|en|YandexMap New}}
          Это, наверное, можно сделать на регулярках, но будет совершенно монструозный нечитаемый крокодил на несколько строк сплошных спецсимволов. Корректно распознать параметр шаблона, да еще с учетом, что он теперь как бы неименованый — вообще непростая задача для регулярных выражений. Я бы не рисковал это все делать еще более жадным. Abiyoyo (обс.) 00:13, 30 декабря 2021 (UTC)[ответить]
  • Новый код ломает конструкцию | CoordAddon = {{{CoordAddon|}}}, которая есть в большинстве шаблонов, наследующих {{НП}}. — putnik 23:41, 29 декабря 2021 (UTC)[ответить]

Викификатор «исправляет» комментарии[править код]

Викификатор «исправляет» <!-- комментарии -->, например, в шаблоне {{subst:footnotes}} <!-- О том, как создавать сноски с помощью тегов <ref>, см. на http://ru.wikipedia.org/wiki/Википедия:Сноски --> «исправляется» на <!-- О том, как создавать сноски с помощью тегов<ref>, см. на http://ru.wikipedia.org/wiki/Википедия:Сноски -->. Предлагаю исключить комментарии из обработки. 176.122.109.237 10:09, 16 марта 2022 (UTC)[ответить]

Можно ли добавить замену км³ км² (и других единиц) на км3 км2? ~~‍~~ Jaguar K · 16:16, 5 мая 2022 (UTC)[ответить]

описание правки[править код]

Есть возможность добавить в скрипт (можно в качестве опции) добавление определенного описания правки при применении? ~~‍~~ Jaguar K · 20:26, 5 мая 2022 (UTC)[ответить]

Двойные скобки[править код]

Можем ли мы в код Викификатора внести аналогично с двойными кавычками код для двойных скобок (1, 2)? То бишь, чтобы исправлялось с (… (…) …) на (… […] …). calvin (обс.) 15:27, 29 мая 2022 (UTC)[ответить]

Пробелы перед {{sfn}}[править код]

Предлагаю убирать пробелы перед {{sfn}}, по аналогии с <ref> + добавить в список удаляемых символов табуляцию \t.

Предположу что сюда:

		r( /[\u00A0 ]+(\{\{\s*([Rr]ef-[a-z\-]+?|[Ee]n icon|[Cc]hecked|[Vv]|[Пп]роверено)\}\})/g, '$1' ); 

Возможная реализация:

		r( /[\t\u00A0 ]+(\{\{\s*([Rr]ef-[a-z\-]+?|[Ee]n icon|[Cc]hecked|[Vv]|[Пп]роверено|[Ss]fn\s*\|[^\}]+?)\s*\}\})/g, '$1' ); 

P.S. Также добавлена обработка варианта с пробелами перед }} ( {{ref-en }}), сейчас пробелы перед такими шаблонами не убираются. -- A.sav (обс.) 23:24, 19 июля 2022 (UTC)[ответить]

Частный случай?[править код]

В Медицинская марихуана#Доступ к терапии медицинским каннабисом встретилась такая конструкция: и т.д[сноска]. Не имею возможности оценить повторяемость такой ситуации, но всё равно задаю вопрос - возможно викификатором реализовать перенос точки из-за тегов реф'а на её законное место? И т. д., и т. п., и пр., что там ещё может попасть под этот случай... Гдеёж?-здесь 13:26, 16 декабря 2022 (UTC)[ответить]

Викификатор подвешивает страницу[править код]

Дублирую сюда тему с форума, не знаю, где больше вероятность сдвинуть с мёртвой точки

Википедия:Форум/Технический#Викификатор подвешивает страницу

Прошлое обсуждение: Википедия:Форум/Архив/Технический/2022/07#Викификатор. До сих пор Викификатор продолжает подвешивать страницы. Без нажатия Викификатора всё нормально сохраняется. При нажатии страница подвисает на несколько минут https://ic.pics.livejournal.com/wasapp/6464724/225005/225005_original.png Это воспроизводится на самых разных компьютерах с разными ОС. Пожалуй, единственное, что объединяет — браузер Хром, но разные версии. Лес (Lesson) 17:34, 18 декабря 2022 (UTC)[ответить]

[[File:[[Файл:[править код]

Это вредная замена: она мешает переносу иллюстраций в другие языковые разделы. Надо стремиться к унификации того, что касается разметки, а не к созданию зоопарка вариантов для всех языков, — или хотя бы этой унификации не мешать. Sneeuwschaap (обс.) 16:31, 3 января 2023 (UTC)[ответить]

  • Насколько мне известно, это общевикимедийная практика — заменять названия пространства имён в локальных языковых вики-проектах своими именами, а не использовать везде английский. Как мне кажется, если вы переносите какие-либо статьи в другие языковые разделы, то используйте простую функцию «Поиск и замена» для замены «Файла» на «File». Или заведите себе небольшой скрипт, который делал бы это при нажатии одной кнопки.  Αλέξης ο Μέγας  (📢 | 📥) 02:27, 4 января 2023 (UTC)[ответить]
  • Я согласен, что заменять универсальные имена локализованными не следует, что это мешает переносить наш текст в другие разделы. @Putnik вроде ты мейнтейнишь викификатор? Я бы такую замену удалил, если бы даже не сделал обратную. MBH 04:40, 4 января 2023 (UTC)[ответить]
    • Подобные кардинальные изменения стоит сначала обсуждать на форумах. В целом у нас так или иначе принята локализация почти всех конструкции MediaWiki, в том числе это делается автоматически самим движком и визуальным редактором. Делать так, чтобы разные инструменты работали в разные стороны, на мой взгляд плохое решение — будут по кругу замены туда-сюда. — putnik 01:45, 18 апреля 2023 (UTC)[ответить]
  • В реалиях русского раздела Википедии, где с момента появления такой возможности локализуются указания на категории и в целом пространства имён, — нет, это не вредная замена. Заменить [[File: на [[File: при этом проще простого в любом редакторе, так что непонятно, чему это вообще может мешать. При этом thumb → мини и пр. заменять действительно не следует. stjn 11:50, 25 июля 2023 (UTC)[ответить]
    • Разумеется, вредная хотя бы по причине, указанной в начале темы. И непонятно, зачем участники должны что-то заменять в редакторах, когда можно просто не насаждать зоопарк. Sneeuwschaap (обс.) 17:52, 25 июля 2023 (UTC)[ответить]

Ссылки на :ru:[править код]

(начало обсуждения — Википедия:Форум/Вниманию участников#Липовый синий)

В стоит убрать ссылках :ru:. Если в общем случае автоматически заменять ссылки формата [[:lang:article]] на {{iw|статья||lang|article}} проблематично, то ссылки на наш раздел должно быть просто исправлять, что-то вроде
r(/(\[\[:)(ru:( *)/ig, '[[' ); Janwuf (обс.) 13:45, 25 января 2023 (UTC)[ответить]

примечания[править код]

Не обрабатывает, если есть группа. https://ru.wikipedia.org/?diff=128726262 ~~‍~~ Jaguar K · 00:00, 25 февраля 2023 (UTC)[ответить]

Сообщение об ошибке и запрос правки для её исправления[править код]

Ошибка: Служебная:Изменения/128806287: После заголовков «В лёгкой промышленности» и «В пищевой промышленности» стояли неразрывные пробелы, Викификатор добавил после них обычные.
Решение: Строку r( /^(=+)[ \t\f\v]*(.*?)[ \t\f\v]*=+$/gm, '$1 $2 $1' ); // add spaces inside заменить на r( /^(=+)[ \t\f\v\u00A0]*(.*?)[ \t\f\v\u00A0]*=+$/gm, '$1 $2 $1' ); // add spaces insideAlex NB IT (обс.) 18:28, 28 февраля 2023 (UTC)[ответить]

Замена кавычек[править код]

"армобетона" - думаю, замена кавычек не нужна в имени источника ~~‍~~ Jaguar K · 13:47, 4 марта 2023 (UTC)[ответить]

spaces at EOL[править код]

Просьба расширить правило

		r( / +(\n|\r)/g, '$1' ); // spaces at EOL< 

добавив кроме обычного пробела неразрывный и табуляцию:

		r( /[ \u00A0\t]+(\n|\r)/g, '$1' ); // spaces at EOL< 

A.sav (обс.) 21:02, 5 мая 2023 (UTC)[ответить]

Лишние неразрывные пробелы[править код]

@Putnik: после вашей недавней правки викификатор стал добавлять неразрывные пробелы между числом и словом «год», что хорошо в тексте статьи, но бесполезно в категориях, да и вообще внутри вики-ссылок (как [[1234&nbsp;год]], так и [[1234&nbsp;год|с другим текстом]]). В целом, ссылка не ломается, конечно, но правки выглядят лишними. Как пример можно открыть статью Гранд-канал в Венеции и там нажать на викификатор, из трёх замен последняя кажется ненужной. Такие проверки это, конечно, усложнение кода, но не обратить на это внимание я не мог. windewrix (обс.) 06:24, 12 мая 2023 (UTC)[ответить]

  • Внутри вики-ссылок, равных тексту, полезно [[1234&nbsp;год]], так что убирать не нужно. В категориях и ссылках с другим текстом можно убрать, если не слишком сложно. ~~‍~~ Jaguar K · 09:22, 12 мая 2023 (UTC)[ответить]

Химические формулы простым текстом[править код]

Если применить к этой версии, то заменит среднее тире (включая sup), и добавит длинное в I–I. ~~‍~~ Jaguar K · 13:19, 12 мая 2023 (UTC)[ответить]

коммандитный[править код]

Викификатор исправляет данное слово на командитный, что неправильно. Quick1984 (обс.) 09:45, 7 февраля 2024 (UTC)[ответить]

Вложенные кавычки[править код]

Интересно Викификатор обрабатывает вложенные кавычки в данном случае: в конце статьи заменил «Любовь Соколова. ''„[[Мой серебряный шар]]“''» на «Любовь Соколова. ''»[[Мой серебряный шар]]"''", а аналогичные случаи ниже нет. А потому что [[Мой серебряный шар]] викифицирован, если убрать скобки — викификатор вновь вернёт нормальные кавычки. ЯЁ32Ы (обс.) 23:35, 8 февраля 2024 (UTC)[ответить]

  • А почему в данных примерах в курсив не заключены имена Любови Соколовой и Георгия Данелия (ниже)? Если «Любовь Соколова. „Мой серебряный шар“» — это полное название передачи, то я бы заключил его целиком в курсив, а не частично. Это бы исправило проблему с некорректной викификацией.  Αλέξης ο Μέγας  (📢 | 📥) 15:12, 9 февраля 2024 (UTC)[ответить]
    • Смещение курсива внутрь скобок «Любовь Соколова. „''[[Мой серебряный шар]]''“», но вряд ли кто-то будет искать, когда викикатор ломает, а когда — нет. ~~‍~~ Jaguar K · 15:53, 9 февраля 2024 (UTC)[ответить]

Знак апострофа[править код]

Предлагаю добавить замену кода

&#39;

на

'

Вот пример использования. Подобное уже делали с пробелами. Mitte27 (обс.) 06:06, 26 февраля 2024 (UTC)[ответить]