Модуль:Анкета: различия между версиями

Материал из Кадровый состав НКВД 1935-1939
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
 
(не показано 9 промежуточных версий 2 участников)
Строка 3: Строка 3:
local Frame, Args
local Frame, Args
local tools = require( 'Модуль:Tools' )
local tools = require( 'Модуль:Tools' )
global.strict( true )


local coD = mw.loadData( 'Модуль:Анкета/Причины смерти' )
local coD = mw.loadData( 'Модуль:Анкета/Причины смерти' )
Строка 27: Строка 26:


--[[------------------------------------------------------------------------]]--
--[[------------------------------------------------------------------------]]--
pp['Род'] = function ( frame )
pp['Род старый'] = function ( frame )
Frame = frame
Frame = frame
Args = frame:getParent().args
Args = frame:getParent().args
Строка 45: Строка 44:
local place = Args['место'] or ''
local place = Args['место'] or ''
local family = Args['в семье'] or ''
local family = Args['в семье'] or ''
local addendum, comment, source =  
local addendum, comment, source =
Args['дополнение'] or '', Args['сноска'] or '', Args['источник'] or ''
Args['дополнение'] or '', Args['сноска'] or '', Args['источник'] or ''
global.set( 'gBirth', { birthdate, place, family, addendum, comment, source } )  
global.set( 'gBirth', { birthdate, place, family, addendum, comment, source } )
return '<i></i>'
return '<i></i>'
end
end


