Модул:Label
Документация за този модул може да бъде създадена на Модул:Label/doc
require('Module:No globals')
local labelsData = mw.loadData('Module:Label/data')
local Langs = require('Module:Langs')
local p = {}
local function trimObjVals(args, list)
local r = {}
for i, v in ipairs(list) do
r[v] = mw.text.trim( args[v] or '' )
end
return r
end
-- replaces one leading and one trailing underscore with a space
local function undToSp(str)
return string.gsub(string.gsub(str, '^_', ' '), '_$', ' ')
end
function p.main(frame)
local inMainNS = mw.title.getCurrentTitle().namespace == 0
local a = trimObjVals(frame.args, { 'lang', 'note', 'userLang',
's1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', -- separators
'before1', 'before2', 'before3', 'before4', 'before5', 'before6', 'before7', 'before8', 'before9', -- notes
'after1', 'after2', 'after3', 'after4', 'after5', 'after6', 'after7', 'after8', 'after9'}) -- notes
local ids = trimObjVals(frame.args, {
'id1', 'id2', 'id3', 'id4', 'id5', 'id6', 'id7', 'id8', 'id9'}) -- IDs from /data
assert( a.id1 ~= '' or a.note ~= '', 'Липсва стойност на параметъра за етикета' )
local objs = {}
local id, iLabelsData, sep
for i = 1, 9 do
id = ids['id' .. i]
if id and id ~= '' then
iLabelsData = labelsData[id]
assert(iLabelsData and iLabelsData.label, 'Етикет за ' .. id
.. ' не е зададен в [[Модул:Label/data]]. Използвайте before1= до 9 и after1= до 9 за уточнения към даден етикет, note= за бележка накрая.')
objs[#objs + 1] = trimObjVals( iLabelsData, {'link', 'label', 'labelEn', 'topcat'} )
objs[#objs].id = id
objs[#objs].noteBefore = a['before' .. i] ~= '' and undToSp(a['before' .. i]) or ''
objs[#objs].noteAfter = a['after' .. i] ~= '' and undToSp(a['after' .. i]) or ''
sep = undToSp(a['s' .. i])
objs[#objs].separ = (sep ~= '' and sep or ',') .. ' '
end
end
local langNameForCat = a.lang ~= ''
and ( Langs.codeToName_({code = a.lang, toLang = 'bg', 'definite', 'langWord'}) or a.lang )
or ''
local r = '<span class="contextlabel">('
local prevSepar = ''
for i, o in ipairs(objs) do
r = r .. prevSepar
if o.noteBefore ~= '' then
r = r .. o.noteBefore
end
if o.link ~= '' then
r = r .. '[[' .. o.link .. '|' .. o.label .. ']]'
else
r = r .. o.label
end
if a.userLang == 'en' and o.labelEn ~= '' then
r = r .. ' <span class="enTranslation">' .. o.labelEn .. '</span>'
end
if o.noteAfter ~= '' then
r = r .. o.noteAfter
end
prevSepar = o.separ
if inMainNS and o.topcat ~= '' then
if a.lang == 'none' or a.lang == '' then
r = r .. '[[Категория:' .. o.topcat .. ']]'
else
r = r .. '[[Категория:' .. o.topcat .. '/' .. langNameForCat .. ']]'
end
end
end
if a.note ~= '' then
r = r .. prevSepar .. a.note
end
r = r .. ')</span>'
if a.lang == '' then
r = r .. '[[Категория:Страници с шаблони с липсващ езиков код]]'
end
return r
end
return p