Modul:Související zpráva

Dokumentaci tohoto modulu lze vytvořit na stránce Nápověda:Modul:Související zpráva

-- @brief
--  Backend for {{Související zpráva}}
-- 
-- @author
--  [[meta:User:Danny B.]]
local _module = {}
----------------------------------------


local DateTime = require( "Module:DateTime" )


-- @brief
--  Generates the link to the related article preceded with its date.
-- 
-- @param
--  frame The current frame object
-- 
-- @return
--  PreprocessedWikitext Link to the related article preceded with its date
function _module.print( frame )
	
	local output
	local html = mw.html.create()
	local title = mw.title.getCurrentTitle().text
	local relatedArticleTitle = mw.text.trim( frame:getParent().args[1] or "#" )
	local relatedArticleTitleObject
	local relatedArticleContent
	local datePrefix
	local redirectedRelatedArticleCategory = "[[Kategorie:Monitoring:Zprávy odkazující na přesměrované související zprávy]]"
	local missingDateCategory = "[[Kategorie:Monitoring:Zprávy odkazující na související zprávy bez data]]"
	local missingBacklinkCategory = "[[Kategorie:Monitoring:Zprávy odkazující na související zprávy bez zpětného odkazu]]"
	
	relatedArticleTitleObject = mw.title.new( relatedArticleTitle )
	-- expensive++
	
	if relatedArticleTitleObject.isRedirect then
	-- expensive++
		relatedArticleTitleObject = relatedArticleTitleObject.redirectTarget
		-- expensive++
	else
		redirectedRelatedArticleCategory = nil
	end
	
	relatedArticleContent = relatedArticleTitleObject:getContent()
	
	if relatedArticleContent ~= nil then
		for relatedArticleContentPart in relatedArticleContent:gmatch( "%b{}" ) do
			if relatedArticleContentPart:match( "%{%{Datum|.-%}%}" ) then
				local relatedArticleTimestamp, relatedArticleYear, relatedArticleMonth, relatedArticleDay = relatedArticleContentPart:match( "%{%{Datum *| *((%d%d%d%d)%-(%d%d)%-(%d%d)).-%}%}" )
				local relatedArticleDate = string.format( "%d. %s %d", relatedArticleDay, DateTime.months[tonumber( relatedArticleMonth )].name, relatedArticleYear )
				local timeTag = mw.html.create( "time" )
					:attr( "datetime", relatedArticleTimestamp )
					:wikitext( relatedArticleDate )
					:allDone()
				datePrefix = string.format( "%s — ", tostring( timeTag ) )
				missingDateCategory = nil
			elseif relatedArticleContentPart:match( "%{%{Související zpráva|" .. title .. "%}%}" ) then
				missingBacklinkCategory = nil
			end
		end
		html = html
			:wikitext( datePrefix )
			:wikitext( string.format( "[[%s]]", relatedArticleTitle ) )
			:wikitext( redirectedRelatedArticleCategory )
			:wikitext( missingDateCategory )
			:wikitext( missingBacklinkCategory )
			:allDone()
	end
	
	output = frame:preprocess( tostring( html ) )
	
	return output
	
end


----------------------------------------
return _module