--[[------------------------------------------------------------------------]]--
--[[------------------------------------------------------------------------]]--
pp['Род$'] = function ( frame )
pp['Род'] = function ( frame )
Frame = frame
-- Frame = frame
Args = tools.checkargs( frame:getParent().args,
local Args, tmp = tools.checkargs( frame:getParent().args,
{ '', ['место'] = '',  ['в семье'] = '',
{ '', true, ['место'] = true,  ['в семье'] = '',
['дополнение'] = '', ['сноска'] = '', ['источник'] = '', } )
['дополнение'] = '', ['сноска'] = '', ['источник'] = '', } )
if not Args then
return tools.errorMsg ( 'род', 'Неизвестный параметр «' .. tmp .. '»' )
end
if Args[2] and Args['место'] then
return tools.errorMsg ( 'род', 'Нельзя одновременно указывать и 2-й параметр, и параметр «место»' )
end
local place = Args['место'] or Args[2] or ''
local errorDateAdvice = 'Используйте формат даты '
local errorDateAdvice = 'Используйте формат даты '
.. '«<var>ЧЧ</var>.<var>ММ</var>.<var>ГГГГ</var>» или '
.. '«<var>ЧЧ</var>.<var>ММ</var>.<var>ГГГГ</var>» или '
Строка 70: Строка 76:
end
end
end
end
local place = Args['место']
local family = Args['в семье']
local family = Args['в семье']
local addendum, comment, source =  
local addendum, comment, source =
Args['дополнение'] or '', Args['сноска'] or '', Args['источник'] or ''
Args['дополнение'], Args['сноска'], Args['источник']
global.set( 'gBirth', { birthdate, place, family, addendum, comment, source } )  
global.set( 'gBirth', { birthdate, place, family, addendum, comment, source } )
return '<i></i>'
return '<i></i>'
end
end
Строка 96: Строка 101:
end
end
local cause = Args['причина']
local cause = Args['причина']
if not cause then  
if not cause then
cause = ''
cause = ''
end
end
if not coD.causeOD[cause] then
if not coD.causeOD[cause] then
return tools.errorMsg ( 'умер',  
return tools.errorMsg ( 'умер',
'Причина смерти должна быть указана в фиксированном формате',
'Причина смерти должна быть указана в фиксированном формате',
'См. [[Project:Причины смерти|перечень возможных значений параметра]]' )
'См. [[Project:Причины смерти|перечень возможных значений параметра]]' )
end
end
 
 
local place = Args['место'] or ''
local place = mw.text.trim( Args['место'] or Args[2] or '' )
local addendum, comment, source =  
local addendum, comment, source =
Args['дополнение'] or '', Args['сноска'] or '', Args['источник'] or ''
Args['дополнение'] or '', Args['сноска'] or '', Args['источник'] or ''
global.set( 'gDeath', { deathdate, place, cause, addendum, comment, source } )  
global.set( 'gDeath', { deathdate, place, cause, addendum, comment, source } )
return '<i></i>'
return '<i></i>'
end
end
Строка 118: Строка 123:
Args = frame:getParent().args
Args = frame:getParent().args
local ethn = mw.ustring.lower( mw.text.trim( Args[1] or '' ) )
local ethn = mw.ustring.lower( mw.text.trim( Args[1] or '' ) )
local addendum, comment, source =  
local addendum, comment, source =
Args['дополнение'] or '', Args['сноска'] or '', Args['источник'] or ''
Args['дополнение'] or '', Args['сноска'] or '', Args['источник'] or ''
if ethn ~= '' then
if ethn ~= '' then
Строка 125: Строка 130:
return '<i></i>'
return '<i></i>'
end
end
--[====[
--[[------------------------------------------------------------------------]]--
pp['КПСС'] = function ( frame )
Frame = frame
Args = frame:getParent().args
local flag = { [''] = 0, ['нет'] = -1, ['б/п'] = -1,
['кандидат'] = 1, ['член'] = 2, ['да'] = 2, }
local errorAdvice = 'Используйте формат {{ КПСС | кандидат = <var>дата</var> | '
.. 'член = <var>дата</var> | выбыл = <var>дата</var> | '
.. 'дополнение = <var>текст</var> | сноска =  <var>текст</var> | '
.. 'источник = <var>текст</var> }}. Дата выбытия указывается, если '
.. 'последующего восстановления в партии не было. Используйте формат '
.. '{{ КПСС | нет / да / кандидат }} для лиц, никогда не состоявших '
.. 'в партии / для коммунистов, о которых нет никаких других данных.'
local errorDateAdvice = 'Используйте формат даты '
.. '«<var>ЧЧ</var>.<var>ММ</var>.<var>ГГГГ</var>» или '
.. '«<var>ММ</var>.<var>ГГГГ</var>» или «<var>ГГГГ</var>»'
if global.get( 'gKPSS' ) then
return tools.errorMsg( 'КПСС', 'Повторное использование шаблона «КПСС»' )
end
local tmp = flag[mw.ustring.lower( mw.text.trim( Args[1] or '' ) )]
if not tmp then
return tools.errorMsg( 'КПСС', 'Некорректное значение параметра', errorAdvice )
end
local gKPSS = { ['флаг'] = tmp }
local dates = { 'кандидат', 'член', 'выбыл' }
for i, x in ipairs( dates ) do
if ( Args[x] or '' ) ~= '' then
tmp = tools.parseDate( Args[x], 1898 )
if not tmp then
return tools.errorMsg( 'КПСС',
'Ошибка в записи даты «' .. x .. '»', errorDateAdvice )
end
gKPSS[x] = tmp
end
end
gKPSS['дополнение'], gKPSS['сноска'], gKPSS['источник'] =
Args['дополнение'] or '', Args['сноска'] or '', Args['источник'] or ''
global.set( 'gKPSS', gKPSS )
return '<i></i>'
end
--[[------------------------------------------------------------------------]]--
pp['ВЛКСМ'] = function ( frame )
Frame = frame
Args = frame:getParent().args
local flag = { [''] = 0, ['нет'] = -1, ['б/п'] = -1,
['член'] = 2, ['да'] = 2, }
local errorAdvice = 'Используйте формат {{ ВЛКСМ | '
.. 'член = <var>дата</var> | выбыл = <var>дата</var> | '
.. 'дополнение = <var>текст</var> | сноска =  <var>текст</var> | '
.. 'источник = <var>текст</var> }}. Дата выбытия указывается, если '
.. 'последующего восстановления в ВЛКСМ не было. Используйте формат '
.. '{{ ВЛКСМ | нет / да  }} для лиц, никогда не состоявших '
.. 'в комсомоле / для комсомольцев, о которых нет никаких других данных.'
local errorDateAdvice = 'Используйте формат даты '
.. '«<var>ЧЧ</var>.<var>ММ</var>.<var>ГГГГ</var>» или '
.. '«<var>ММ</var>.<var>ГГГГ</var>» или «<var>ГГГГ</var>»'
if global.get( 'gVLKSM' ) then
return tools.errorMsg( 'ВЛКСМ', 'Повторное использование шаблона «ВЛКСМ»' )
end
local tmp = flag[mw.ustring.lower( mw.text.trim( Args[1] or '' ) )]
if not tmp then
return tools.errorMsg( 'ВЛКСМ', 'Некорректное значение параметра', errorAdvice )
end
local gVLKSM = { ['флаг'] = tmp }
local dates = { 'член', 'выбыл' }
for i, x in ipairs( dates ) do
if ( Args[x] or '' ) ~= '' then
tmp = tools.parseDate( Args[x], 1900 )
if not tmp then
return tools.errorMsg( 'ВЛКСМ',
'Ошибка в записи даты «' .. x .. '»', errorDateAdvice )
end
gVLKSM[x] = tmp
end
end
gVLKSM['дополнение'], gVLKSM['сноска'], gVLKSM['источник'] =
Args['дополнение'] or '', Args['сноска'] or '', Args['источник'] or ''
global.set( 'gVLKSM', gVLKSM )
return '<i></i>'
end
--[[------------------------------------------------------------------------]]--
pp['Инопартийность'] = function ( frame )
Frame = frame
Args = frame:getParent().args
local gBund =  mw.text.trim( Args[1] or '' )
if global.get( 'gBund' ) then
return tools.errorMsg( 'Инопартийность',
'Повторное использование шаблона «Инопартийность»' )
end
local addendum, comment, source =
Args['дополнение'] or '', Args['сноска'] or '', Args['источник'] or ''
if gBund ~= '' then
global.set( 'gBund', { gBund, addendum, comment, source } )
end
return '<i></i>'
end
--]====]


