Modul:Priznaky

Dobrý den, přišli jste sem a hledáte význam slova Modul:Priznaky. V DICTIOUS najdete nejen všechny slovníkové významy slova Modul:Priznaky, ale dozvíte se také o jeho etymologii, charakteristice a o tom, jak se říká Modul:Priznaky v jednotném a množném čísle. Vše, co potřebujete vědět o slově Modul:Priznaky, najdete zde. Definice slova Modul:Priznaky vám pomůže být přesnější a správnější při mluvení nebo psaní textů. Znalost definiceModul:Priznaky, stejně jako definice dalších slov, obohacuje vaši slovní zásobu a poskytuje vám více a lepších jazykových zdrojů.

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