Модуль:LawList
Материал из Указатель частей и соединений РККА 1941-1945
Версия от 20:17, 17 февраля 2020; Строк (обсуждение | вклад)
Для документации этого модуля может быть создана страница Модуль: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