return pp
return pp

Текущая версия от 16:00, 16 апреля 2023

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

local pp = {}
local global = mw.ext.luaglobal;
local Frame, Args
local tools = require( 'Модуль:Tools' )

local coD = mw.loadData( 'Модуль:Анкета/Причины смерти' )



--[[------------------------------------------------------------------------]]--
pp['Пол'] = function ( frame )
	Frame = frame
	Args = frame:getParent().args
	local gender = mw.text.trim( Args[1] or '' )
	gender =  mw.ustring.lower( mw.ustring.sub( gender, 1, 1 ) )
	if gender == 'м' then
		gender = 1
	elseif gender == 'ж' then
		gender = 2
	else
		return tools.errorMsg( 'Пол', 'Такого пола нет', 'Бывает только «м» или «ж»' )
	end
	global.set( 'gGender', gender )
	return '<i></i>'
end

--[[------------------------------------------------------------------------]]--
pp['Род старый'] = function ( frame )
	Frame = frame
	Args = frame:getParent().args
	local errorDateAdvice = 'Используйте формат даты '
		.. '«<var>ЧЧ</var>.<var>ММ</var>.<var>ГГГГ</var>» или '
		.. '«<var>ММ</var>.<var>ГГГГ</var>» или «<var>ГГГГ</var>»'
	if global.get( 'gBirth' ) then
		return tools.errorMsg ( 'род', 'Повторное использование шаблона' )
	end
	local birthdate = mw.text.trim( Args[1] or '' )
	if birthdate ~= '' then
		birthdate = tools.parseDate( birthdate, 1850 )
		if not birthdate then
			return tools.errorMsg( 'род', 'Ошибка в записи даты', errorDateAdvice )
		end
	end
	local place = Args['место'] or ''
	local family = Args['в семье'] or ''
	local addendum, comment, source =
		Args['дополнение'] or '', Args['сноска'] or '', Args['источник'] or ''
	global.set( 'gBirth', { birthdate, place, family, addendum, comment, source } )
	return '<i></i>'
