Модуль:LawList

Материал из Указатель частей и соединений РККА 1941-1945
Перейти к:навигация, поиск

Для документации этого модуля может быть создана страница Модуль:LawList/doc

local lawlist = {}
local tools = require( 'Module:Tools' )
local report = require( 'Module:Report' )
local lexer = require( 'Module:Lexer' )
local ref = require( 'Module:Ref' )
-- ="{{ указ | пор = "&C23&" | назв = "&D23&" | дата = "&ТЕКСТ(I23,"ДД.ММ.ГГГГ")&" | номер = | дело = "&K23&" | листы = "&E23&ЕСЛИ(F23="","","−"&F23)&ЕСЛИ(J23="",""," | фио = "&ПОДСТАВИТЬ(J23&" и др.","$ и др.",""))&ЕСЛИ(L23="",""," | "&L23)&" }}"

function lawlist.Line( frame )
	local args = tools.checkargs( frame:getParent().args, {
			true,
			['пор'] = true, ['назв'] = true, ['дата'] = true,
			['номер'] = true, ['дело'] = true, ['листы'] = true,
			['фио'] = true, ['гриф'] = true, ['примечание'] = true,
			['приказ'] = true, ['подвиг'] = true, ['вч'] = true,
			['сноска/пор'] = true, ['сноска/номер'] = true,
		} )
	if args[1] then --ГАРФ. Ф. Р7523. Оп. 4. Д. 56
		local op, delo = string.match( args[1], '^ГАРФ%. Ф%. Р7523%. Оп%. (%d+)%. Д%. (%d+)%.?$' )
		assert( op )
		return '<div class=ll-file-title>ГАРФ. Ф. Р7523. Оп. ' .. op .. '. Д. ' .. delo .. '</div>'
	end
	local highlight = args['вч']
	if highlight then
		highlight = ' ll-highlight'
	end
	local out = { '<div class="ll-line' .. ( highlight or '' ) .. '">' }

	local tmp = args['листы']
	if tmp then
		tmp = ' <span class=ll-clerical title="Листы дела">(л. ' .. tmp .. ')</span>'
	end
	local reference = args['сноска/пор']
	if reference then
		ref.refStart()
		reference = ref.use( reference )
	end
	table.insert( out, '<div class=ll-seq>' .. ( args['пор'] or '—' ) .. ( reference or '' )
		.. ( tmp or '' ) .. '</div>' )

	local fio = args['фио']
	if fio then
		fio = ' <span class=ll-fio>[' .. fio .. ']</span>'
	end
	table.insert( out, '<div class=ll-title>'
		.. ( args['назв'] or '<span class=error>?</span>' )
		.. ( fio or '' ) .. '</div>' )

	table.insert( out, '<div class=ll-date>'
		.. ( args['дата'] or '<span class=error>?</span>' ) .. '</div>' )

	tmp = { args['номер'] }
	if args['дело'] then
		table.insert( tmp, '<span class=ll-clerical title="Номер канцелярского дела с материалами указа">(' .. args['дело'] .. ')</span>' )
	end
	reference = args['сноска/номер']
	if reference then
		ref.refStart()
		reference = ref.use( reference )
	end

	table.insert( out, '<div class=ll-number>' .. table.concat( tmp, ' ' ) .. ( reference or '' ) .. '</div>' )

	local misc = {}

	tmp = args['приказ']
	if tmp then
		tmp = mw.text.split( tmp, '%s*;%s*' )
		local a = 'Приказ военного совета ' .. lexer.declension( report.fuller( tmp[1] ), 1 )
			.. ' № ' .. tmp[2] .. ' от ' .. tmp[3]
		if tmp[4] then
			a = '[http://podvignaroda.ru/#?id=' .. tmp[4] .. ' ' .. a ..']'
		end
		table.insert( misc, '<span class=ll-by-unit>' .. a .. '</span>' )
	end

	tmp = args['подвиг']
	if tmp then
		tmp = mw.text.split( tmp, '%s*;%s*' )
		if #tmp == 1 then
			tmp = 'См. [http://podvignaroda.ru/#?id=' .. tmp[1] .. ' сайт «Подвиг народа»]'
		else
			local a = {}
			for i, n in ipairs( tmp ) do
				table.insert( a, '[http://podvignaroda.ru/#?id=' .. n .. ' ' .. i .. ']' )
			end
			tmp = 'См. сайт «Подвиг народа»: ' .. table.concat( a, ', ' )
		end
		table.insert( misc, '<span class=ll-podvig>' .. tmp .. '</span>' )
	end

	tmp = args['гриф']
	if tmp then
		tmp = mw.text.split( tmp, '%s*;%s*' )
		table.insert( misc, '<span class=ll-class title="Гриф">' .. table.concat( tmp, '</span><span class=ll-class>' ) .. '</span>' )
	end

	tmp = args['примечание']
	if tmp then
		table.insert( misc, '<span class=ll-addendum>' .. tmp .. '</span>' )
	end

	table.insert( out, '<div class=ll-misc>' .. table.concat( misc, '. ' ) .. '</div>' )
	
	table.insert( out, '</div>' )

	return 	ref.refReturn( table.concat( out ) )
end




return lawlist