<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://new.ru-skazki.ru/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="http://new.ru-skazki.ru/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="http://new.ru-skazki.ru/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-04T00:12:01Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>http://new.ru-skazki.ru/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=7131&amp;oldid=prev</id>
		<title>Andras: Новая страница: «require( &#039;strict&#039; ) local p = {}  local docPage = &#039;Module:Надстрочное предупреждение&#039; local templateStylesPage = &#039;Module:Надстрочное предупреждение/styles.css&#039; local defaultClass = &#039;ts-fix&#039; local defaultErrorCat = &#039;Категория:РуСказки:Надстрочные предупреждения с некорректно заданной датой&#039;  local mwLang = mw.getContentLanguage() local getA...»</title>
		<link rel="alternate" type="text/html" href="http://new.ru-skazki.ru/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=7131&amp;oldid=prev"/>
		<updated>2024-02-25T11:39:13Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «require( &amp;#039;strict&amp;#039; ) local p = {}  local docPage = &amp;#039;Module:Надстрочное предупреждение&amp;#039; local templateStylesPage = &amp;#039;Module:Надстрочное предупреждение/styles.css&amp;#039; local defaultClass = &amp;#039;ts-fix&amp;#039; local defaultErrorCat = &amp;#039;&lt;a href=&quot;/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A0%D1%83%D0%A1%D0%BA%D0%B0%D0%B7%D0%BA%D0%B8:%D0%9D%D0%B0%D0%B4%D1%81%D1%82%D1%80%D0%BE%D1%87%D0%BD%D1%8B%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%D1%8F_%D1%81_%D0%BD%D0%B5%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%82%D0%BD%D0%BE_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9_%D0%B4%D0%B0%D1%82%D0%BE%D0%B9&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Категория:РуСказки:Надстрочные предупреждения с некорректно заданной датой (страница не существует)&quot;&gt;Категория:РуСказки:Надстрочные предупреждения с некорректно заданной датой&lt;/a&gt;&amp;#039;  local mwLang = mw.getContentLanguage() local getA...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require( &amp;#039;strict&amp;#039; )&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local docPage = &amp;#039;Module:Надстрочное предупреждение&amp;#039;&lt;br /&gt;
local templateStylesPage = &amp;#039;Module:Надстрочное предупреждение/styles.css&amp;#039;&lt;br /&gt;
local defaultClass = &amp;#039;ts-fix&amp;#039;&lt;br /&gt;
local defaultErrorCat = &amp;#039;[[Категория:РуСказки:Надстрочные предупреждения с некорректно заданной датой]]&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local mwLang = mw.getContentLanguage()&lt;br /&gt;
local getArgs = require( &amp;#039;Module:Arguments&amp;#039; ).getArgs&lt;br /&gt;
&lt;br /&gt;
local function isEmpty( val )&lt;br /&gt;
	return val == nil or val == &amp;#039;&amp;#039;&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( &amp;#039;%s-%s&amp;#039;, defaultClass, val )&lt;br /&gt;
	end&lt;br /&gt;
	return string.format( &amp;#039;%s-%s %s-%s&amp;#039;, 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 .. &amp;#039;-&amp;#039; .. month .. &amp;#039;-&amp;#039; .. day&lt;br /&gt;
	&lt;br /&gt;
	local success, result = pcall( mwLang.formatDate, mwLang, &amp;#039;U&amp;#039;, dateString )&lt;br /&gt;
	if success then&lt;br /&gt;
		if tonumber( result ) then&lt;br /&gt;
			return &amp;#039;@&amp;#039; .. 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( &amp;#039;span&amp;#039; )&lt;br /&gt;
		:addClass( getHtmlClass( class, &amp;#039;text&amp;#039; ) )&lt;br /&gt;
		-- TODO: WMF pls fix [[phab:T162379]] / https://phabricator.wikimedia.org/T162379&lt;br /&gt;
		:attr( &amp;#039;style&amp;#039;, &amp;#039;-webkit-box-decoration-break: clone&amp;#039; )&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( &amp;#039;Module:Delink&amp;#039; )._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( &amp;#039; (j xg Y)&amp;#039;, 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( &amp;#039;i&amp;#039; )&lt;br /&gt;
	if not isEmpty( comment ) then&lt;br /&gt;
		local span = mw.html.create( &amp;#039;span&amp;#039; )&lt;br /&gt;
			:attr( &amp;#039;title&amp;#039;, 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 .. &amp;#039;-comment&amp;#039; )&lt;br /&gt;
			else&lt;br /&gt;
				html:addClass( defaultClass .. &amp;#039;-commented&amp;#039; )&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( &amp;#039;[[%s|%s]]&amp;#039;, 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 &amp;#039;&amp;#039; end&lt;br /&gt;
	&lt;br /&gt;
	-- Страница обсуждения для текущей статьи в случае отсутствия якоря&lt;br /&gt;
	local anchorSymbol = mw.ustring.find( page, &amp;#039;#&amp;#039; )&lt;br /&gt;
	if isEmpty( anchorSymbol ) or anchorSymbol == 1 then&lt;br /&gt;
		page = mw.title.getCurrentTitle().talkPageTitle.fullText .. &amp;#039;#&amp;#039; .. mw.text.trim( page, &amp;#039;#&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = string.format( &amp;#039; [[%s|(обс.)]]&amp;#039;, page )&lt;br /&gt;
	if isEmpty( noprint ) or not noprint then&lt;br /&gt;
		local html = mw.html.create( &amp;#039;span&amp;#039; )&lt;br /&gt;
			:addClass( &amp;#039;noprint&amp;#039; )&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 &amp;#039;&amp;#039;&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 &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	config = &amp;#039; &amp;#039; .. ( config or &amp;#039;&amp;gt;= 0&amp;#039; )&lt;br /&gt;
	local mDate = require( &amp;#039;Module:Date&amp;#039; )._Date&lt;br /&gt;
	local today = mwLang:formatDate( &amp;#039;Y-m-d H:i:s&amp;#039; )&lt;br /&gt;
	local input = mwLang:formatDate( &amp;#039;Y-m-d H:i:s&amp;#039;, 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 == &amp;#039;1&amp;#039; then&lt;br /&gt;
		return category&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getError( comment, anchor )&lt;br /&gt;
	local html = mw.html.create( &amp;#039;strong&amp;#039; )&lt;br /&gt;
		:addClass( defaultClass .. &amp;#039;-error error noprint&amp;#039; )&lt;br /&gt;
		:wikitext( string.format( &amp;#039;[[%s#%s|Ошибка:]] %s&amp;#039;, 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( &amp;#039;Module:Template invocation&amp;#039; )&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[&amp;#039;date&amp;#039;] = 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 = &amp;#039;&amp;#039;&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 = &amp;#039;ts-&amp;#039; .. args.name&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	result = result .. frame:extensionTag{&lt;br /&gt;
		name = &amp;#039;templatestyles&amp;#039;, 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 = &amp;#039;templatestyles&amp;#039;, 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( &amp;#039;sup&amp;#039; )&lt;br /&gt;
		:addClass( getHtmlClass( class, &amp;#039;template&amp;#039; ) )&lt;br /&gt;
	&lt;br /&gt;
	if not isEmpty( args.noprint ) then&lt;br /&gt;
		tag:addClass( &amp;#039;noprint&amp;#039; )&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;#039;не задан параметр &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt;&amp;#039;, &amp;#039;Использование&amp;#039; )&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[ &amp;#039;span-text&amp;#039; ] ) then&lt;br /&gt;
		result = result .. getSpanText( args[ &amp;#039;span-text&amp;#039; ], class )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Вывод надстрочного предупреждения&lt;br /&gt;
	local comment = getComment( args.comment or args[ &amp;#039;comment-default&amp;#039; ], args.link, date )&lt;br /&gt;
	tag&lt;br /&gt;
		:wikitext( &amp;#039;&amp;amp;#91;&amp;#039; ) -- [&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;#039;&amp;amp;#93;&amp;#039; ) -- ]&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( &amp;#039;некорректно задана дата установки (исправьте через подстановку шаблона)&amp;#039;, &amp;#039;Дата установки&amp;#039; )&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( &amp;#039;Module:Якорь&amp;#039; ).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[ &amp;#039;cat1&amp;#039; ], args[ &amp;#039;cat-date1&amp;#039; ], date )&lt;br /&gt;
			result = result .. getCategory( args[ &amp;#039;cat2&amp;#039; ], args[ &amp;#039;cat-date2&amp;#039; ], date )&lt;br /&gt;
			result = result .. getCategory( args[ &amp;#039;cat3&amp;#039; ], args[ &amp;#039;cat-date3&amp;#039; ], 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>Andras</name></author>
	</entry>
</feed>