Модуль:LawList

Материал из Указатель частей и соединений РККА 1941-1945
Перейти к:навигация, поиск
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Для документации этого модуля может быть создана страница Модуль: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