Открыть меню
Открыть персональное меню
Вы не представились системе
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 list = {}
     local notes = {}
     local index = 1
      
 
     -- Перебор всех переданных параметров
     -- Проходим по параметрам note_1, note_2 и т.д.
     for key, value in pairs(frame.args) do
     while frame.args['note_' .. index] do
         -- Проверяем, начинается ли ключ с 'note_'
         local note = frame.args['note_' .. index]
         if string.match(key, "^note_") and value ~= "" then
         local subnoteIndex = 1
            -- Убедимся, что это не пустое значение и добавим его в список
        local subnotes = {}
             table.insert(notes, value)
 
        -- Проверяем на наличие вложенных примечаний (note_1_1, note_1_2 и т.д.)
        while frame.args['note_' .. index .. '_' .. subnoteIndex] do
             table.insert(subnotes, '<li>' .. frame.args['note_' .. index .. '_' .. subnoteIndex] .. '</li>')
            subnoteIndex = subnoteIndex + 1
         end
         end
    end


        -- Добавляем основной пункт и вложенные (если есть)
    -- Если список примечаний пуст, возвращаем сообщение
        if #subnotes > 0 then
    if #notes == 0 then
            table.insert(list, '<li>' .. note .. '<ul>' .. table.concat(subnotes, '') .. '</ul></li>')
         return "Примечаний нет."
         else
    end
            table.insert(list, '<li>' .. note .. '</li>')
        end


         index = index + 1
    -- Формирование HTML-списка
    local result = '<ul>'
    for _, note in ipairs(notes) do
         result = result .. '<li>' .. note .. '</li>'
     end
     end
    result = result .. '</ul>'


    -- Возвращаем список в HTML-формате
     return result
     return table.concat(list, '')
end
end


return p
return p

Версия от 13:27, 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 notes = {}
    
    -- Перебор всех переданных параметров
    for key, value in pairs(frame.args) do
        -- Проверяем, начинается ли ключ с 'note_'
        if string.match(key, "^note_") and value ~= "" then
            -- Убедимся, что это не пустое значение и добавим его в список
            table.insert(notes, value)
        end
    end

    -- Если список примечаний пуст, возвращаем сообщение
    if #notes == 0 then
        return "Примечаний нет."
    end

    -- Формирование HTML-списка
    local result = '<ul>'
    for _, note in ipairs(notes) do
        result = result .. '<li>' .. note .. '</li>'
    end
    result = result .. '</ul>'

    return result
end

return p