Module:CareerList: Difference between revisions

From Porn Base Central
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
local p = {}
local p = {}


-- Функция для получения конфигурации по сайту
function p.CareerList(frame)
local function getSiteConfig(site)
local args = frame.args
local config = mw.loadData('Модуль:CareerList/Конфигурация')[site:lower()]
local site = string.lower(args.site)
local id = args.id or ''
if not config then
error(string.format('Не найдена конфигурация для сайта "%s"', site))
local alias = args.alias or args[1]
end
local notes = args.notes or 'N/A'
return config
end


-- Функция для генерации ссылки по конфигурации
-- получаем конфигурацию сайтов
local sites = mw.loadData('Module:CareerList/config')
local function generateLink(config, id)
return config.url:gsub('%$1', id)
local siteData = sites[site]
end


function p.main(frame)
if not siteData then
local args = frame:getParent().args
return ''
end


-- Проверяем передан ли параметр list
-- заменяем переменную $1 в URL на значение id
local url = siteData.url:gsub('%$1', id)
local list = args.list or error('Не задан список')


-- Разбиваем список на отдельные строки
-- формируем ссылку
local link = string.format('[%s %s]', url, args.site)
local items = mw.text.split(list, '%s*{{CareerList%s*|')


-- Генерируем HTML-таблицу
-- формируем ячейки таблицы
local cells = {
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'
link,
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'


-- Перебираем каждый элемент списка
-- возвращаем сформированную строку таблицы
local i = 1
return string.format('|-\n| %s || %s || %s || %s', unpack(cells))
for _, item in ipairs(items) do
end
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>'
function p.CareerListTop(frame)
local args = frame.args
local list = args.list or ''


return string.format([=[
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 p
return

Revision as of 22: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