Модуль:Документ: различия между версиями
Перейти к навигации
Перейти к поиску
StasR (обсуждение | вклад) Нет описания правки |
StasR (обсуждение | вклад) Нет описания правки |
||
(не показаны 23 промежуточные версии этого же участника) | |||
Строка 2: | Строка 2: | ||
local global = mw.ext.luaglobal; | local global = mw.ext.luaglobal; | ||
tools = require( 'Модуль:Tools' ) -- нужен в doctools | tools = require( 'Модуль:Tools' ) -- нужен в doctools | ||
refTools = require( 'Модуль:RefTools' ) -- нужен в doctools | |||
local doctools = require 'Module:DocTools' | local doctools = require 'Module:DocTools' | ||
global.strict( true ) | global.strict( true ) | ||
Строка 9: | Строка 10: | ||
local Args, tmp = tools.checkargs( frame:getParent().args, | local Args, tmp = tools.checkargs( frame:getParent().args, | ||
{ ['номер'] = '', ['дата'] = '', ['вид'] = '', ['вид+'] = true, | { ['номер'] = '', ['дата'] = '', ['вид'] = '', ['вид+'] = true, | ||
-- 26.07.2017 отказываемся от потока ['структура'] = 'иерархия', | |||
['комментарий'] = true, ['сноска'] = true, ['каждому'] = true, | ['комментарий'] = true, ['сноска'] = true, ['каждому'] = true, | ||
['содержание'] = | ['содержание'] = 'текст', ['заголовок'] = true, ['выключен'] = true, | ||
['публикация'] = true, ['источник'] = true, ['архив'] = true, | ['публикация'] = true, ['источник'] = true, ['архив'] = true, | ||
['подвиг'] = true, ['указ'] = true, } ) | ['подвиг'] = true, ['указ'] = true, } ) | ||
local errorDateAdvice = 'Используйте формат даты ' | local errorDateAdvice = 'Используйте формат даты ' | ||
Строка 20: | Строка 21: | ||
return tools.errorMsg( 'Документ', 'Неизвестный параметр «' .. tmp .. '»', '' ) | return tools.errorMsg( 'Документ', 'Неизвестный параметр «' .. tmp .. '»', '' ) | ||
end | end | ||
local gDoc = global.get( 'gDoc' ) | local gDoc = global.get( 'gDoc' ) | ||
if gDoc then | if gDoc then | ||
Строка 31: | Строка 32: | ||
end | end | ||
local | local DocName = mw.title.getCurrentTitle().text | ||
local name, idx, part, parts = mw.ustring.match( | local name, idx, part, parts = mw.ustring.match( DocName, "^(.+) (%([IVX]+%)) [—−-] часть (%d+) из (%d+)$" ) | ||
if not name then | if not name then | ||
name, part, parts = mw.ustring.match( | name, part, parts = mw.ustring.match( DocName, "^(.+) [—−-] часть (%d+) из (%d+)$" ) | ||
end | end | ||
if not name then | if not name then | ||
name, idx = mw.ustring.match( | name, idx = mw.ustring.match( DocName, "^(.+) (%([IVX]+%))$" ) | ||
end | end | ||
local DocInfo | |||
if idx then | if idx then | ||
DocInfo = 'Имеются [' .. tostring( mw.uri.fullUrl( 'Special:PrefixIndex', { | |||
prefix = name, | prefix = name, | ||
namespace = 3008, | namespace = 3008, | ||
Строка 46: | Строка 48: | ||
.. ' другие документы] с такими же реквизитами.' | .. ' другие документы] с такими же реквизитами.' | ||
name = name .. ' ' .. idx | name = name .. ' ' .. idx | ||
end | end | ||
if parts then | if parts then | ||
DocInfo = 'Из-за большого объема настоящий документ разделен на [' | |||
.. tostring( mw.uri.fullUrl( 'Special:PrefixIndex', { | .. tostring( mw.uri.fullUrl( 'Special:PrefixIndex', { | ||
prefix = name, | prefix = name, | ||
namespace = 3008, | namespace = 3008, | ||
} ) ) | } ) ) | ||
.. ' несколько частей]. ' .. ( | .. ' несколько частей]. ' .. ( DocInfo or '' ) | ||
end | end | ||
local docNumber = Args['номер'] | local docNumber = Args['номер'] | ||
local docDate = Args['дата'] | |||
if docNumber == '~' then | |||
docNumber = mw.ustring.match( DocName, ' № ([^ ]+) ' ) or mw.ustring.match( DocName, ' № ([^ ]+)$' ) | |||
if not docNumber and not string.find(DocName, '№', 1, true ) then | |||
docNumber = '-' | |||
end | |||
end | |||
if docDate == '~' then | |||
docDate = mw.ustring.match( DocName, ' от (%d%d%.%d%d%.%d%d%d%d)' ) | |||
end | |||
if not docDate or not docNumber then | |||
return tools.errorMsg ( 'Документ', 'Для даты или номера документа использовано значение «~», но заголовок разобрать не удалось' ) | |||
end | |||
if docNumber == '-' then | if docNumber == '-' then | ||
docNumber = '' | docNumber = '' | ||
end | end | ||
docDate = tools.parseDate( docDate ) | |||
if not docDate then | if not docDate then | ||
return tools.errorMsg ( 'Документ', 'Неправильный формат даты документа', errorDateAdvice ) | return tools.errorMsg ( 'Документ', 'Неправильный формат даты документа', errorDateAdvice ) | ||
Строка 70: | Строка 85: | ||
local types = mw.loadData( 'Модуль:Документ/Виды документов' ) | local types = mw.loadData( 'Модуль:Документ/Виды документов' ) | ||
local docType = tools.db( types, tools.noPhrase( Args['вид'] ) ) | local docType = tools.db( types, tools.noPhrase( Args['вид'] ) ) | ||
if not docType then | if not docType then | ||
return tools.errorMsg ( 'Документ', | return tools.errorMsg ( 'Документ', | ||
'Параметр «вид» должен указывать один из допустимых видов документов', | 'Параметр «вид» должен указывать один из допустимых видов документов', | ||
'Перечень допустимых видов документов см. [[ | 'Перечень допустимых видов документов см. [[Модуль:Документ/Виды документов|тут]]' ) | ||
end | end | ||
local docTypeName = docType.hdr | local docTypeName = docType.hdr | ||
local vovCtg | |||
tmp = Args['вид+'] | |||
if tmp then | |||
if tmp == '~' then | |||
tmp = mw.ustring.match( DocName, '^Приказ войскам ([^№]+) №' ) | |||
if not tmp then | |||
local weapon | |||
weapon, tmp = mw.ustring.match( DocName, '^Приказ командующего (артиллерией) ([^№]+) №' ) | |||
if not weapon then | |||
weapon, tmp = mw.ustring.match( DocName, '^Приказ командующего (бронетанковыми и механизированными войсками) ([^№]+) №' ) | |||
end | |||
if not weapon then | |||
return tools.errorMsg ( 'Документ', 'Для параметра «вид+» использовано значение «~», но заголовок разобрать не удалось' ) | |||
end | |||
docType = tools.db( types, tools.noPhrase( 'приказ командующего' ) ) | |||
docTypeName = docType.hdr | |||
vovCtg = 'Приказы ' .. tmp | |||
tmp = weapon .. ' ' .. tmp | |||
else | |||
vovCtg = 'Приказы ' .. tmp | |||
end | |||
end | end | ||
docTypeName = docTypeName .. ' ' .. tmp | |||
end | end | ||
--- local defSort = docType.sort .. string.sub(docDate .. '----------', 1, 7 ) | |||
--- if mw.ustring.len( docNumber ) < 5 then | |||
--- defSort = defSort .. mw.ustring.sub( '----' .. docNumber, -4, -1 ) | |||
--- end | |||
-- local defSort = string.sub(docDate .. '----------', 1, 10 ) | |||
local defSort = string.char( 0x30 + tonumber( '0' .. string.sub( docDate, 9, 10 ) ) ) | |||
frame:callParserFunction{ name = 'DEFAULTSORT', args = ' ' .. defSort .. mw.title.getCurrentTitle().text } | |||
local docRevers = mw.ustring.lower( Args['содержание'] ) | |||
local docOrigin = { | local docOrigin = { | ||
['реверс'] = 'содержание документа восстановлено на основании биографических справок', | ['реверс'] = 'содержание документа восстановлено на основании биографических справок', | ||
Строка 113: | Строка 134: | ||
docOrigin = docOrigin[docRevers] | docOrigin = docOrigin[docRevers] | ||
if not docOrigin then | if not docOrigin then | ||
return tools.errorMsg ( 'Документ', | return tools.errorMsg ( 'Документ', | ||
'Параметр «содержание» может иметь значения «реверс», «извлечение» или «текст»', | 'Параметр «содержание» может иметь значения «реверс», «извлечение» или «текст»', | ||
'Значение «реверс» указывается для документов, восстановленных по' | 'Значение «реверс» указывается для документов, восстановленных по' | ||
.. ' биографическим справкам, «извлечение» или «текст» — при ' | .. ' биографическим справкам, «извлечение» или «текст» — при ' | ||
Строка 120: | Строка 141: | ||
end | end | ||
local docStream = mw.ustring.lower( Args['структура'] ) | -- 26.07.2017 отказываемся от потока local docStream = mw.ustring.lower( Args['структура'] ) | ||
local docStream = 'иерархия' | |||
if docStream == 'поток' then | if docStream == 'поток' then | ||
docStream = true | docStream = true | ||
Строка 126: | Строка 148: | ||
docStream = false | docStream = false | ||
else | else | ||
return tools.errorMsg ( 'Документ', | return tools.errorMsg ( 'Документ', | ||
'Параметр «структура» может иметь значения «поток» или «иерархия»', | 'Параметр «структура» может иметь значения «поток» или «иерархия»', | ||
'Значение «поток» указывается для документов, в которых рубрики ' | 'Значение «поток» указывается для документов, в которых рубрики ' | ||
.. ' не образуют вложенность' ) | .. ' не образуют вложенность' ) | ||
end | end | ||
local out = '' | local out = '' | ||
if | if DocInfo then | ||
out = '<p class="nkvd-doc-parts>' .. | out = '<p class="nkvd-doc-parts>' .. DocInfo .. '</p>' | ||
end | end | ||
if docOff then | if docOff then | ||
out = out .. '<p class="nkvd-doc-off>' .. docOff .. '</p>[[Категория:Выключенные документы]]' | out = out .. '<p class="nkvd-doc-off>' .. docOff .. '</p>[[Категория:Выключенные документы]]' | ||
end | end | ||
if vovCtg then | |||
out = out .. '[[Категория:' .. vovCtg .. '|' .. string.sub(docDate,4,4) .. docDate .. ']]' | |||
end | |||
local ukdate = Args['указ'] | local ukdate = Args['указ'] | ||
if ukdate then | if ukdate then | ||
ukdate = tools.parseDate( ukdate ) | ukdate = tools.parseDate( ukdate ) | ||
out = out .. [[ | out = out .. [[ | ||
<p class="nkvd-griph">Утвержден Указом Президиума Верховного Совета СССР от ]] | <p class="nkvd-griph">Утвержден Указом Президиума Верховного Совета СССР от <b>]] | ||
.. tools.reparseDate( ukdate ) .. [[</p>]] | .. tools.reparseDate( ukdate ) .. [[</b></p>]] | ||
end | end | ||
out = out .. [[ | out = out .. [[ | ||
<p class="nkvd-doc-header">]] .. docTypeName .. [[</p>]] | <p class="nkvd-doc-header">]] .. docTypeName .. [[</p>]] | ||
Строка 152: | Строка 178: | ||
out = out .. [[ | out = out .. [[ | ||
<p class="nkvd-doc-attr">]] | <p class="nkvd-doc-attr">]] | ||
tmp = {} | |||
if docNumber ~= '' then | |||
tmp[#tmp+1] = [[№ <b>]] .. docNumber .. [[</b>]] | |||
if docType.ctg == 'Указы Президиума Верховного Совета СССР' and string.sub( docNumber, 1, 2 ) == '60' then | |||
tmp[#tmp] = '<abbr title="До середины 1943 года указы не имели собственной нумерации; указан номер канцелярского дела с материалами указа.">' .. tmp[#tmp] .. '</abbr>' | |||
end | |||
end | |||
if docDate then | if docDate then | ||
tmp[#tmp+1] = [[<b>]] .. tools.textDate( docDate ) .. [[</b>]] | |||
end | end | ||
out = out .. table.concat( tmp, ', ' ) .. [[</p> | |||
]] | ]] | ||
end | end | ||
Строка 165: | Строка 195: | ||
end | end | ||
local source, podvig = Args['источник'], Args['подвиг'] | local source, podvig = Args['источник'], Args['подвиг'] | ||
if podvig then | tmp = '' | ||
if podvig then | |||
if string.sub( podvig, -1, -1 ) == '+' then | |||
tmp = '[[Категория:Наградные листы просмотрены]]' | |||
podvig = string.sub( podvig, 1, -2 ) | |||
else | |||
end | |||
podvig = '«[http://podvignaroda.ru/?#id=' .. podvig | podvig = '«[http://podvignaroda.ru/?#id=' .. podvig | ||
.. ' Подвиг народа]»' | .. ' Подвиг народа]»' | ||
end | end | ||
out = out .. [[ | out = out .. tmp .. [[ | ||
<p class="nkvd-doc-subheader">(]] .. docOrigin | <p class="nkvd-doc-subheader">(]] .. docOrigin | ||
out = out .. ')' .. doctools.endRecord( Args ) | out = out .. ')' .. doctools.endRecord( Args ) | ||
local cargo = frame:expandTemplate{ title = 'Таблица документов' } | local cargo = frame:expandTemplate{ title = 'Таблица документов' } | ||
global.set( 'gDoc', { | global.set( 'gDoc', { | ||
off = docOff ~= nil, | off = docOff ~= nil, | ||
date = docDate, | date = docDate, | ||
stream = docStream, | stream = docStream, | ||
revers = true, -- docRevers == 'реверс', -- менее жесткие проверки -- хотя для модуля Персона тут всегда было TRUE | revers = true, -- docRevers == 'реверс', -- менее жесткие проверки -- хотя для модуля Персона тут всегда было TRUE | ||
Строка 190: | Строка 226: | ||
Log = '' | Log = '' | ||
} ) | } ) | ||
-- if Args['каждому'] then | |||
-- global.set( 'gUniref-Документ', Args['каждому'] ) | |||
-- end | |||
global.set( 'gUniref-Документ', refTools.collect( Args, 'каждому' ) ) | |||
if docDate == '' then | if docDate == '' then | ||
tmp = 'без даты' | tmp = 'без даты' | ||
Строка 202: | Строка 239: | ||
end | end | ||
out = out .. '[[Категория:' .. docType.ctg .. ' ' .. tmp .. ']]' | out = out .. '[[Категория:' .. docType.ctg .. ' ' .. tmp .. ']]' | ||
return out | return out | ||
end | end | ||
Строка 212: | Строка 249: | ||
Doc.Log = '' | Doc.Log = '' | ||
global.set( 'gDoc', Doc ) | global.set( 'gDoc', Doc ) | ||
return x | return x | ||
end | end | ||
return pp | return pp |
Версия от 12:06, 6 октября 2020
Для документации этого модуля может быть создана страница Модуль:Документ/doc
local pp = {}
local global = mw.ext.luaglobal;
tools = require( 'Модуль:Tools' ) -- нужен в doctools
refTools = require( 'Модуль:RefTools' ) -- нужен в doctools
local doctools = require 'Module:DocTools'
global.strict( true )
pp[''] = function ( frame )
local Args, tmp = tools.checkargs( frame:getParent().args,
{ ['номер'] = '', ['дата'] = '', ['вид'] = '', ['вид+'] = true,
-- 26.07.2017 отказываемся от потока ['структура'] = 'иерархия',
['комментарий'] = true, ['сноска'] = true, ['каждому'] = true,
['содержание'] = 'текст', ['заголовок'] = true, ['выключен'] = true,
['публикация'] = true, ['источник'] = true, ['архив'] = true,
['подвиг'] = true, ['указ'] = true, } )
local errorDateAdvice = 'Используйте формат даты '
.. '«<var>ЧЧ</var>.<var>ММ</var>.<var>ГГГГ</var>» или '
.. '«<var>ММ</var>.<var>ГГГГ</var>» или «<var>ГГГГ</var>»'
if not Args then
return tools.errorMsg( 'Документ', 'Неизвестный параметр «' .. tmp .. '»', '' )
end
local gDoc = global.get( 'gDoc' )
if gDoc then
return tools.errorMsg ( 'Документ', 'Повторное использование шаблона «Документ»' )
end
local docOff = Args['выключен']
if mw.ustring.lower( docOff or '' ) == 'да' then
docOff = 'Формирование сведений о персоналиях на основании данного документа отключено'
end
local DocName = mw.title.getCurrentTitle().text
local name, idx, part, parts = mw.ustring.match( DocName, "^(.+) (%([IVX]+%)) [—−-] часть (%d+) из (%d+)$" )
if not name then
name, part, parts = mw.ustring.match( DocName, "^(.+) [—−-] часть (%d+) из (%d+)$" )
end
if not name then
name, idx = mw.ustring.match( DocName, "^(.+) (%([IVX]+%))$" )
end
local DocInfo
if idx then
DocInfo = 'Имеются [' .. tostring( mw.uri.fullUrl( 'Special:PrefixIndex', {
prefix = name,
namespace = 3008,
} ) )
.. ' другие документы] с такими же реквизитами.'
name = name .. ' ' .. idx
end
if parts then
DocInfo = 'Из-за большого объема настоящий документ разделен на ['
.. tostring( mw.uri.fullUrl( 'Special:PrefixIndex', {
prefix = name,
namespace = 3008,
} ) )
.. ' несколько частей]. ' .. ( DocInfo or '' )
end
local docNumber = Args['номер']
local docDate = Args['дата']
if docNumber == '~' then
docNumber = mw.ustring.match( DocName, ' № ([^ ]+) ' ) or mw.ustring.match( DocName, ' № ([^ ]+)$' )
if not docNumber and not string.find(DocName, '№', 1, true ) then
docNumber = '-'
end
end
if docDate == '~' then
docDate = mw.ustring.match( DocName, ' от (%d%d%.%d%d%.%d%d%d%d)' )
end
if not docDate or not docNumber then
return tools.errorMsg ( 'Документ', 'Для даты или номера документа использовано значение «~», но заголовок разобрать не удалось' )
end
if docNumber == '-' then
docNumber = ''
end
docDate = tools.parseDate( docDate )
if not docDate then
return tools.errorMsg ( 'Документ', 'Неправильный формат даты документа', errorDateAdvice )
end
local types = mw.loadData( 'Модуль:Документ/Виды документов' )
local docType = tools.db( types, tools.noPhrase( Args['вид'] ) )
if not docType then
return tools.errorMsg ( 'Документ',
'Параметр «вид» должен указывать один из допустимых видов документов',
'Перечень допустимых видов документов см. [[Модуль:Документ/Виды документов|тут]]' )
end
local docTypeName = docType.hdr
local vovCtg
tmp = Args['вид+']
if tmp then
if tmp == '~' then
tmp = mw.ustring.match( DocName, '^Приказ войскам ([^№]+) №' )
if not tmp then
local weapon
weapon, tmp = mw.ustring.match( DocName, '^Приказ командующего (артиллерией) ([^№]+) №' )
if not weapon then
weapon, tmp = mw.ustring.match( DocName, '^Приказ командующего (бронетанковыми и механизированными войсками) ([^№]+) №' )
end
if not weapon then
return tools.errorMsg ( 'Документ', 'Для параметра «вид+» использовано значение «~», но заголовок разобрать не удалось' )
end
docType = tools.db( types, tools.noPhrase( 'приказ командующего' ) )
docTypeName = docType.hdr
vovCtg = 'Приказы ' .. tmp
tmp = weapon .. ' ' .. tmp
else
vovCtg = 'Приказы ' .. tmp
end
end
docTypeName = docTypeName .. ' ' .. tmp
end
--- local defSort = docType.sort .. string.sub(docDate .. '----------', 1, 7 )
--- if mw.ustring.len( docNumber ) < 5 then
--- defSort = defSort .. mw.ustring.sub( '----' .. docNumber, -4, -1 )
--- end
-- local defSort = string.sub(docDate .. '----------', 1, 10 )
local defSort = string.char( 0x30 + tonumber( '0' .. string.sub( docDate, 9, 10 ) ) )
frame:callParserFunction{ name = 'DEFAULTSORT', args = ' ' .. defSort .. mw.title.getCurrentTitle().text }
local docRevers = mw.ustring.lower( Args['содержание'] )
local docOrigin = {
['реверс'] = 'содержание документа восстановлено на основании биографических справок',
['извлечение'] = 'извлечение из документа, приводится в изложении',
['текст'] = 'содержание документа приводится в изложении',
}
docOrigin = docOrigin[docRevers]
if not docOrigin then
return tools.errorMsg ( 'Документ',
'Параметр «содержание» может иметь значения «реверс», «извлечение» или «текст»',
'Значение «реверс» указывается для документов, восстановленных по'
.. ' биографическим справкам, «извлечение» или «текст» — при '
.. ' при воспроизведении текста документа' )
end
-- 26.07.2017 отказываемся от потока local docStream = mw.ustring.lower( Args['структура'] )
local docStream = 'иерархия'
if docStream == 'поток' then
docStream = true
elseif docStream == 'иерархия' then
docStream = false
else
return tools.errorMsg ( 'Документ',
'Параметр «структура» может иметь значения «поток» или «иерархия»',
'Значение «поток» указывается для документов, в которых рубрики '
.. ' не образуют вложенность' )
end
local out = ''
if DocInfo then
out = '<p class="nkvd-doc-parts>' .. DocInfo .. '</p>'
end
if docOff then
out = out .. '<p class="nkvd-doc-off>' .. docOff .. '</p>[[Категория:Выключенные документы]]'
end
if vovCtg then
out = out .. '[[Категория:' .. vovCtg .. '|' .. string.sub(docDate,4,4) .. docDate .. ']]'
end
local ukdate = Args['указ']
if ukdate then
ukdate = tools.parseDate( ukdate )
out = out .. [[
<p class="nkvd-griph">Утвержден Указом Президиума Верховного Совета СССР от <b>]]
.. tools.reparseDate( ukdate ) .. [[</b></p>]]
end
out = out .. [[
<p class="nkvd-doc-header">]] .. docTypeName .. [[</p>]]
if docDate ~= '' or docNumber ~= '' then
out = out .. [[
<p class="nkvd-doc-attr">]]
tmp = {}
if docNumber ~= '' then
tmp[#tmp+1] = [[№ <b>]] .. docNumber .. [[</b>]]
if docType.ctg == 'Указы Президиума Верховного Совета СССР' and string.sub( docNumber, 1, 2 ) == '60' then
tmp[#tmp] = '<abbr title="До середины 1943 года указы не имели собственной нумерации; указан номер канцелярского дела с материалами указа.">' .. tmp[#tmp] .. '</abbr>'
end
end
if docDate then
tmp[#tmp+1] = [[<b>]] .. tools.textDate( docDate ) .. [[</b>]]
end
out = out .. table.concat( tmp, ', ' ) .. [[</p>
]]
end
if Args['заголовок'] then
out = out .. '<p class="nkvd-doc-name">' .. Args['заголовок'] .. '</p>'
end
local source, podvig = Args['источник'], Args['подвиг']
tmp = ''
if podvig then
if string.sub( podvig, -1, -1 ) == '+' then
tmp = '[[Категория:Наградные листы просмотрены]]'
podvig = string.sub( podvig, 1, -2 )
else
end
podvig = '«[http://podvignaroda.ru/?#id=' .. podvig
.. ' Подвиг народа]»'
end
out = out .. tmp .. [[
<p class="nkvd-doc-subheader">(]] .. docOrigin
out = out .. ')' .. doctools.endRecord( Args )
local cargo = frame:expandTemplate{ title = 'Таблица документов' }
global.set( 'gDoc', {
off = docOff ~= nil,
date = docDate,
stream = docStream,
revers = true, -- docRevers == 'реверс', -- менее жесткие проверки -- хотя для модуля Персона тут всегда было TRUE
notEmpty = false, -- «Была персона» для иерархии
publication = Args['публикация'],
source = source,
podvig = podvig,
ukdate = ukdate,
archive = Args['архив'],
n2h = {}, -- number to header
h2v = {}, -- header to value
Log = ''
} )
-- if Args['каждому'] then
-- global.set( 'gUniref-Документ', Args['каждому'] )
-- end
global.set( 'gUniref-Документ', refTools.collect( Args, 'каждому' ) )
if docDate == '' then
tmp = 'без даты'
elseif string.len(docDate) == 4 then
tmp = 'за ??.' .. docDate
else
tmp = ' за ' .. string.sub( docDate, 6, 7 ) .. '.' .. string.sub( docDate, 1, 4 )
end
out = out .. '[[Категория:' .. docType.ctg .. ' ' .. tmp .. ']]'
return out
end
--[[------------------------------------------------------------------------]]--
pp['Отладка'] = function ( frame )
local Doc = global.get( 'gDoc' )
local x = mw.dumpObject( Doc )
Doc.Log = ''
global.set( 'gDoc', Doc )
return x
end
return pp