Sari la conținut

Modul:Works by license subcat

local p = {} --p stands for package

local getArgs = require('Modul:Arguments').getArgs
local yesno = require('Modul:Yesno')

local namespace = mw.title.getCurrentTitle().nsText
local rootpagename = mw.title.getCurrentTitle().rootText
local catname = string.gsub(rootpagename, "Autor%-", "")

function author_subcat(subcat)
	return yesno(subcat or string.find(rootpagename, "Autor%-") ~= nil)
end

function categories(subcat, extra, sort_as)
	if namespace == "Categorie" and subcat then
		return "[[Categorie:Autori după tipul licenței|" .. (sort_as or catname) .. "]] [[Categorie:" .. catname .. "]]" .. (extra or "")
	elseif namespace == "Categorie" then
		return "[[Categorie:Lucrări după tipul licenței|" .. (sort_as or catname) .. "]]" .. (extra or "")
	else
		return ""
	end
end

function p.works_by_license_subcat(frame)
	local args = getArgs(frame)
	
	local template = args.template or args['format'] or catname
	local subcat = author_subcat(args.author_subcat)
	local use_template = yesno(args.use_template or true)
	local sort_as = args.sort_as or catname
	local nocat = yesno(args.nocat or false)
	
	local category
	if not nocat then
		category = categories(subcat, nil, sort_as)
	end
	
	local template_args = args
	template_args.template = nil
	template_args.author_subcat = nil
	template_args.use_template = nil
	template_args.sort_as = nil
	template_args.nocat = 'true'
	
	local text = table.concat(
		{
			"Această categorie este populată de {{[[Format:" .. template .. "|" .. template .. "]]}}.",
			args.text or "",
			category
		},
		" "
	)
	
	local template_demo
	if use_template then
		template_demo = frame:expandTemplate {
			['title'] = template,
			['args'] = template_args
		}
	else
		template_demo = ""
	end
	
	return text .. template_demo
end

function p.pd_old_subcat(frame)
	local args = getArgs(frame)
	
	local ntable = mw.text.split(catname, "-", true)
	local n = args[1] or tonumber(ntable[#ntable]) or "{{{1}}}"
	
	local subcat = author_subcat(args.author_subcat)
	
	local sort_as = args.sort_as or catname
	
	local text = "Această categorie este o categorie meta și conține categorii pentru "
	if subcat then
		text = text .. "autori ale căror lucrări"
	else
		text = text .. "lucrări care"
	end
	text = text .. " se află în domeniul public în țări în care drepturile de autor încetează la " .. n .. " de ani sau mai puțin după moartea autorului."
	
	local extra
	if subcat then
		extra = "[[Categorie:Autor-DP-vechi|" .. sort_as .. "]][[Categorie:Autori cu opere în domeniul public în afara SUA|" .. sort_as .. "]]"
	else
		extra = "[[Categorie:DP-vechi|" .. sort_as .. "]][[Categorie:Domeniul public în afara SUA|" .. sort_as .. "]]"
	end
	
	return text .. categories(subcat, extra)
end

return p