Модуль:Анкета

Материал из Кадровый состав НКВД 1935-1939
Перейти к навигации Перейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

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

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

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,
		{ '', ['место'] = '',  ['в семье'] = '',
			 ['дополнение'] = '', ['сноска'] = '', ['источник'] = '', } )
	if not Args then
		return tools.errorMsg ( 'род', tmp )
	end
	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 place = Args['место']
	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 = Args['место'] 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

--[====[
--[[------------------------------------------------------------------------]]--
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