Přeskočit na obsah

Modul:Cite

Tuto stránku mohou editovat jen zavedení uživatelé a správci.
Z Wikipedie, otevřené encyklopedie

Cite může být použit k převedení cizojazyčných citačních šablon na české.

Použití

Do šablony, kterou chcete převést: {{{{{|safesubst:}}}#invoke:Cite|cite| původní šablona | nová šablona }}

Do Modul:Cite/convert:

	['původní šablona'] = {
		['původní parametr'] = 'nový parametr',
		['původní parametr'] = 'nový parametr',
	},


local p = {}

function p.cite(context)
	-- Get parameters
	local args = require('Modul:Arguments')
	local parameters = args.getArgs(context:getParent())

	-- Get convert table for template
	local all_templates = mw.loadData('Modul:Cite/convert')
	local template = args.getArgs(context)[1]
	local convert_table = all_templates[template]

	-- Convert parameters
	local result = {}
	for p, v in pairs(parameters) do
		if convert_table[p] then
			result[convert_table[p]] = v
		else
			result[p] = v
		end
	end

	-- Fix parameter aliases (TODO: should be handled somewhat better)
	if template == 'Cite web' or template == 'Cite book' or template == 'Cite encyclopedia' then
		if result['překladatelé-před'] and result['překladatelé-za'] then
			result['překladatelé'] = result['překladatelé-před'] .. ' ' .. result['překladatelé-za']
			result['překladatelé-před'] = nil
			result['překladatelé-za'] = nil
		elseif result['překladatelé-před'] then
			result['překladatelé'] = result['překladatelé-před']
			result['překladatelé-před'] = nil
		elseif result['překladatelé-za'] then
			result['překladatelé'] = result['překladatelé-za']
			result['překladatelé-za'] = nil
		end
		if result['redaktoři-před'] and result['redaktoři-za'] then
			result['redaktoři'] = result['redaktoři-před'] .. ' ' .. result['redaktoři-za']
			result['redaktoři-před'] = nil
			result['redaktoři-za'] = nil
		elseif result['redaktoři-před'] then
			result['redaktoři'] = result['redaktoři-před']
			result['redaktoři-před'] = nil
		elseif result['redaktoři-za'] then
			result['redaktoři'] = result['redaktoři-za']
			result['redaktoři-za'] = nil
		end
		if result['titul-před'] and result['titul-za'] then
			result['titul'] = result['titul-před'] .. '. ' .. result['titul-za']
			result['titul-před'] = nil
			result['titul-za'] = nil
		elseif result['titul-před'] then
			result['titul'] = result['titul-před']
			result['titul-před'] = nil
		elseif result['titul-za'] then
			result['titul'] = result['titul-za']
			result['titul-za'] = nil
		end
	end

	-- Prepare new template
	local text='{{' .. convert_table[1] .. '\n'
	for p, v in pairs(result) do
		text = text .. ' | ' .. p .. ' = ' .. v .. '\n'
	end
	text = text .. '}}'
	text = context:preprocess(text)

	-- Print output
	return text
end

return p