Модуль:КБУ/Таблица

Материал из Minecraft Wiki
Перейти к: навигация, поиск
[создать | история | обновить]Документация
У этого модуля нет документации. Если вы знаете, как использовать этот модуль, пожалуйста, добавьте соответствующую информацию.
p = {}

local data = {}
data.imports = {
    PROCESS_ARGS = "Модуль:ProcessArgs",
    CSD = "Модуль:КБУ"
}
data.arg_names = {
    LETTER = "буква", -- буква, которой обозначаются критерии в таблице
    NUMBER = "номер", -- дополнительное значение, переопределяющее идентификатор критерия (например, "О5")
    CRITERION = "критерий" -- дополнительное значение, переопределяющее текст критерия
}
data.colors = {
    EVEN_ROW = "#abf692", -- фон чётных строк в таблице (темнее)
    ODD_ROW = "#caf6bb" -- фон нечётных строк в таблице (светлее)
}
data.error_messages = {
    NO_LETTER = "Не указана буква, входящая в идентификатор критерия.",
    NO_CSD_FUNCTION = "Не найден модуль " .. data.imports.CSD .. "."
}

function p.table(f)
    local args = require(data.imports.PROCESS_ARGS).merge(true)
    
    local criterion = require(data.imports.CSD).criterion
    assert(criterion, data.error_messages.NO_CSD_FUNCTION)
    
    local criteriaLetter = args[data.arg_names.LETTER]
    assert(criteriaLetter, data.error_messages.NO_LETTER)
    
    local resultTable = {}
    table.insert(resultTable, "{| style=\"width: 100%; border-collapse: collapse\" cellpadding=\"10\"\n")
    table.insert(resultTable, "!width=\"50%\"| Критерий\n")
    table.insert(resultTable, "!width=\"50%\"| Описание\n")
    
    local index = 1
    while args[index] do
        local indexString = tostring(index)
        local numberOverride = args[data.arg_names.NUMBER .. indexString]
        local criterionOverride = args[data.arg_names.CRITERION .. indexString]
        local criterionNumber = criteriaLetter .. indexString
        
        table.insert(resultTable, "|-style=\"background-color: ")
        if index % 2 == 0 then
            table.insert(resultTable, data.colors.EVEN_ROW)
        else
            table.insert(resultTable, data.colors.ODD_ROW)
        end
        table.insert(resultTable, "\"\n")
        
        table.insert(resultTable, "| <big id=\"")
        table.insert(resultTable, numberOverride or criterionNumber)
        table.insert(resultTable, "\"><strong>")
        table.insert(resultTable, criterionOverride or criterion({criterionNumber, "номер"}))
        table.insert(resultTable, "</strong></big>\n")
        table.insert(resultTable, "| ")
        table.insert(resultTable, args[index])
        table.insert(resultTable, "\n")
        
        index = index + 1
    end
    
    table.insert(resultTable, "|}")
    return table.concat(resultTable)
end

return p