Модуль:LawLink

Материал из Справочника наблюдателя
Перейти к:навигация, поиск

(i)      Описание модуля[]

Функция {{#invoke:LawLink|LL}} предназначена для применения в шаблонах, используемых для построения ссылок на документы. Образец (шаблон {{ГК}} ):

{{#invoke:LawLink|LL
  |им=Гражданский кодекс Российской Федерации
  |род=Гражданского кодекса Российской Федерации
  |ссылка=НПА:Гражданский кодекс Российской Федерации
}}

Имеется также универсальный шаблон {{Док:Настройка}} , который после включения в текст статьи позволяет строить ссылки на документы с использованием шаблона {{Док}} :

{{Док:Настройка
  |им=Гражданский кодекс Российской Федерации
  |род=Гражданского кодекса Российской Федерации
  |им.=ГКГражданский кодекс Российской Федерации РФ
  |род.=ГКГражданский кодекс Российской Федерации РФ
  |ссылка=НПА:Гражданский кодекс Российской Федерации
}}

Вышеприведенный пример использования {{Док:Настройка}}  обеспечит идентичные результаты работы шаблонов {{ГК}}  и {{Док}} .

КодРезультатПояснение
{{Док|ст.|35|кодекса}}ст. 35 кодексаСсылка на статью включает предшествующий и следующий за номером текст
{{Док|ст.|35|+}}ст. 35 Гражданского кодекса Российской Федерации|+ вместо 3-го параметра (последующего текста) порождает наименование закона в родительном падеже
{{Док|ст.|35|+.}}ст. 35 ГК РФ|+. вместо 3-го параметра (последующего текста) порождает сокращенную форму наименования закона в родительном падеже (если она определена)
{{Док|ст.|35|кодекса|Lbl3501}}ст. 35 кодексаДополнительно 4-м параметром может указываться метка (якорь)
{{Док|ст.|35|+|!}}ст. 35 Гражданского кодекса Российской Федерации...а |! вместо метки блокирует порождение ссылки. Такое осмысленно обычно в сочетании с |+ в качестве 3-го параметра (чтобы автоматически сформировать полное название закона)
{{Док|!|35|соответствующая статья}}соответствующая статья|! вместо 1-го параметра (предшествующего номеру текста) означает, что в формируемый текст не будет включен и номер статьи
{{Док|!|35|указанная норма|Lbl3501}}указанная нормаТакой способ ссылки также может сочетаться с меткой (якорем)
{{Док|это|Глава 1|кодекса}}это Глава 1 кодексаЕсли второй параметр (где обычно указывается номер статьи) начинается не с цифры, то считается, что это полное название структурной единицы нормативного акта
{{Док|это|Глава 1|кодекса|Lbl111}}это Глава 1 кодексаПри этом также могут использоваться якоря
{{Док}}Гражданский кодекс Российской ФедерацииВ отсутствие номера статьи формируется ссылка на закон в целом
{{Док|+}}Гражданского кодекса Российской Федерации|+ — родительный падеж
{{Док|Учим матчасть}}Учим матчастьвместо названия закона можно выдать произвольный текст
{{Док|!}}Гражданский кодекс Российской Федерации|! блокирует собственно ссылку
{{Док|+|!}}Гражданского кодекса Российской Федерации|+ и |! могут использоваться одновременно (в любом порядке)

См. также[]

Шаблониспользуется для ссылок на закон
{{152}} Федеральный закон от 27.07.2006 № 152−ФЗ «О персональных данных»
{{ГК}} Гражданский кодекс Российской Федерации
{{ГПК}} Гражданский процессуальный кодекс Российской Федерации
{{АПК}} Арбитражный процессуальный кодекс Российской Федерации
{{КАС}} Кодекс административного судопроизводства Российской Федерации
{{КоАП}} Кодекс Российской Федерации об административных правонарушениях
{{УПК}} Уголовно-процессуальный кодекс Российской Федерации
{{УК}} Уголовный кодекс Российской Федерации
{{СМИ}} Закон Российской Федерации от 27.12.1991 № 2124−I «О средствах массовой информации»
{{ЗоПол}} Федеральный закон от 07.02.2011 № 3−ФЗ «О полиции»
{{ФЗГ}} Федеральный закон от 12.06.2002 № 67−ФЗ «Об основных гарантиях избирательных прав и права на участие в референдуме граждан Российской Федерации»
{{ФЗГ/doc}} — общая документация для всех вышеперечисленных шаблонов
  • Шаблоны {{Док:Настройка}} , {{Док}}  — используются для ссылок на произвольные нормативные акты
local p = {}

function p.LL(frame)
	local params = frame:getParent().args
	local configs = frame.args
	local before, article, after, label = mw.text.trim(params[1] or ''), mw.text.trim(params[2] or ''), 
		mw.text.trim(params[3] or ''), mw.text.trim(params[4] or '')
	local mode
	local res = ''
	if article == '' or article == '+' or article == '+.' or article == '.' or article == '!' then -- link to whole doc
		if before == '!' then -- exclamation mark into second position (article)
			before, article = article, before
		end	
		if article ~= '!' then
			res = '[[' .. configs['ссылка'] .. '|'
		end
		if before == '+' then
			res = res .. configs['род']
		elseif before == '+.' then
			res = res .. ( configs['род.'] or configs['род'] )
		elseif before == '' then
			res = res .. configs['им']
		elseif before == '.' then
			res = res .. ( configs['им.'] or configs['им'] )
		else
			res = res .. before
		end
		if article ~= '!' then
			res = res .. ']]'
		end
	else
		if label ~= '!' then
			res = '[[' .. configs['ссылка'] .. ':'
			local x = mw.ustring.sub(article,1,1)
			if x >= '0' and x <= '9' then
				res = res .. (configs['статья'] or 'Статья ')
			end
			res = res .. article
			if label ~= '' then
				res = res .. '#' .. label
			end
			res = res .. '|'
		end
		local resar = {}
		if before ~= '!' then
			if before ~= '' then
				table.insert(resar, before)
			end
			table.insert(resar, article)
		end
		if after == '+' then
			table.insert(resar, configs['род'])
		elseif after == '.' or after == '+.'  then
			table.insert(resar, configs['род.'] or configs['род'])
		elseif after ~= '' then
			table.insert(resar, after)
		end
		res = res .. table.concat(resar, ' ')
		if label ~= '!' then
			res = res .. ']]'
		end
	end
	
	return res		
end

return p