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
Advertisement
Модуль:КШВ/Таблиця
Advertisement