Модул:Infobox — разлика између измена
Пређи на навигацију
Пређи на претрагу
м (Ispravka logike za dohvatanje RTI semestra) |
м (Ne mora eksplicitno da se kaže za koji odsek ukoliko može da se zaključi iz parametra za odsek) |
||
Ред 9: | Ред 9: | ||
end | end | ||
local function catSemester(cats, arg) | local function decomposeDepartments(arg) | ||
local decomposed = {} | |||
for _, v in pairs(arg) do | |||
decomposed[v] = true | |||
end | |||
return decomposed | |||
end | |||
local function catSemester(cats, arg, departments) | |||
local semester = tonumber(mw.ustring.match(arg, '%d+')) | local semester = tonumber(mw.ustring.match(arg, '%d+')) | ||
local matchSI = mw.ustring.match(arg, '%d+ %(СИ%)') | local matchSI = mw.ustring.match(arg, '%d+ %(СИ%)') | ||
local matchRTI = mw.ustring.match(arg, '(%d+) %(РТИ%)') | local matchRTI = mw.ustring.match(arg, '(%d+) %(РТИ%)') | ||
if (not | if (not departments['РТИ']) or matchSI then | ||
cat(cats, data.semesters[semester] .. ' семестар') | cat(cats, data.semesters[semester] .. ' семестар') | ||
end | end | ||
if (not | if (not departments['СИ']) or matchRTI then | ||
local semesterRTI = matchRTI and tonumber(matchRTI) or semester | local semesterRTI = matchRTI and tonumber(matchRTI) or semester | ||
cat(cats, data.semesters[semesterRTI] .. ' семестар (РТИ)') | cat(cats, data.semesters[semesterRTI] .. ' семестар (РТИ)') | ||
Ред 25: | Ред 33: | ||
local cats = {} | local cats = {} | ||
local args = frame:getParent().args | local args = frame:getParent().args | ||
catSemester(cats, args['семестар']) | local departments = decomposeDepartments(args['одсек']) | ||
catSemester(cats, args['семестар'], departments) | |||
return table.concat(cats) | return table.concat(cats) | ||
end | end | ||
return p | return p |
Верзија на датум 19. фебруар 2022. у 23:34
Модул за аутокатегоризацију на основу података прослеђених у инфокутију за предмет. Овај модул такође довлачи потребне податке за рад из модула са подацима.
local p = {}
local data = mw.loadData('Module:Infobox/data')
local function cat(cats, name)
table.insert(cats, '[[Категорија:')
table.insert(cats, name)
table.insert(cats, ']]')
end
local function decomposeDepartments(arg)
local decomposed = {}
for _, v in pairs(arg) do
decomposed[v] = true
end
return decomposed
end
local function catSemester(cats, arg, departments)
local semester = tonumber(mw.ustring.match(arg, '%d+'))
local matchSI = mw.ustring.match(arg, '%d+ %(СИ%)')
local matchRTI = mw.ustring.match(arg, '(%d+) %(РТИ%)')
if (not departments['РТИ']) or matchSI then
cat(cats, data.semesters[semester] .. ' семестар')
end
if (not departments['СИ']) or matchRTI then
local semesterRTI = matchRTI and tonumber(matchRTI) or semester
cat(cats, data.semesters[semesterRTI] .. ' семестар (РТИ)')
end
end
function p.main(frame)
local cats = {}
local args = frame:getParent().args
local departments = decomposeDepartments(args['одсек'])
catSemester(cats, args['семестар'], departments)
return table.concat(cats)
end
return p