Обсуждение проекта:Технические работы/Модули
Этот вики-проект был объединён с проектом Технические работы. Итог подведён согласно обсуждению от 2016. |
О порядке переписывания шаблонов на Lua[править код]
Выскажу тут свои предварительные соображения. Очевидно, наибольший эффект Lua даст для шаблонов из Категория:Шаблоны:Работа со строками; см. en:Module:String и en:Module:StringReplace, что́ их заменит. Однако (я не проводил исследований, но при желании проверьте ботами) 99 % вызовов данных функций приходится на их работу в составе конвертеров дат и локативов, для которых проще написать собственную библиотеку, чем пытаться применять вызовы Lua в их шаблонном коде. Так что для предотвращения избыточной регенерации страниц надо сначала переделать шаблоны, которые не используются другими шаблонами (What links here с ограничением по пространству имён ненадёжно, поскольку есть блоки includeonly и шаблон {{ifsubst}}); некоторые другие при этом, возможно, просто удалятся по неиспользуемости.
При переделке надо сразу предусматривать совместимость с подстановкой, то есть употреблять {{{{{|safesubst:}}}#invoke:...}} и заключать комментарии в noinclude; после этого все шаблоны из Шаблоны для подстановки:Работа со строками можно заменить обычными и удалить. Также можно попутно убрать лишний префикс из категорий, переместив шаблоны дат в Категория:Шаблоны:Дата и время.
Кроме строковых и «датских» шаблонов, можно подумать о переделке Шаблон:Карточка и других длинных табличных шаблонов, порой приводящих страницу к техническому лимиту. Lua может обрабатывать его параметры через цикл, тогда очень короткий код сможет обеспечить любое разумное число строк. Ignatus 10:25, 13 марта 2013 (UTC)
- По-хорошему, переписывать надо всё, маркированное {{Эзотерика}}. Но строковые функции в первую очередь, конечно. Потом конвертеры и cite. --aGRa 10:37, 13 марта 2013 (UTC)
Основные модули[править код]
Надо продумать структуру основных модулей, на которых будут работать СИШ и другие важные вещи. Их надо написать хорошо и поставить на защиту. Примерный список:
- Module:ru
- Языковые функции для русского языка (числа, падежи и т. п.)
- Module:string
- Строковые функции, см. en:Module:String и en:Module:StringReplace
- Module:dates
- Функции для дат (конвертер русской даты в движкопонятную и т. п., в какой степени совать сюда функционал {{ДатаРождения}} — ?)
- Module:wikitext
- (название рабочее) Конверсии викитекста, например, девикификация
- Module:cite
- Ссылки (я пока не очень понял, что там конкретно необходимо, но это был один из основных аргументов за включение Scribunto)
- Module:Math
- Математические функции
- Module:Coordinates
- Координаты
- ???
- Что нам ещё надо от скриптов?
--Ignatus 20:49, 13 марта 2013 (UTC)
- В англовики шаблоны, уже переписанные на Lua лежат в категории en:Category:Lua-based templates. Это можно использовать как ориентир. --Emaus 06:15, 14 марта 2013 (UTC)
- Ну, там пока не всё переписано, да и не всё нам, наверное, надо. Там будем смотреть, чем можно поживиться, а основной ориентир пока Категория:Шаблоны:Эзотерические. Ignatus 09:16, 14 марта 2013 (UTC)
- Самое главное забыли: en:Module:UnitTests. --AlphaRho 10:06, 14 марта 2013 (UTC) В смысле с него надо начать, а остальные писать уже с тестами. --AlphaRho 10:08, 14 марта 2013 (UTC)
Насущные проблемы[править код]
Проблемы, которые мне известны и которые похоже без LUA не решить:
- Обсуждение шаблона:Персона/Дата#Если дата смерти точно неизвестна, хотелось бы, чтобы шаблон понимал также форматы «?.03.1497» — «март 1497», «?» — «не известна». И соответственно не помещал такие статьи в категорию Википедия:Статьи с ручной викификацией дат в карточке.
- Обсуждение шаблона: Персона/Дата#Обработка тэгов <ref></ref>
- Массовое попадание статей с карточкой {{Taxon}} в Страницы с превышением глубины раскрытия
- Параметр «Бассейн» карточки {{Река}}, см., например Эсса, формат записи получается очень странным: «Лепельское/Улла/(река)/Западная Двина/Балтийское море», то есть косая черта является разделителем и элементов списка и сложного названия (Улла/(река)), что весьма неочевидно, да и неудобно. Хотелось бы, чтобы эта запись выглядела как «Лепельское/Улла (река)/Западная Двина/Балтийское море», то есть чтобы косая черта была разделителем только элементов списка.
Может кто-нибудь возьмётся? — Ivan A. Krestinin 18:29, 15 марта 2013 (UTC)
- Ещё одну насущную проблему заметил: с шаблоном {{До символа}}: Обсуждение шаблона:Пролив#Автоматическая викификация. — Ivan A. Krestinin 20:24, 18 апреля 2013 (UTC)
- Убирать уточнение лучше с помощью функции Module:Wikitext::nodis():
({{#invoke:wikitext|nodis|залив Королевы Шарлотты (Канада)}})
= (залив Королевы Шарлотты). Ignatus 16:50, 20 апреля 2013 (UTC)
- Убирать уточнение лучше с помощью функции Module:Wikitext::nodis():
- Начал писать Module:Biology, который призван убрать рекурсивные шаблоны из таксобоксов. Ignatus 16:01, 21 апреля 2013 (UTC)
Объектный модуль для строк Юникода[править код]
Написал модуль для простой работы со строками с цепными операторами: Module:Ustring. Прошу юзать и тестить. Ignatus 11:54, 16 мая 2013 (UTC)
Создание простейшей реляционной БД на Lua[править код]
Предлагаю обсудить вот какой вопрос. В википедии имеется множество всевозможных списокв как в пространстве статей, так и в служебных пространствах. Статьи я сейчас предлагаю не обсуждать, там все сложно и индивидуально. Но можно обратить внимание на служебные пространства. Какие списки обычно используются? Координационные, списки «к созданию», списки номинаций (к удалению, к улучшению, к переименованию и т. п.), есть также списки проектов, участников (по разным их признакам), списки шаблонов, и т. п. Между этими списками часто есть взаимосвязь.
Сейчас эти списки хранятся либо в виде таблиц, либо в виде маркированных списков (ul, li) либо в виде набора шаблонов для каждого элемента, которые в конечном итоге также образуют таблицы или списки. Обновлять их очень неудобно, сверять и синхронизировать вообще очень сложно.
Так вот не попробовать ли на Lua реализовать простейшую текстовую БД c возможностью вызова связанных таблиц? Тогда списки хранились бы в виде Луа-таблиц типа p={ el1={}, el2={} ...} вместе со схемой данных, где указывались бы названия полей, ключевые поля и, возможно, даже индексы, а также стили оформления. Сами же списки формировались бы при помощи шаблонов, которые бы автоматически формировали список на основании перечня записей, схемы данных и стилей оформления. Причем можно было бы даже подставлять поля связанных таблиц через include-теги. Ботами с такими списками работать было бы проще. Более того, можно было бы написать интерфейсные скрипты для удобной работы с такими списками (добавление новой записи, удаление, копирование, редактирование и т. д.).
По-моему это дало бы очень мощный результат с точки зрения работы с наборами данных. Хотя надо обсудить вопросы производительности и использования expensive функций Lua. Что думаете?--109.73.11.98 10:03, 30 июня 2014 (UTC)