Dokumentaci tohoto modulu lze vytvořit na stránce Nápověda:Modul:Priznaky
-- @brief
-- Handling of distinctive features.
--
-- @details
-- Handles the following templates:
-- * {{Příznaky}}
-- * {{Příznak2}}
--
-- @remark
-- Requires Priznaky/seznam
--
-- @author
-- ]
local Priznaky = {
seznam = require "Module:Priznaky/seznam"
}
----------------------------------------
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 ~= nil do
local arg = args
output = 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
if ( not templateArgs and categories ) then
table.remove( numberedArgs, 1 )
end
for index, value in ipairs( numberedArgs ) do
if ( index ~= 1 ) then
output = output .. ", "
end
if ( Priznaky.seznam ) then
output = output .. Priznaky.seznam.popis
if ( categories and Priznaky.seznam.kategorie ) then
if (type (Priznaky.seznam.kategorie_bez_jazyku) == "nil" or not Priznaky.seznam.kategorie_bez_jazyku) then
output = output .. ".kategorie .. "/" .. Languages.name .. "]]"
elseif Priznaky.seznam.kategorie_bez_jazyku then
output = output .. ".kategorie .. "]]"
end
end
else
lang, region = value:match( "^(%l%l%l?)%-(%u%u)$" )
if ( lang ) then
if ( Languages ) then
if ( Languages.regions and Languages.regions ) then
output = output .. Languages.regions .. " " .. Languages.name .. "]"
else
output = output .. '{{Chyba|text=Neznámý příznak (neznámý region "' .. region .. '" jazyka "' .. lang .. '")|kategorie=Opravit neznámý příznak}}'
end
else
output = output .. '{{Chyba|text=Neznámý příznak (neznámý jazyk "' .. lang .. '")|kategorie=Opravit neznámý příznak}}'
end
else
output = output .. '{{Chyba|text=Neznámý ] "' .. value .. '"|kategorie=Opravit neznámý pří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.vypisSKategoriemi( frame )
return createList( frame, true )
end
----------------------------------------
return Priznaky