end

--[[------------------------------------------------------------------------]]--
pp['Род'] = function ( frame )
--	Frame = frame
	local Args, tmp = tools.checkargs( frame:getParent().args,
		{ '', true, ['место'] = true,  ['в семье'] = '',
			 ['дополнение'] = '', ['сноска'] = '', ['источник'] = '', } )
	if not Args then
		return tools.errorMsg ( 'род', 'Неизвестный параметр «' .. tmp .. '»' )
	end
	if Args[2] and Args['место'] then
		return tools.errorMsg ( 'род', 'Нельзя одновременно указывать и 2-й параметр, и параметр «место»' )
	end
	local place = Args['место'] or Args[2] or ''
	local errorDateAdvice = 'Используйте формат даты '
		.. '«<var>ЧЧ</var>.<var>ММ</var>.<var>ГГГГ</var>» или '
		.. '«<var>ММ</var>.<var>ГГГГ</var>» или «<var>ГГГГ</var>»'
	if global.get( 'gBirth' ) then
		return tools.errorMsg ( 'род', 'Повторное использование шаблона' )
	end
	local birthdate = Args[1]
	if birthdate ~= '' then
		birthdate = tools.parseDate( birthdate, 1850 )
		if not birthdate then
			return tools.errorMsg( 'род', 'Ошибка в записи даты', errorDateAdvice )
		end
	end
	local family = Args['в семье']
	local addendum, comment, source =
		Args['дополнение'], Args['сноска'], Args['источник']
	global.set( 'gBirth', { birthdate, place, family, addendum, comment, source } )
	return '<i></i>'
end

--[[------------------------------------------------------------------------]]--
pp['Умер'] = function ( frame )
	Frame = frame
	Args = frame:getParent().args
	local errorDateAdvice = 'Используйте формат даты '
		.. '«<var>ЧЧ</var>.<var>ММ</var>.<var>ГГГГ</var>» или '
		.. '«<var>ММ</var>.<var>ГГГГ</var>» или «<var>ГГГГ</var>»'
	if global.get( 'gDead' ) then
		return tools.errorMsg ( 'умер', 'Повторное использование шаблона' )
	end
	local deathdate = mw.text.trim( Args[1] or '' )
	if deathdate ~= '' then
		deathdate = tools.parseDate( deathdate, 1900 )
		if not deathdate then
			return tools.errorMsg( 'умер', 'Ошибка в записи даты', errorDateAdvice )
		end
	end
	local cause = Args['причина']
	if not cause then
		cause = ''
	end
	if not coD.causeOD[cause] then
		return tools.errorMsg ( 'умер',
			'Причина смерти должна быть указана в фиксированном формате',
			'См. [[Project:Причины смерти|перечень возможных значений параметра]]' )
	end


	local place = mw.text.trim( Args['место'] or Args[2] or '' )
	local addendum, comment, source =
		Args['дополнение'] or '', Args['сноска'] or '', Args['источник'] or ''
	global.set( 'gDeath', { deathdate, place, cause, addendum, comment, source } )
	return '<i></i>'
end

--[[------------------------------------------------------------------------]]--
pp['Национальность'] = function ( frame )
	Frame = frame
	Args = frame:getParent().args
	local ethn = mw.ustring.lower( mw.text.trim( Args[1] or '' ) )
	local addendum, comment, source =
		Args['дополнение'] or '', Args['сноска'] or '', Args['источник'] or ''
	if ethn ~= '' then
		global.set( 'gEthn', { ethn, addendum, comment, source } )
	end
	return '<i></i>'
end

return pp