Модул:Категорије тениског турнира nav

Документацију овог модула можете да направите на страници Модул:Категорије тениског турнира nav/док

-- Овај модул омогућава функционисање шаблона [[Шаблон:Инфокутија Категорије тениског турнира 1]].
-- [SublimeLinter luacheck-globals:mw]

local p = {}
local getBuffer, print = require("Модул:OutputBuffer")()

local STYLES = {
	["pojedinacnoparovi"] = {[=[|-
| [[{prefiks} {turnir} {godina} — Појединачно|Појединачно]]
| [[{prefiks} {turnirpar} {godina} — Парови|Парови]]]=]},
		["1"] = "pojedinacnoparovi",
		["muskarci"] = "pojedinacnoparovi",
		["musci parovi"] = "pojedinacnoparovi",
		["zene"] = "pojedinacnoparovi",
		["zenski parovi"] = "pojedinacnoparovi",
	["zvezdeuusponu"] = {[=[|-
| [[{prefiks} {turnir} {godina} — Појединачно|Појединачно]]
| [[{prefiks} {turnirpar} {godina} — Парови|Парови]]

| colspan="2" | [[{prefiks} {turnir} {godina} — Звезде у успону|Звезде у успону]]]=]},
	["juniorijuniorkepojedinacno"] = {[=[|-
! scope="row" style="font-weight: normal; text-align: right;" | Појединачно:
| [[{prefiks} {turnir} {godina} — мушкарци појединачно|мушкарци]]
| [[{prefiks} {turnir} {godina} — жене појединачно|жене]]
| [[{prefiks} {turnir} {godina} — јуниори појединачно|јуниори]]
| [[{prefiks} {turnir} {godina} — јуниорке појединачно|јуниорке]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Парови:
| [[{prefiks} {turnir} {godina} — мушки парови|мушкарци]]
| [[{prefiks} {turnir} {godina} — женски парови|жене]]]=]},
		["majamimasters"] = "juniorijuniorkepojedinacno",
	["mesovitiparovi"] = {[=[|-
! scope="row" style="font-weight: normal; text-align: right;" | Појединачно:
| [[{prefiks} {turnir} {godina} — мушкарци појединачно|мушкарци]]
| [[{prefiks} {turnir} {godina} — жене појединачно|жене]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Парови:
| [[{prefiks} {turnir} {godina} — мушки парови|мушкарци]]
| [[{prefiks} {turnir} {godina} — женски парови|жене]]
| [[{prefiks} {turnir} {godina} — мешовити парови|мешовити парови]]]=]},
		["mesoviti"] = "mesovitiparovi",
		["grendslem"] = "mesovitiparovi",
	["mesovititim"] = {[=[|-
! scope="row" style="font-weight: normal; text-align: right;" | Појединачно:
| [[{prefiks} {turnir} {godina} — мушкарци појединачно|мушкарци]]
| [[{prefiks} {turnir} {godina} — жене појединачно|жене]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Парови:
| [[{prefiks} {turnir} {godina} — мушки парови|мушкарци]]
| [[{prefiks} {turnir} {godina} — женски парови|жене]]
| [[{prefiks} {turnir} {godina} — мешовити парови|мешовити]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Тимови:
| [[{prefiks} {turnir} {godina} — мушки тим|мушкарци]]
| [[{prefiks} {turnir} {godina} — женски тим|жене]]]=]},
	["otvorenoprvenstvoaustralije"] = {[=[|-
! scope="row" style="font-weight: normal; text-align: right;" | Појединачно:
| [[{turnir} {godina} — мушкарци појединачно|мушкарци]]
| [[{turnir} {godina} — жене појединачно|жене]]
|
| [[{turnir} {godina} — јуниори појединачно|јуниори]]
| [[{turnir} {godina} — јуниорке појединачно|јуниорке]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Парови:
| [[{turnir} {godina} — мушки парови|мушкарци]]
| [[{turnir} {godina} — женски парови|жене]]
| [[{turnir} {godina} — мешовити парови|мешовити парови]]
| [[{turnir} {godina} — јуниори парови|јуниори]]
| [[{turnir} {godina} — јуниорке парови|јуниорке]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Легенде:
| [[{turnir} {godina} — мушки парови легенде|мушкарци]]
| [[{turnir} {godina} — женски парови легенде|жене]]
| [[{turnir} {godina} — мешовити парови легенде|мешовити парови]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Појединачно у колицима:
| [[{turnir} {godina} — мушкарци у колицима појединачно|мушкарци]]
| [[{turnir} {godina} — жене у колицима појединачно|жене]]
| [[{turnir} {godina} — куад појединачно у колицима|куад]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Парови у колицима:
| [[{turnir} {godina} — мушки парови у колицима|мушкарци]]
| [[{turnir} {godina} — женски парови у колицима|жене]]
| [[{turnir} {godina} — куад парови у колицима|куад]]
]=]},
	["otvorenoprvenstvofrancuske"] = {[=[|-
! scope="row" style="font-weight: normal; text-align: right;" | Појединачно:
| [[{turnir} {godina} — мушкарци појединачно|мушкарци]]
| [[{turnir} {godina} — жене појединачно|жене]]
|
| [[{turnir} {godina} — јуниори појединачно|јуниори]]
| [[{turnir} {godina} — јуниорке појединачно|јуниорке]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Парови:
| [[{turnir} {godina} — мушки парови|мушкарци]]
| [[{turnir} {godina} — женски парови|жене]]
| [[{turnir} {godina} — мешовити парови|мешовити парови]]
| [[{turnir} {godina} — јуниори парови|јуниори]]
| [[{turnir} {godina} — јуниорке парови|јуниорке]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Легенде:
| [[{turnir} {godina} — парови за легенде испод 45 година|−45]]
| [[{turnir} {godina} — парови за легенде изнад 45 година|45+]]
| [[{turnir} {godina} — женски парови легенде|жене]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Појединачно у колицима:
| [[{turnir} {godina} — мушкарци у колицима појединачно|мушкарци]]
| [[{turnir} {godina} — жене у колицима појединачно|жене]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Парови у колицима:
| [[{turnir} {godina} — мушки парови у колицима|мушкарци]]
| [[{turnir} {godina} — женски парови у колицима|жене]]
]=]},
	["vimbldon"] = {[=[|-
! scope="row" style="font-weight: normal; text-align: right;" | Појединачно:
| [[{turnir} {godina} — мушкарци појединачно|мушкарци]]
| [[{turnir} {godina} — жене појединачно|жене]]
|
| [[{turnir} {godina} — јуниори појединачно|јуниори]]
| [[{turnir} {godina} — јуниорке појединачно|јуниорке]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Парови:
| [[{turnir} {godina} — мушки парови|мушкарци]]
| [[{turnir} {godina} — женски парови|жене]]
| [[{turnir} {godina} — мешовити парови|мешовити парови]]
| [[{turnir} {godina} — јуниори парови|јуниори]]
| [[{turnir} {godina} — јуниорке парови|јуниорке]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Легенде:
| [[{turnir} {godina} — мушки парови легенде|мушкарци]]
| [[{turnir} {godina} — женски парови легенде|жене]]
| [[{turnir} {godina} — сениорски парови легенде|сениори]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Парови у колицима:
| [[{turnir} {godina} — мушки парови у колицима|мушкарци]]
| [[{turnir} {godina} — женски парови у колицима|жене]]
]=]},
	["otvorenoprvenstvoSAD"] = {[=[|-
! scope="row" style="font-weight: normal; text-align: right;" | Појединачно:
| [[{turnir} {godina} — мушкарци појединачно|мушкарци]]
| [[{turnir} {godina} — жене појединачно|жене]]
|
| [[{turnir} {godina} — јуниори појединачно|јуниори]]
| [[{turnir} {godina} — јуниорке појединачно|јуниорке]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Парови:
| [[{turnir} {godina} — мушки парови|мушкарци]]
| [[{turnir} {godina} — женски парови|жене]]
| [[{turnir} {godina} — мешовити парови|мешовити парови]]
| [[{turnir} {godina} — јуниори парови|јуниори]]
| [[{turnir} {godina} — јуниорке парови|јуниорке]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Легенде:
| [[{turnir} {godina} — мушки шампиони позивница|мушкарци]]
| [[{turnir} {godina} — женски шампиони позивница|жене]]
| [[{turnir} {godina} — позивница за шампионе мешовитих парова|мешовити парови]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Појединачно у колицима:
| [[{turnir} {godina} — мушкарци у колицима појединачно|мушкарци]]
| [[{turnir} {godina} — жене у колицима појединачно|жене]]
| [[{turnir} {godina} — куад у колицима појединачно|куад]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Парови у колицима:
| [[{turnir} {godina} — мушки парови у колицима|мушкарци]]
| [[{turnir} {godina} — женски парови у колицима|жене]]
| [[{turnir} {godina} — куад у колицима парови|куад]]
]=]},
	["abnamroworldtennistournament"] = {[=[|-
| [[{prefiks} {turnir} {godina} — појединачно|појединачно]]
| [[{prefiks} {turnirpar} {godina} — парови|парови]]
|-
| [[{prefiks} {turnir} {godina} — појединачно у колицима|појединачно у колицима]]
| [[{prefiks} {turnirpar} {godina} — парови у колицима|парови у колицима]]]=]},
	["doublestwotourneys"] = {[=[|-
! scope="row" style="font-weight: normal; text-align: right;" | Појединачно:
| [[{prefiks} {turnir} {godina} — мушкарци појединачно|мушкарци]]
| [[{prefiks} {turnir} {godina} — жене појединачно|жене]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Парови:
| [[{prefiks} {turnir} {godina} — мушки парови|мушкарци]]
| [[{prefiks} {turnir} {godina} — женски парови|жене]]]=]},
	[""] = {[=[|-
! scope="row" style="font-weight: normal; text-align: right;" | Појединачно:
| [[{prefiks} {turnir} {godina} — мушкарци појединачно|мушкарци]]
| [[{prefiks} {turnir} {godina} — жене појединачно|жене]]
|-
! scope="row" style="font-weight: normal; text-align: right;" | Парови:
| [[{prefiks} {turnir} {godina} — мушки парови|мушкарци]]
| [[{prefiks} {turnir} {godina} — женски парови|жене]]]=]}}

local function pullItem(value, default)
	value = value and string.lower(string.gsub(value, "%A", ""))
	if type(STYLES[value]) == "string" then
		value = STYLES[value]
	end
	if STYLES[value] then
		return STYLES[value][1]
	else
		return STYLES[default][1]
	end
end

function p._main(args)
	local default = ""
	if args[2] ~= args[3] then
		default = "doublestwotourneys"
	end

	print('{| style="border-spacing: 0.6em 0; margin: auto; ' ..
		  'text-align: center;"')
	print(string.gsub(pullItem(args['тип'], default), "{(%a+)}",
		{prefiks = args["префикс"] or "", godina = args[1], turnir = args[2],
		 turnirpar = args[3]}))
	print("|}")
	return getBuffer("\n")
end

function p.main(frame)
	local args = require("Модул:Arguments").getArgs(frame)
	return p._main(args)
end

return p