<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://belgen.info/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3A%D0%9D%D0%B0%D0%B4%D1%81%D1%82%D1%80%D0%BE%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%B4%D1%83%D0%BF%D1%80%D0%B5%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5</id>
	<title>Модуль:Надстрочное предупреждение - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://belgen.info/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3A%D0%9D%D0%B0%D0%B4%D1%81%D1%82%D1%80%D0%BE%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%B4%D1%83%D0%BF%D1%80%D0%B5%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5"/>
	<link rel="alternate" type="text/html" href="https://belgen.info/wiki/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%9D%D0%B0%D0%B4%D1%81%D1%82%D1%80%D0%BE%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%B4%D1%83%D0%BF%D1%80%D0%B5%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5&amp;action=history"/>
	<updated>2026-04-25T22:24:18Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://belgen.info/wiki/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%9D%D0%B0%D0%B4%D1%81%D1%82%D1%80%D0%BE%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%B4%D1%83%D0%BF%D1%80%D0%B5%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=2828&amp;oldid=prev</id>
		<title>Admin: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="https://belgen.info/wiki/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%9D%D0%B0%D0%B4%D1%81%D1%82%D1%80%D0%BE%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%B4%D1%83%D0%BF%D1%80%D0%B5%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=2828&amp;oldid=prev"/>
		<updated>2025-05-24T17:22:55Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 17:22, 24 мая 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://belgen.info/wiki/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%9D%D0%B0%D0%B4%D1%81%D1%82%D1%80%D0%BE%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%B4%D1%83%D0%BF%D1%80%D0%B5%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=2827&amp;oldid=prev</id>
		<title>https://belgen.info/wiki&gt;Stjn: уточнение</title>
		<link rel="alternate" type="text/html" href="https://belgen.info/wiki/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%9D%D0%B0%D0%B4%D1%81%D1%82%D1%80%D0%BE%D1%87%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%B4%D1%83%D0%BF%D1%80%D0%B5%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5&amp;diff=2827&amp;oldid=prev"/>
		<updated>2023-08-02T21:58:35Z</updated>

		<summary type="html">&lt;p&gt;уточнение&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require( 'strict' )&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local docPage = 'Module:Надстрочное предупреждение'&lt;br /&gt;
local templateStylesPage = 'Module:Надстрочное предупреждение/styles.css'&lt;br /&gt;
local defaultClass = 'ts-fix'&lt;br /&gt;
local defaultErrorCat = '[[Категория:Википедия:Надстрочные предупреждения с некорректно заданной датой]]'&lt;br /&gt;
&lt;br /&gt;
local mwLang = mw.getContentLanguage()&lt;br /&gt;
local getArgs = require( 'Module:Arguments' ).getArgs&lt;br /&gt;
&lt;br /&gt;
local function isEmpty( val )&lt;br /&gt;
	return val == nil or val == ''&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Комбинация стандартного класса и кастомного&lt;br /&gt;
local function getHtmlClass( class, val )&lt;br /&gt;
	if isEmpty( class ) then&lt;br /&gt;
		return string.format( '%s-%s', defaultClass, val )&lt;br /&gt;
	end&lt;br /&gt;
	return string.format( '%s-%s %s-%s', defaultClass, val, class, val )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Игнорирование некорректно указанных дат с помощью стандартных методов&lt;br /&gt;
local function getValidDate( year, month, day )&lt;br /&gt;
	if isEmpty( year ) or isEmpty( month ) or isEmpty( day ) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local dateString = year .. '-' .. month .. '-' .. day&lt;br /&gt;
	&lt;br /&gt;
	local success, result = pcall( mwLang.formatDate, mwLang, 'U', dateString )&lt;br /&gt;
	if success then&lt;br /&gt;
		if tonumber( result ) then&lt;br /&gt;
			return '@' .. result&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Форматирование выделяемого шаблоном текста&lt;br /&gt;
local function getSpanText( text, class )&lt;br /&gt;
	local tag = mw.html.create( 'span' )&lt;br /&gt;
		:addClass( getHtmlClass( class, 'text' ) )&lt;br /&gt;
		-- TODO: WMF pls fix [[phab:T162379]] / https://phabricator.wikimedia.org/T162379&lt;br /&gt;
		:attr( 'style', '-webkit-box-decoration-break: clone' )&lt;br /&gt;
		:wikitext( text )&lt;br /&gt;
	&lt;br /&gt;
	return tostring( tag )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Форматирование комментария как в шаблоне&lt;br /&gt;
