Модул:Infobox — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
м (pairs() iterira po tabeli)
м (Parametar za odsek sad igra važniju ulogu u tome koja će kategorija biti dodata na stranicu)
Ред 19: Ред 19:
local function catSemester(cats, arg, departments)
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+ %(СИ%)')
if departments['СИ'] then
local matchRTI = mw.ustring.match(arg, '(%d+) %(РТИ%)')
if (not departments['РТИ']) or matchSI then
cat(cats, data.semesters[semester] .. ' семестар')
cat(cats, data.semesters[semester] .. ' семестар')
end
end
if (not departments['СИ']) or matchRTI then
if departments['РТИ'] then
local matchRTI = mw.ustring.match(arg, '(%d+) %(РТИ%)')
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] .. ' семестар (РТИ)')
Ред 33: Ред 32:
local cats = {}
local cats = {}
local args = frame:getParent().args
local args = frame:getParent().args
local departments = decomposeDepartments(args['одсек'])
local departments = decomposeDepartments(args['одсек'] or 'СИ')
catSemester(cats, args['семестар'], departments)
catSemester(cats, args['семестар'], departments)
return table.concat(cats)
return table.concat(cats)

Верзија на датум 20. фебруар 2022. у 00:40

Модул за аутокатегоризацију на основу података прослеђених у инфокутију за предмет. Овај модул такође довлачи потребне податке за рад из модула са подацима.


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(mw.text.split(arg, ', ', true)) do
		decomposed[v] = true
	end
	return decomposed
end

local function catSemester(cats, arg, departments)
	local semester = tonumber(mw.ustring.match(arg, '%d+'))
	if departments['СИ'] then
		cat(cats, data.semesters[semester] .. ' семестар')
	end
	if departments['РТИ'] then
		local matchRTI = mw.ustring.match(arg, '(%d+) %(РТИ%)')
		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['одсек'] or 'СИ')
	catSemester(cats, args['семестар'], departments)
	return table.concat(cats)
end

return p