Открыть меню
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

Модуль:RenderSubnotes: различия между версиями

Материал из wiki.iccup.org
Нет описания правки
Нет описания правки
Строка 2: Строка 2:


function p.renderNotes(frame)
function p.renderNotes(frame)
     local parent = frame:getParent() -- Получаем все параметры родительского шаблона
     local parent = frame:getParent()
     local notes = {}
     local notes = {}


Строка 12: Строка 12:
         elseif key:match("^note_%d+_%d+$") and value ~= "" then
         elseif key:match("^note_%d+_%d+$") and value ~= "" then
             -- Вложенные заметки (note_1_1, note_1_2 и т.д.)
             -- Вложенные заметки (note_1_1, note_1_2 и т.д.)
             local mainKey = key:match("^(note_%d+)_") -- Найти основную заметку (например, note_1)
             local mainKey = key:match("^(note_%d+)_") -- Извлекаем основной ключ (например, note_1)
             if mainKey then
             if mainKey and notes[mainKey] then
                -- Проверяем, есть ли основная заметка в списке
                -- Добавляем дочернюю заметку в subNotes основного ключа
                if notes[mainKey] then
                table.insert(notes[mainKey].subNotes, value)
                    -- Добавляем подзаметку в список subNotes основной заметки
                    table.insert(notes[mainKey].subNotes, value)
                else
                    -- Если основной заметки нет, создаем ее с пустым значением и добавляем подзаметку
                    notes[mainKey] = {value = "", subNotes = {value}}
                end
             end
             end
         end
         end
Строка 35: Строка 29:
     for _, note in pairs(notes) do
     for _, note in pairs(notes) do
         result = result .. '<li>' .. note.value
         result = result .. '<li>' .. note.value
         if #note.subNotes > 0 then
         if #note.subNotes > 0 then
             -- Вложенные заметки
             -- Вложенные заметки
Строка 47: Строка 40:
     end
     end
     result = result .. '</ul>'
     result = result .. '</ul>'
result = mw.dumpObject(notes)
result = mw.dumpObject(notes)
     return result
     return result

Версия от 14:12, 28 сентября 2024

Описание

Модуль RenderSubnotes используется для рендеринга примечаний и действий с изображениями в карточках героев или других информационных блоках. Этот модуль предоставляет две основные функции: renderNotes для отображения примечаний и renderItemsAction для рендеринга действий с изображениями.

Использование

Функция renderNotes

Функция renderNotes используется для отображения примечаний, где примечания могут быть как основными, так и вложенными. Основные примечания задаются параметрами вида note_1, note_2 и так далее. Вложенные примечания задаются параметрами вида note_1_1, note_1_2 и так далее.

Пример использования:

{{#invoke:RenderSubnotes|renderNotes
| note_1 = Примечание 1
| note_1_1 = Подпримечание 1.1
| note_1_2 = Подпримечание 1.2
| note_2 = Примечание 2
}}

Функция renderItemsAction

Функция renderItemsAction используется для отображения действий с изображениями. Описание действия задается параметром вида itemsActionDescr_1, а изображение – параметром itemsActionImage_1_1, где числа после символа подчеркивания должны совпадать для правильной привязки изображения к действию.

Пример использования:

{{#invoke:RenderSubnotes|renderItemsAction
| itemsActionDescr_1 = Описание действия 1
| itemsActionImage_1_1 = action_image_1.png
| itemsActionImage_1_2 = action_image_2.png
| itemsActionDescr_2 = Описание действия 2
| itemsActionImage_2_1 = action_image_3.png
}}

Параметры

Параметры для renderNotes

  • note_X – основное примечание, где X – порядковый номер.
  • note_X_Y – вложенное примечание, где X – номер основного примечания, а Y – номер вложенного примечания.

Параметры для renderItemsAction

  • itemsActionDescr_X – описание действия, где X – порядковый номер.
  • itemsActionImage_X_Y – изображение для действия, где X – номер действия, а Y – номер изображения для данного действия.

Примечания

  • Основные примечания могут иметь несколько уровней вложенности.
  • Изображения для действий должны быть привязаны к правильным действиям с помощью одинаковых порядковых номеров в параметрах.



local p = {}

function p.renderNotes(frame)
    local parent = frame:getParent()
    local notes = {}

    -- Проходим по всем параметрам родительского шаблона
    for key, value in pairs(parent.args) do
        if key:match("^note_%d+$") and value ~= "" then
            -- Основные заметки (note_1, note_2 и т.д.)
            notes[key] = {value = value, subNotes = {}}
        elseif key:match("^note_%d+_%d+$") and value ~= "" then
            -- Вложенные заметки (note_1_1, note_1_2 и т.д.)
            local mainKey = key:match("^(note_%d+)_") -- Извлекаем основной ключ (например, note_1)
            if mainKey and notes[mainKey] then
                -- Добавляем дочернюю заметку в subNotes основного ключа
                table.insert(notes[mainKey].subNotes, value)
            end
        end
    end

    -- Если нет примечаний, выводим сообщение
    if next(notes) == nil then
        return "Примечаний нет."
    end

    -- Формируем список примечаний
    local result = '<ul>'
    for _, note in pairs(notes) do
        result = result .. '<li>' .. note.value
        if #note.subNotes > 0 then
            -- Вложенные заметки
            result = result .. '<ul>'
            for _, subNote in ipairs(note.subNotes) do
                result = result .. '<li>' .. subNote .. '</li>'
            end
            result = result .. '</ul>'
        end
        result = result .. '</li>'
    end
    result = result .. '</ul>'
	result = mw.dumpObject(notes)
    return result
end

return p