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)
-- load configuration from a separate file
local args = frame.args
local config = mw.loadData('Module:CareerList/config')
local site = string.lower(args.site)
local id = args.id or ''
local alias = args.alias or args[1]
local notes = args.notes or 'N/A'


-- получаем конфигурацию сайтов
-- helper function to get the config value for a site
local sites = mw.loadData('Module:CareerList/config')
local function getConfigValue(site, key)
return config[site] and config[site][key]
local siteData = sites[site]
end


if not siteData then
-- helper function to format the alias or notes field
return ''
local function formatText(text)
end
return text ~= '' and text or 'N/A'
end


-- заменяем переменную $1 в URL на значение id
-- helper function to generate the table row
local url = siteData.url:gsub('%$1', id)
local function generateTableRow(site, id, alias, notes, rowColor)

local siteColor = getConfigValue(site, 'color')
-- формируем ссылку
local cellColor = site == 'Website' and '#E7E7E7' or '#DADADA'
local rowStyle = string.format('background-color: %s;', rowColor)
local link = string.format('[%s %s]', url, args.site)

local siteStyle = string.format('background-color: %s;', siteColor or cellColor)
-- формируем ячейки таблицы
local siteName = string.upper(site)
local url = getConfigValue(site, 'url'):gsub('%$1', id)
local cells = {
siteData.label,
return string.format([[
<tr style="%s">
link,
<td style="%s">%s</td>
alias,
notes
<td style="%s"><a href="%s">%s</a></td>
}
<td style="%s">%s</td>

<td style="%s">%s</td>
-- возвращаем сформированную строку таблицы
</tr>
return string.format('|-\n| %s || %s || %s || %s', unpack(cells))
]], rowStyle, siteStyle, siteName, cellColor, url, site, cellColor, alias, cellColor, formatText(notes))
end
end


-- main function to generate the table
function p.CareerListTop(frame)
function p.main(frame)
local args = frame.args
local args = frame.args
local list = args.list or ''
local list = args.list or ''

local rows = ''
return string.format([=[
local rowColor = '#FFFFFF'
{| class="wikitable"
for row in mw.text.gsplit(list, '%{%{CareerList') do
|+ %s
local params = mw.text.split(row, '|')
! Категория
local site = params[2] or ''
! Ссылка
local id = params[3] or ''
! Псевдоним
local alias = params[4] or mw.title.getCurrentTitle().text
! Заметки
local notes = params[5] or ''
%s]=], args.title or '', list)
rows = rows .. generateTableRow(site, id, alias, notes, rowColor)
rowColor = rowColor == '#FFFFFF' and '#F3F3F3' or '#FFFFFF'
end
local tableStyle = 'background-color: #F2F2F2; width: 100%;'
return string.format('<table style="%s">%s</table>', tableStyle, rows)
end
end



Revision as of 21:22, 12 March 2023

Documentation for this module may be created at Module:CareerList/doc

local p = {}

function p.CareerList(frame)
    local args = frame.args
    local site = string.lower(args.site)
    local id = args.id or ''
    local alias = args.alias or args[1]
    local notes = args.notes or 'N/A'

    -- получаем конфигурацию сайтов
    local sites = mw.loadData('Module:CareerList/config')
    local siteData = sites[site]

    if not siteData then
        return ''
    end

    -- заменяем переменную $1 в URL на значение id
    local url = siteData.url:gsub('%$1', id)

    -- формируем ссылку
    local link = string.format('[%s %s]', url, args.site)

    -- формируем ячейки таблицы
    local cells = {
        siteData.label,
        link,
        alias,
        notes
    }

    -- возвращаем сформированную строку таблицы
    return string.format('|-\n| %s || %s || %s || %s', unpack(cells))
end

function p.CareerListTop(frame)
    local args = frame.args
    local list = args.list or ''

    return string.format([=[
{| class="wikitable"
|+ %s
! Категория
! Ссылка
! Псевдоним
! Заметки
%s]=], args.title or '', list)
end

return p