Википедия:Запросы к скриптерам/Архив/2016/2
Подправить регулярное выражение
правитьНужно регулярное выражение, подобное r( /<[\/\\]?(hr|br)( [^\/\\>]+?)? ?[\/\\]?>/gi, '<$1$2 />' );
в MediaWiki:Wikificator.js, но чтобы обрабатывались br и br/ равноправно, не заменяя br на br/. --Hrum-Hrum (обс) 20:12, 25 июня 2016 (UTC)
- Не вижу смысла. Должен быть один вариант. — Джек, который построил дом (обс.) 20:24, 25 июня 2016 (UTC)
- А, или вы в рамках запроса к скриптёрам просто спрашиваете. Сорри. Секунду. — Джек, который построил дом (обс.) 20:25, 25 июня 2016 (UTC)
- Нет, ну чтобы сохранить слэш, нужно просто сделать capture (окружить скобками
?[\/\\]?
и<$1$2 />
заменить на<$1$2$3>
), только зачем? — Джек, который построил дом (обс.) 20:29, 25 июня 2016 (UTC)- Спасибо Ага, даже так
'<$1$2'+($3==''?'':' /')+'>'
. --Hrum-Hrum (обс) 21:14, 25 июня 2016 (UTC)
- Спасибо Ага, даже так
Как создать алиасы на Lua?
правитьМодуль:Navbox/sandbox. Хочу создать алиасы к параметрам. Но что-то не работает. Добавил args.title or args['заголовок']
где можно. Что я сделал не так? Вот песочница. С уважением, Iniquity 15:57, 13 июня 2016 (UTC)
- Эээ.
if not args.title or args['заголовок'] then return end
args.title or args['заголовок'] and (args.state ~= 'plain' and args.state ~= 'off')
and во всех языках программирования имеет больший приоритет, чем or, а not и подавно.И в одном месте у вас agrs вместо args. — Джек, который построил дом (обс.) 16:33, 13 июня 2016 (UTC)- Нашел второй вариант как сделать, но он тоже чтот не работает. Буду разбираться, а по первому, как объявить приоритет для определенного выражения? Взять его в скобки? С уважением, Iniquity 17:39, 13 июня 2016 (UTC)
- Значит, с программированием мы знакомы плохо. ОК, let me do that for you.
if not (args.title or args['заголовок']) then return end
(args.title or args['заголовок']) and (args.state ~= 'plain' and args.state ~= 'off')
Но вообще естественно сначала создать переменную на основе перечня аргументов, а потом с ней работать. Вижу, вы это уже сделали.local titlemain = args.title or args['заголовок'] or ' '
Пробел интерпретируется как true. — Джек, который построил дом (обс.) 17:51, 13 июня 2016 (UTC)- Я его когда-то знал, но уже всё позабыл. Вот пытаюсь восстанавливать. Да я создал переменную, но её обработка возвращает мне ошибку:
«Ошибка Lua в Модуль: Navbox/sandbox на строке 15: attempt to index local 'args' (a nil value)»
. С уважением, Iniquity 17:57, 13 июня 2016 (UTC)- Внутри функции, внутри функции всё объявлять надо. Вне — только
local p = {}
. См. также mw:Manual:Coding conventions/Lua (там ничего нет толком). — Джек, который построил дом (обс.) 18:26, 13 июня 2016 (UTC)- То есть внутри каждой объявлять? А нельзя как-то вынести во вне? С уважением, Iniquity 18:38, 13 июня 2016 (UTC)
- Там же главная функция есть. Она принимает фрейм (frame), она и должна всем заведовать, другим функциям по необходимости значения из аргументов передавая. — Джек, который построил дом (обс.) 18:58, 13 июня 2016 (UTC)
- Точнее, navbox после первичной переработки передаёт всё хозяйство _navbox, и далее она им распоряжается. — Джек, который построил дом (обс.) 19:02, 13 июня 2016 (UTC)
- Что-то всё равно делаю не так, уже даже новую функцию объявил. С уважением, Iniquity 19:18, 13 июня 2016 (UTC)
return p._aliaces(maintitle)
Это что? Вы в функции p.aliaces вызываете несуществующую функцию p._aliaces, передавая ей maintitle. Зачем? — Джек, который построил дом (обс.) 19:27, 13 июня 2016 (UTC)- Я сделал по примеру w:Module:Color_contrast. Видимо не правильно. Хм, вообще я где-то видел модуль с вынесенными алиасами во вне модуля, счас поищу. С уважением, Iniquity 19:30, 13 июня 2016 (UTC)
- У вас уже есть главная функция в модуле — navbox. Отдельная функция для алиасов явно не нужна. — Джек, который построил дом (обс.) 19:44, 13 июня 2016 (UTC)
- Не хочет он там это делать. С уважением, Iniquity 08:41, 14 июня 2016 (UTC)
- Я не понимаю, что это значит. Неважно, кто делает, важно что и на основе чего. Либо navbox, получающая фрейм (aka хозяйство), либо _navbox, получающая массив (таблицу, точнее, в терминологии Lua) переменных от navbox; я уж не знаю, что там по смыслу вернее. Я и WindEwriX в модуль:Example вообще без всяких функций-посредников обходились. Ну да ладно, учить стандартным практикам программирования вас у меня возможности нет. — Джек, который построил дом (обс.) 13:14, 14 июня 2016 (UTC)
- Ясно, спасибо. С уважением, Iniquity 13:19, 15 июня 2016 (UTC)
- Я не понимаю, что это значит. Неважно, кто делает, важно что и на основе чего. Либо navbox, получающая фрейм (aka хозяйство), либо _navbox, получающая массив (таблицу, точнее, в терминологии Lua) переменных от navbox; я уж не знаю, что там по смыслу вернее. Я и WindEwriX в модуль:Example вообще без всяких функций-посредников обходились. Ну да ладно, учить стандартным практикам программирования вас у меня возможности нет. — Джек, который построил дом (обс.) 13:14, 14 июня 2016 (UTC)
- Не хочет он там это делать. С уважением, Iniquity 08:41, 14 июня 2016 (UTC)
- У вас уже есть главная функция в модуле — navbox. Отдельная функция для алиасов явно не нужна. — Джек, который построил дом (обс.) 19:44, 13 июня 2016 (UTC)
- Я сделал по примеру w:Module:Color_contrast. Видимо не правильно. Хм, вообще я где-то видел модуль с вынесенными алиасами во вне модуля, счас поищу. С уважением, Iniquity 19:30, 13 июня 2016 (UTC)
- Что-то всё равно делаю не так, уже даже новую функцию объявил. С уважением, Iniquity 19:18, 13 июня 2016 (UTC)
- То есть внутри каждой объявлять? А нельзя как-то вынести во вне? С уважением, Iniquity 18:38, 13 июня 2016 (UTC)
- Внутри функции, внутри функции всё объявлять надо. Вне — только
- Я его когда-то знал, но уже всё позабыл. Вот пытаюсь восстанавливать. Да я создал переменную, но её обработка возвращает мне ошибку:
- Значит, с программированием мы знакомы плохо. ОК, let me do that for you.
- Нашел второй вариант как сделать, но он тоже чтот не работает. Буду разбираться, а по первому, как объявить приоритет для определенного выражения? Взять его в скобки? С уважением, Iniquity 17:39, 13 июня 2016 (UTC)
- Кто-нибудь, вставьте, пожалуйста, строчку
local maintitle = args.title or args['заголовок']
куда надо. Чтобы я хоть увидел, где она должна быть по правилам и работала. Дальше разберусь :) С уважением, Iniquity 13:19, 15 июня 2016 (UTC)- Ещё могу дать подсказку — переменные, объявленные вне функций (а args в оригинальном модуле таки объявляется вне, но не заполняется, естественно), действуют во всех них. Остальные надо перебрасывать от функции к функции, чтобы они были доступны.Кстати, я уже вижу там обработку алиасов —
border = trim(args.border or args[1] or '')
, можете сделать по этому шаблону. При этом border объявлена вне функций, можно так же объявить и maintitle. — Джек, который построил дом (обс.) 14:01, 15 июня 2016 (UTC)- ДА! ОНО! Спасибо :) С уважением, Iniquity 14:04, 15 июня 2016 (UTC)
- Ещё могу дать подсказку — переменные, объявленные вне функций (а args в оригинальном модуле таки объявляется вне, но не заполняется, естественно), действуют во всех них. Остальные надо перебрасывать от функции к функции, чтобы они были доступны.Кстати, я уже вижу там обработку алиасов —
Итог
правитьСделано С уважением, Iniquity 09:33, 27 июня 2016 (UTC)
Подсветка
правитьЭто https://www.mediawiki.org/wiki/MediaWiki:Gadget-DotsSyntaxHighlighter.js (http://jsbeautifier.org/) https://www.mediawiki.org/wiki/User:Remember_the_dot/Syntax_highlighter https://www.mediawiki.org/wiki/User:Remember_the_dot/Syntax_highlighter.js разбирает вики-текст "как xml". Говорит, что "For performance reasons...use br/ instead of br".
проблема: после незакрытого <br> начинается сплошная подсветка. <тег> текст - закрашивает только тег, но <тег> текст <тег> запускает закраску текста после первого тега. Можно ли сделать так чтобы цвет заливки текста показывался после обнаружения </тег>? --Hrum-Hrum (обс) 13:48, 9 июня 2016 (UTC)
- Вот это вот "For performance reasons...use br/ instead of br" — антипаттерн в чистом виде. Смешно думать, чтобы современные браузеры, имеющие дело с навороченными браузерными приложениями, испытывали проблемы с интерпретацией <br> как <br />. Там обе страницы обсуждения уже забросали предложениями добавить поддержку обычных <br>, предлагаю присоединиться. — Джек, который построил дом (обс.) 14:47, 9 июня 2016 (UTC)
- "For performance reasons" там относится не к br, а к работе скрипта, как написали ниже "на лету" "регулярки". При редактировании больших статей целиком гаджет отключается, говоря что время его обновления превышает заданное в настройках. --Hrum-Hrum (обс) 17:29, 9 июня 2016 (UTC)
- Я с трудом понимаю, о чём вы, лишь хочу сказать, что, как бы велика ни была статья, будь в ней 500 тегов, 500 проверок того, является ли этот тег тегом br, произойдут молниеносно и на отключение/неотключение гаджета влияния не окажут. — Джек, который построил дом (обс.) 17:42, 9 июня 2016 (UTC)
- Он вроде перерисовывает каждый раз. Т.е. в редакторе вики-кода ввёл символ - скрипт заново отработал. Хорошо видно в статье Россия открытой целиком - секунды две после каждого нажатия "думает". --Hrum-Hrum (обс) 18:03, 9 июня 2016 (UTC)
- Это-то да. Я к тому, что
x="&(?:(?:n(?:bsp|dash)|m(?:dash|inus)|lt|e[mn]sp|thinsp|amp|quot|gt|shy|zwn?j|lrm|rlm|Alpha|Beta|Epsilon|Zeta|Eta|Iota|Kappa|[Mm]u|micro|Nu|[Oo]micron|[Rr]ho|Tau|Upsilon|Chi)|#x[0-9a-fA-F]+);\n*",b="\\[(?:\\[|(?:"+C+"))|\\{(?:\\{\\{?|\\|)|<(?:[:A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-⁰-Ⰰ-、-豈-﷏ﷰ-�][:\\wÀ-ÖØ-öø-˿Ͱ-ͽͿ-⁰-Ⰰ-、-豈-﷏ﷰ-�-\\.·̀-ͯ‿-‿-⁀]*(?=/?>| |\n)|!--[^]*?-->\n*)|(?:"+C.replace("|\\/\\/","")+")[^\\s\"<>[\\]{-}]*[^\\s\",\\.:;<>[\\]{-}]\n*|^(?:=|[*#:;]+\n*|-{4,}\n*)|\\\\'\\\\'(?:\\\\')?|~{3,5}\n*|"+x
— это отнимает процессорное время.match[0].substring(1) == "br"
— это нет. — Джек, который построил дом (обс.) 18:18, 9 июня 2016 (UTC)- Процессорное время займет в любом случае, конкретно в br может быть +пара мс на россию, что действительно будет несущественно. Поискал по статьям - из void-элементов в статьях br и hr, в файлах есть track, одиночный source вряд ли используется, остальные редко. То есть нужно сравнивать ещё и с hr. | Что делает b= ? Если в рувики дописывать, эту часть для рувики можно сократить? --Hrum-Hrum (обс) 19:46, 9 июня 2016 (UTC)
- > То есть нужно сравнивать ещё и с hr.
Как насчёт сравнитьстрока.substring(2)
с"r"
? ;-) Если уж и правда предполагаем, что это будет хоть капельку ощутимо. Во внутренностях кода не разбирался. — Джек, который построил дом (обс.) 19:51, 9 июня 2016 (UTC)- неподойдёт - 632 tr в статьях нашлось --Hrum-Hrum (обс) 20:01, 9 июня 2016 (UTC)
- > То есть нужно сравнивать ещё и с hr.
- Процессорное время займет в любом случае, конкретно в br может быть +пара мс на россию, что действительно будет несущественно. Поискал по статьям - из void-элементов в статьях br и hr, в файлах есть track, одиночный source вряд ли используется, остальные редко. То есть нужно сравнивать ещё и с hr. | Что делает b= ? Если в рувики дописывать, эту часть для рувики можно сократить? --Hrum-Hrum (обс) 19:46, 9 июня 2016 (UTC)
- Это-то да. Я к тому, что
- Он вроде перерисовывает каждый раз. Т.е. в редакторе вики-кода ввёл символ - скрипт заново отработал. Хорошо видно в статье Россия открытой целиком - секунды две после каждого нажатия "думает". --Hrum-Hrum (обс) 18:03, 9 июня 2016 (UTC)
- Я с трудом понимаю, о чём вы, лишь хочу сказать, что, как бы велика ни была статья, будь в ней 500 тегов, 500 проверок того, является ли этот тег тегом br, произойдут молниеносно и на отключение/неотключение гаджета влияния не окажут. — Джек, который построил дом (обс.) 17:42, 9 июня 2016 (UTC)
- "For performance reasons" там относится не к br, а к работе скрипта, как написали ниже "на лету" "регулярки". При редактировании больших статей целиком гаджет отключается, говоря что время его обновления превышает заданное в настройках. --Hrum-Hrum (обс) 17:29, 9 июня 2016 (UTC)
- Тут даже предложили конкретное изменение в код. То есть да, для этого скрипта важна скорость работы, потому что он всё делает на лету, но основное время всегда уходит на замысловатые регулярки, а не на сравнения в лоб двух значений. — Джек, который построил дом (обс.) 15:25, 9 июня 2016 (UTC)
- Википедия:Запросы к администраторам по техническим вопросам#Перенести гаджет в рувики --Hrum-Hrum (обс) 20:07, 9 июня 2016 (UTC)
- Сделано --Hrum-Hrum (обс) 12:24, 25 июня 2016 (UTC)
Модуль ЯзыкПоКоду
правитьНужен модуль аналогичный недоделанному {{ЯзыкПоКоду}}. Суть модуля: Основная часть выбирающая падежи и отсылающая к определенной базе данных, и пять баз с различными падежами названия языков. То есть пользователь задает, например, |падеж =
и |код языка =
и получает в нужном падеже название языка. Дополнительной функцией можно добавить добавление слова "язык" к названию языка, тоже по падежам и за это добавление должен отвечать отдельный параметр. По умолчанию должен быть именительный падеж. С уважением, Iniquity 09:36, 6 июня 2016 (UTC)
- Не знаю, есть ли какая-то польза, но в шаблоне {{lg}} валяется список языков + сокращений + кодов. — Джек, который построил дом (обс.) 11:59, 6 июня 2016 (UTC)
- О, спасибо, знающий человек думаю сможет вытащить. С уважением, Iniquity 15:31, 7 июня 2016 (UTC)
- Давно есть модуль к шаблону «Не переведено 5». Пользуйтесь, улучшайте. St. Johann 17:33, 7 июня 2016 (UTC)
Сейчас в сабже ссылки на подстраницы нужно указывать вручную. Думаю, можно скриптом достать их автоматически (обычно это {{FULLPAGENAME}}/Архив/*). — Ivan Pozdeev 23:10, 1 июня 2016 (UTC)
- Эта тема добавлена в список технических задач для выполнения в будущем с низким приоритетом. Суть: «Автоматизировать {{Архив}}». Список задач доступен на странице проекта; задачи добавляются при помощи шаблона {{подст:техзадача}}. — Джек, который построил дом (обс.) 16:21, 9 октября 2016 (UTC)
Песочница для отладки собственных скриптов
правитьДобрый день! Что посоветуете для отладки собственных скриптов по работе с ВП:ВД? Есть ли документация/лучшие практики ? -- A.sav 13:12, 24 мая 2016 (UTC)
- @A.sav: Видел такое https://en.wiki.x.io/wiki/Wikipedia:User_script_sandbox/Installation . --Hrum-Hrum (обс) 11:02, 9 июня 2016 (UTC)
- @Hrum-Hrum: Спасибо
Починить гаджет WEF:Ссылки, Книга, Издание
правитьНе работает несколько месяцев. Прошу починить, или открыть доступ к редактированию, сам попробую поправить. Обсуждение MediaWiki:Gadget-wefexternallinks.js#Не работает гаджет в связи с изменениями свойств в ВД. --Vladis13 16:30, 17 мая 2016 (UTC)
Итог
правитьСделано. --Vladis13 13:34, 21 мая 2016 (UTC)
Множественное сохранение ссылок на сервисах кэширования веб-ресурсов
правитьЗдравствуйте, не помешало бы наличие скрипта, программы, расширения или т. п., чей принцип действия был бы следующий. Пользователь вставляет в форму множество ссылок, разделяя их пробелом или другим символом, какой пожелает разработчик, нажимает на кнопку и через некоторое время получает, например, на почту ссылки на кэшированные версии веб-страниц с WebCite или аналогичного надёжного сервиса. Например, я вставляю в форму этого предполагаемого ПО ссылки https://ru.wiki.x.io/wiki/WebCite
и https://ru.wiki.x.io/wiki/%D0%92%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F:%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%8B_%D0%BA_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B5%D1%80%D0%B0%D0%BC
, нажимаю на кнопку и вскоре получаю по почте сообщение: «Ссылки на ваши заархивированные страницы — http://www.webcitation.org/example1
http://www.webcitation.org/example2
».
мне кажется, это значительно облегчит процесс архивирования веб-страниц, помогая в борьбе с вымиранием ссылок. Гуглом и вопросами ничего подобного найти не удалось. Спасибо.--Анима ❤ 10:24, 3 апреля 2016 (UTC)
- Также рекомендую задать вопрос или пошерстить в английском разделе. — Джек, который построил дом 10:40, 3 апреля 2016 (UTC)
- Однако, поискав "archiv" и "citat" по главным спискам этих скриптов, а также разные сочетания в поиске, ничего не нашёл. На en:Help:Using the Wayback Machine, en:Wikipedia:Using WebCite есть только букмарклеты для одиночных страниц. В идеале должна быть надстройка над https://tools.wmflabs.org/refill/. Только бы мы так не перегрузили сервисы архивирования. — Джек, который построил дом 11:00, 3 апреля 2016 (UTC)
- Сделано не мной. Как потестирую скрипт на предмет дефектов и багов, и они будут исправлены, отпишусь. Спасибо.-Анима ❤ 08:25, 7 мая 2016 (UTC)