Обсуждение проекта:Технические работы/Модули

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

О порядке переписывания шаблонов на 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 не решить:

Может кто-нибудь возьмётся? — Ivan A. Krestinin 18:29, 15 марта 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)[ответить]