Modul:Priznaky
Dokumentácia pre tento modul môže byť vytvorená na Modul:Priznaky/Dokumentácia
-- @brief
-- Handling of distinctive features.
--
-- @details
-- Handles the following templates:
-- * {{Príznaky}}
-- * {{Príznak2}}
--
-- @remark
-- Requires Priznaky/zoznam
--
-- @author
-- [[meta:User:Danny B.]]
local Priznaky = {
zoznam = require "Module:Priznaky/zoznam"
}
----------------------------------------
local Languages = require "Module:Languages"
-- @brief
-- Returns the array of numbered arguments passed to the template.
--
-- @param
-- args Table of all arguments
-- @return
-- Array of numbered arguments
--
-- @warning
-- Returns only the first contiguous chunk of numbered args starting with 1,
-- so for {{Template|arg1|arg2|10=arg10}} it returns only { "arg1", "arg2" }
function numberedArgs( args )
local output = {}
local index = 1
while args[index] ~= nil do
local arg = args[index]
output[index] = arg
index = index + 1
end
return output
end
-- @brief
-- Creates the list of distinctive features
--
-- @param
-- frame The current frame object (table of arguments)
-- @param
-- categories Return also categories or not
-- @return
-- Preprocessed wikitext
function createList( frame, categories )
local output = ""
local parentFrame = frame:getParent()
local templateArgs = parentFrame.args
local numberedArgs = numberedArgs( templateArgs )
local jazyk = templateArgs.jazyk or templateArgs[1]
if ( not templateArgs["jazyk"] and categories ) then
table.remove( numberedArgs, 1 )
end
for index, value in ipairs( numberedArgs ) do
if ( index ~= 1 ) then
output = output .. ", "
end
if ( Priznaky.zoznam[value] ) then
output = output .. Priznaky.zoznam[value].popis
if ( categories and Priznaky.zoznam[value].kategoria ) then
if (type (Priznaky.zoznam[value].kategoria_bez_jazyka) == "nil" or not Priznaky.zoznam[value].kategoria_bez_jazyka) then
output = output .. "[[Category:" .. Priznaky.zoznam[value].kategoria .. "/" .. Languages[jazyk].name .. "]]"
elseif Priznaky.zoznam[value].kategoria_bez_jazyka then
output = output .. "[[Category:" .. Priznaky.zoznam[value].kategoria .. "]]"
end
end
else
lang, region = value:match( "^(%l%l%l?)%-(%u%u)$" )
if ( lang ) then
if ( Languages[lang] ) then
if ( Languages[lang].regions and Languages[lang].regions[region] ) then
output = output .. Languages[lang].regions[region] .. " " .. Languages[lang].name .. "[[Kategória:Monitoring:Príznak" .. ( categories and "y" or "2" ) .. " obsahujúci označenie jazyka]]"
else
output = output .. '{{Chyba|text=Neznámy príznak (neznámy region "' .. region .. '" jazyka "' .. lang .. '")|kategória=Opraviť neznámy príznak}}'
end
else
output = output .. '{{Chyba|text=Neznámy príznak (neznámy jazyk "' .. lang .. '")|kategória=Opraviť neznámy príznak}}'
end
else
output = output .. '{{Chyba|text=Neznámy [[Modul:Priznaky/zoznam|príznak]] "' .. value .. '"|kategória=Opraviť neznámy príznak}}'
end
end
end
output = '<span class="priznaky">(' .. output .. ')</span>'
output = frame:preprocess( output )
return output
end
----------------------------------------
-- Interface
----------------------------------------
-- @brief
-- Write the list of distinctive features without categories.
--
-- @param
-- frame The current frame object (table of arguments)
function Priznaky.vypisBezKategorii( frame )
return createList( frame, false )
end
-- @brief
-- Write the list of distinctive features with categories.
--
-- @param
-- frame The current frame object (table of arguments)
function Priznaky.vypisSKategoriami( frame )
return createList( frame, true )
end
----------------------------------------
return Priznaky