local function getComment( comment, link, date )&lt;br /&gt;
	if isEmpty( comment ) and isEmpty( date ) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- «Википедия:Нейтральная точка зрения (2 мая 2015)»&lt;br /&gt;
	if isEmpty( comment ) and not isEmpty( date ) then&lt;br /&gt;
		comment = link&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEmpty( comment ) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local delink = require( 'Module:Delink' )._delink&lt;br /&gt;
	comment = delink( { comment } )&lt;br /&gt;
	&lt;br /&gt;
	if not isEmpty( date ) then&lt;br /&gt;
		comment = comment .. mwLang:formatDate( ' (j xg Y)', date )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return comment&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Форматирование ссылки как в шаблоне&lt;br /&gt;
local function getLink( link, text, comment, hasCustomComment )&lt;br /&gt;
	local html = mw.html.create( 'i' )&lt;br /&gt;
	if not isEmpty( comment ) then&lt;br /&gt;
		local span = mw.html.create( 'span' )&lt;br /&gt;
			:attr( 'title', comment )&lt;br /&gt;
			:wikitext( text )&lt;br /&gt;
		&lt;br /&gt;
		if hasCustomComment then&lt;br /&gt;
			if isEmpty( link ) then&lt;br /&gt;
				html:addClass( defaultClass .. '-comment' )&lt;br /&gt;
			else&lt;br /&gt;
				html:addClass( defaultClass .. '-commented' )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		text = tostring( span )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEmpty( link ) then&lt;br /&gt;
		html:wikitext( text )&lt;br /&gt;
	else&lt;br /&gt;
		html:wikitext( string.format( '[[%s|%s]]', link, text ) )&lt;br /&gt;
	end&lt;br /&gt;
	return tostring( html )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Форматирование ссылки на обсуждение как в шаблоне&lt;br /&gt;
local function getTalkLink( page, noprint )&lt;br /&gt;
	if not page then return '' end&lt;br /&gt;
	&lt;br /&gt;
	-- Страница обсуждения для текущей статьи в случае отсутствия якоря&lt;br /&gt;
	local anchorSymbol = mw.ustring.find( page, '#' )&lt;br /&gt;
	if isEmpty( anchorSymbol ) or anchorSymbol == 1 then&lt;br /&gt;
		page = mw.title.getCurrentTitle().talkPageTitle.fullText .. '#' .. mw.text.trim( page, '#' )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = string.format( ' [[%s|(обс.)]]', page )&lt;br /&gt;
	if isEmpty( noprint ) or not noprint then&lt;br /&gt;
		local html = mw.html.create( 'span' )&lt;br /&gt;
			:addClass( 'noprint' )&lt;br /&gt;
			:wikitext( result )&lt;br /&gt;
		&lt;br /&gt;
		result = tostring( html )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Простановка категорий&lt;br /&gt;
local function getCategory( category, config, date )&lt;br /&gt;
	if isEmpty( category ) then&lt;br /&gt;
		return ''&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if config == false then&lt;br /&gt;
		return category&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEmpty( date ) then&lt;br /&gt;
		return ''&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	config = ' ' .. ( config or '&amp;gt;= 0' )&lt;br /&gt;
	local mDate = require( 'Module:Date' )._Date&lt;br /&gt;
	local today = mwLang:formatDate( 'Y-m-d H:i:s' )&lt;br /&gt;
	local input = mwLang:formatDate( 'Y-m-d H:i:s', date )&lt;br /&gt;
	local diff = ( mDate( today ) - mDate( input ) )&lt;br /&gt;
	&lt;br /&gt;
	local success, result = pcall( mw.ext.ParserFunctions.expr, diff .. config )&lt;br /&gt;
	if success and result == '1' then&lt;br /&gt;
		return category&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return ''&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getError( comment, anchor )&lt;br /&gt;
	local html = mw.html.create( 'strong' )&lt;br /&gt;
		:addClass( defaultClass .. '-error error noprint' )&lt;br /&gt;
		:wikitext( string.format( '[[%s#%s|Ошибка:]] %s', docPage, anchor, comment ) )&lt;br /&gt;
	&lt;br /&gt;
	return tostring( html )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Поддержка подстановки без Unsubst&lt;br /&gt;
function p.subst( frame )&lt;br /&gt;
	local args = getArgs( frame, {&lt;br /&gt;
		parentOnly = true,&lt;br /&gt;
	} )&lt;br /&gt;
	local mArgs = getArgs( frame, {&lt;br /&gt;
		removeBlanks = true,&lt;br /&gt;
	} )&lt;br /&gt;
	local mTemplateInvocation = require( 'Module:Template invocation' )&lt;br /&gt;
	local name = mTemplateInvocation.name( frame:getParent():getTitle() )&lt;br /&gt;
	&lt;br /&gt;
	-- Передать все нумерованные параметры из вызова модуля&lt;br /&gt;
	for key, val in pairs( mArgs ) do&lt;br /&gt;
		if key == tonumber( key ) then&lt;br /&gt;
			args[ key ] = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Чаще всего перенос из других разделов, в случае проблем напишите на СО&lt;br /&gt;
	args['date'] = nil&lt;br /&gt;
	&lt;br /&gt;
	return mTemplateInvocation.invocation( name, args )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
