Модуль:Сноски (Bk;rl,&Vukvtn)

Перейти к навигации Перейти к поиску
Документация
local moduleRoman = require("Module:Roman")
local p = {}

function p.ref( frame )
    local args = frame:getParent().args

	local refTitle = args[1]
	local refYears = args[2]
	local loc = args.loc
	local pRus = args['страницы']

	local name
	if ( args.name ) then
		name = args.name
	else
		name = refTitle .. '-' .. refYears
		if ( loc ) then
			name = name .. '-' .. loc
		end
		if ( pRus ) then
			name = name .. '-' .. pRus
		end
	end

	local content = '[[#CITEREF' .. refTitle .. refYears .. '|' .. refTitle .. ', ' .. refYears .. ']]';
	if ( loc ) then
		content = content .. ' — ' .. loc
	end
	if ( pRus ) then
		content = content .. ' — С. ' .. pRus
	end

    return frame:extensionTag{ name = "ref", content = content, args = { name = name } }
end

function p.refKaramzin( frame )
    local args = frame:getParent().args

	local volume = args['том']
	local part = args['глава']
	local pages = args['страницы']

	local name = 'Karamzin1829-' .. (volume or '') .. '-'.. (part or '') .. '-'.. (pages or '')

	local refString = '[[#CITEREFКарамзин1816—1829|\'\'Карамзин\'\', 1816—1829]]';

	local link
	if ( volume or part ) then
		if ( part ) then
			link = 's:История государства Российского (Карамзин)/Том ' .. moduleRoman.convert( volume )  .. '/Глава ' .. moduleRoman.convert( part )
		else
			link = 's:История государства Российского (Карамзин)/Том ' .. moduleRoman.convert( volume )
		end
	end

	if ( link ) then
		refString = refString .. ' — [[' .. link .. '|'
	end
	if ( volume ) then
		if ( link ) then
			refString = refString .. 'Т. ' .. moduleRoman.convert( volume )
		else
			refString = refString .. ' — Т. ' .. moduleRoman.convert( volume )
		end
	end
	if ( part ) then
		refString = refString .. ' — Глава ' .. moduleRoman.convert( part )
	end
	if ( pages ) then
		refString = refString .. ' — С. ' .. pages
	end
	if ( link ) then
		refString = refString .. ']]'
	end

    return frame:extensionTag{ name = "ref", content = refString, args = { name = name } }
end

return p