Module:CareerList: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
PeaceDeadC (talk | contribs) No edit summary |
PeaceDeadC (talk | contribs) No edit summary |
||
| Line 1: | Line 1: | ||
local p = {} |
local p = {} |
||
-- Функция для получения конфигурации по сайту |
|||
| ⚫ | |||
local function getSiteConfig(site) |
|||
| ⚫ | |||
local config = mw.loadData('Модуль:CareerList/Конфигурация')[site:lower()] |
|||
local site = string.lower(args.site) |
|||
if not config then |
|||
error(string.format('Не найдена конфигурация для сайта "%s"', site)) |
|||
local alias = args.alias or args[1] |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
-- Функция для генерации ссылки по конфигурации |
|||
| ⚫ | |||
local function generateLink(config, id) |
|||
return config.url:gsub('%$1', id) |
|||
| ⚫ | |||
end |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
-- Проверяем передан ли параметр list |
|||
-- заменяем переменную $1 в URL на значение id |
|||
local |
local list = args.list or error('Не задан список') |
||
-- Разбиваем список на отдельные строки |
|||
-- формируем ссылку |
|||
local |
local items = mw.text.split(list, '%s*{{CareerList%s*|') |
||
-- Генерируем HTML-таблицу |
|||
-- формируем ячейки таблицы |
|||
local |
local html = '<table class="wikitable CareerListTable">\n' |
||
html = html .. '<tr style="background-color:#F2F2F2;">\n' |
|||
siteData.label, |
|||
html = html .. '<th style="text-align:left;">Website/Studio</th>\n' |
|||
| ⚫ | |||
html = html .. '<th style="text-align:left;">Site</th>\n' |
|||
alias, |
|||
html = html .. '<th style="text-align:left;">ID</th>\n' |
|||
notes |
|||
html = html .. '<th style="text-align:left;">Alias</th>\n' |
|||
| ⚫ | |||
html = html .. '<th style="text-align:left;">Notes</th>\n' |
|||
html = html .. '</tr>\n' |
|||
-- Перебираем каждый элемент списка |
|||
-- возвращаем сформированную строку таблицы |
|||
| ⚫ | |||
return string.format('|-\n| %s || %s || %s || %s', unpack(cells)) |
|||
for _, item in ipairs(items) do |
|||
| ⚫ | |||
| ⚫ | |||
local itemArgs = mw.text.split(item, '%|') |
|||
local site = mw.text.trim(itemArgs[1] or '') |
|||
local id = mw.text.trim(itemArgs[2] or '') |
|||
local alias = mw.text.trim(itemArgs[3] or '') |
|||
| ⚫ | |||
| ⚫ | |||
local config = getSiteConfig(site) |
|||
-- Генерируем HTML-строку для текущего элемента |
|||
local rowHtml = '<tr style="background-color:'..(i%2==0 and '#F3F3F3' or '#FFFFFF')..';">\n' |
|||
rowHtml = rowHtml .. '<td style="background-color:'..(config.type == 'Studio' and '#DADADA' or '#E7E7E7')..';">'..config.type..'</td>\n' |
|||
rowHtml = rowHtml .. '<td><a href="'..generateLink(config, id)..'">'..config.name..'</a></td>\n' |
|||
rowHtml = rowHtml .. '<td>'..id..'</td>\n' |
|||
rowHtml = rowHtml .. '<td>'..(alias ~= '' and alias or config.name)..'</td>\n' |
|||
rowHtml = rowHtml .. '<td>'..(notes ~= '' and notes or 'N/A')..'</td>\n' |
|||
rowHtml = rowHtml .. '</tr>\n' |
|||
html = html .. rowHtml |
|||
i = i + 1 |
|||
| ⚫ | |||
| ⚫ | |||
html = html .. '</table>' |
|||
function p.CareerListTop(frame) |
|||
local args = frame.args |
|||
local list = args.list or '' |
|||
return |
return html |
||
<div class="mw-parser-output"><table class="wikitable career-list" style="width:100%%;"> |
|||
<caption>%s</caption> |
|||
<thead> |
|||
<tr> |
|||
<th>Категория</th> |
|||
<th>Ссылка</th> |
|||
<th>Псевдоним</th> |
|||
<th>Заметки</th> |
|||
</tr> |
|||
</thead> |
|||
<tbody>%s</tbody></table></div>]=], args.title or '', list) |
|||
end |
end |
||
return |
return |
||
Revision as of 19:25, 12 March 2023
Documentation for this module may be created at Module:CareerList/doc
local p = {}
-- Функция для получения конфигурации по сайту
local function getSiteConfig(site)
local config = mw.loadData('Модуль:CareerList/Конфигурация')[site:lower()]
if not config then
error(string.format('Не найдена конфигурация для сайта "%s"', site))
end
return config
end
-- Функция для генерации ссылки по конфигурации
local function generateLink(config, id)
return config.url:gsub('%$1', id)
end
function p.main(frame)
local args = frame:getParent().args
-- Проверяем передан ли параметр list
local list = args.list or error('Не задан список')
-- Разбиваем список на отдельные строки
local items = mw.text.split(list, '%s*{{CareerList%s*|')
-- Генерируем HTML-таблицу
local html = '<table class="wikitable CareerListTable">\n'
html = html .. '<tr style="background-color:#F2F2F2;">\n'
html = html .. '<th style="text-align:left;">Website/Studio</th>\n'
html = html .. '<th style="text-align:left;">Site</th>\n'
html = html .. '<th style="text-align:left;">ID</th>\n'
html = html .. '<th style="text-align:left;">Alias</th>\n'
html = html .. '<th style="text-align:left;">Notes</th>\n'
html = html .. '</tr>\n'
-- Перебираем каждый элемент списка
local i = 1
for _, item in ipairs(items) do
if item ~= '' then
local itemArgs = mw.text.split(item, '%|')
local site = mw.text.trim(itemArgs[1] or '')
local id = mw.text.trim(itemArgs[2] or '')
local alias = mw.text.trim(itemArgs[3] or '')
local notes = mw.text.trim(itemArgs[4] or '')
-- Получаем конфигурацию для сайта
local config = getSiteConfig(site)
-- Генерируем HTML-строку для текущего элемента
local rowHtml = '<tr style="background-color:'..(i%2==0 and '#F3F3F3' or '#FFFFFF')..';">\n'
rowHtml = rowHtml .. '<td style="background-color:'..(config.type == 'Studio' and '#DADADA' or '#E7E7E7')..';">'..config.type..'</td>\n'
rowHtml = rowHtml .. '<td><a href="'..generateLink(config, id)..'">'..config.name..'</a></td>\n'
rowHtml = rowHtml .. '<td>'..id..'</td>\n'
rowHtml = rowHtml .. '<td>'..(alias ~= '' and alias or config.name)..'</td>\n'
rowHtml = rowHtml .. '<td>'..(notes ~= '' and notes or 'N/A')..'</td>\n'
rowHtml = rowHtml .. '</tr>\n'
html = html .. rowHtml
i = i + 1
end
end
html = html .. '</table>'
return html
end
return