-- Модуль на замену шаблону «Надстрочное предупреждение»&lt;br /&gt;
--&lt;br /&gt;
function p.main( frame )&lt;br /&gt;
	local args = getArgs( frame )&lt;br /&gt;
	local date = getValidDate( args.year, args.month, args.day )&lt;br /&gt;
	local hasDate = not isEmpty( args.day ) or not isEmpty( args.month ) or not isEmpty( args.year )&lt;br /&gt;
	local isMainNamespace = mw.title.getCurrentTitle().namespace == 0&lt;br /&gt;
	local result = ''&lt;br /&gt;
	&lt;br /&gt;
	-- Поддержка TemplateStyles&lt;br /&gt;
	local class = nil&lt;br /&gt;
	if not isEmpty( args.name ) then&lt;br /&gt;
		class = 'ts-' .. args.name&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	result = result .. frame:extensionTag{&lt;br /&gt;
		name = 'templatestyles', args = { src = templateStylesPage }&lt;br /&gt;
	}&lt;br /&gt;
	if not isEmpty( args.name ) and not isEmpty( args.templatestyles ) then&lt;br /&gt;
		result = result .. frame:extensionTag{&lt;br /&gt;
			name = 'templatestyles', args = { src = args.templatestyles }&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Поддержка подстановки&lt;br /&gt;
	if mw.isSubsting() then&lt;br /&gt;
		return p.subst( frame )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Вывод надстрочного предупреждения&lt;br /&gt;
	local tag = mw.html.create( 'sup' )&lt;br /&gt;
		:addClass( getHtmlClass( class, 'template' ) )&lt;br /&gt;
	&lt;br /&gt;
	if not isEmpty( args.noprint ) then&lt;br /&gt;
		tag:addClass( 'noprint' )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Вывод ошибки о параметре text&lt;br /&gt;
	if isEmpty( args.text ) then&lt;br /&gt;
		result = result .. getError( 'не задан параметр &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt;', 'Использование' )&lt;br /&gt;
		tag:wikitext( result )&lt;br /&gt;
		&lt;br /&gt;
		return tostring( tag )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Поддержка параметра {{{span-text|}}}&lt;br /&gt;
	if not isEmpty( args[ 'span-text' ] ) then&lt;br /&gt;
		result = result .. getSpanText( args[ 'span-text' ], class )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Вывод надстрочного предупреждения&lt;br /&gt;
	local comment = getComment( args.comment or args[ 'comment-default' ], args.link, date )&lt;br /&gt;
	tag&lt;br /&gt;
		:wikitext( '&amp;amp;#91;' ) -- [&lt;br /&gt;
		:wikitext( getLink( args.link, args.text, comment, not isEmpty( args.comment ) ) )&lt;br /&gt;
		:wikitext( getTalkLink( args.talk, args.noprint ) )&lt;br /&gt;
		:wikitext( '&amp;amp;#93;' ) -- ]&lt;br /&gt;
		&lt;br /&gt;
	-- Проверка для категории страниц с некорректным указанием даты&lt;br /&gt;
	local errorcat = args.errorcat or defaultErrorCat&lt;br /&gt;
	if hasDate and isEmpty( date ) then&lt;br /&gt;
		result = result .. getError( 'некорректно задана дата установки (исправьте через подстановку шаблона)', 'Дата установки' )&lt;br /&gt;
		&lt;br /&gt;
		if isMainNamespace then&lt;br /&gt;
			result = result .. errorcat&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		result = result .. tostring( tag )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Поддержка параметра {{{anchor|}}}&lt;br /&gt;
	if not isEmpty( args.anchor ) then&lt;br /&gt;
		local anchor = require( 'Module:Якорь' ).main;&lt;br /&gt;
		result = anchor{ visible = true, text = result, args.anchor }&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Установка категорий&lt;br /&gt;
	if isEmpty( args.nocat ) and isMainNamespace then&lt;br /&gt;
		result = result .. getCategory( args.cat, false )&lt;br /&gt;
		&lt;br /&gt;
		if hasDate then&lt;br /&gt;
			result = result .. getCategory( args[ 'cat1' ], args[ 'cat-date1' ], date )&lt;br /&gt;
			result = result .. getCategory( args[ 'cat2' ], args[ 'cat-date2' ], date )&lt;br /&gt;
			result = result .. getCategory( args[ 'cat3' ], args[ 'cat-date3' ], date )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>https://belgen.info/wiki&gt;Stjn</name></author>
	</entry>
</feed>