<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://docs.osmost.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AURL</id>
	<title>Модуль:URL - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://docs.osmost.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AURL"/>
	<link rel="alternate" type="text/html" href="https://docs.osmost.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:URL&amp;action=history"/>
	<updated>2026-05-02T17:57:50Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://docs.osmost.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:URL&amp;diff=439&amp;oldid=prev</id>
		<title>Vasilisa: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="https://docs.osmost.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:URL&amp;diff=439&amp;oldid=prev"/>
		<updated>2025-09-11T13:49:51Z</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;Версия от 16:49, 11 сентября 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>Vasilisa</name></author>
	</entry>
	<entry>
		<id>https://docs.osmost.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:URL&amp;diff=438&amp;oldid=prev</id>
		<title>[[en:Infobox software]]&gt;Jack who built the house: уточнение категоризации</title>
		<link rel="alternate" type="text/html" href="https://docs.osmost.ru/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:URL&amp;diff=438&amp;oldid=prev"/>
		<updated>2017-09-18T16:34:08Z</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;function startsWith( source, substring )&lt;br /&gt;
	if mw.ustring.len( substring ) &amp;gt; mw.ustring.len( source ) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return mw.ustring.sub( source, 1, mw.ustring.len( substring ) ) == substring&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p = {}&lt;br /&gt;
&lt;br /&gt;
function formatUrlImpl( source, title, length )&lt;br /&gt;
	local scheme, host, path&lt;br /&gt;
	local postfix = &amp;#039;&amp;#039;&lt;br /&gt;
	local arg1, arg2 = source, title&lt;br /&gt;
	local isTestPage = mw.title.getCurrentTitle().prefixedText == &amp;#039;Модуль:URL&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	-- Две квадратные скобки подряд — [[вики-ссылка]] вместо [ссылки] — возвращаем вход как есть.&lt;br /&gt;
	if string.find( arg1, &amp;quot;[[&amp;quot;, 1, true ) then&lt;br /&gt;
		local result = arg1&lt;br /&gt;
		if not isTestPage then&lt;br /&gt;
			result = result .. &amp;#039;[[Категория:Википедия:Статьи с вики-ссылкой, переданной в Модуль:URL]]&amp;#039;&lt;br /&gt;
			if arg2 then&lt;br /&gt;
				-- Если есть arg2, а мы распарсить ссылку не смогли, и значит заменить title не сможем корректно, это есть ошибка.&lt;br /&gt;
				result = result .. &amp;#039;[[Категория:Википедия:Статьи с ошибочной работой Модуль:URL]]&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return result&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Более одной квадратной скобки — скорее всего, задано более одного URL — тоже возвращаем как есть.&lt;br /&gt;
	if select(2, string.gsub( arg1, &amp;quot;%[&amp;quot;, &amp;quot;&amp;quot; )) &amp;gt; 1 then&lt;br /&gt;
		local result = arg1&lt;br /&gt;
		if not isTestPage then&lt;br /&gt;
			result = result .. &amp;#039;[[Категория:Википедия:Статьи со сложным входом в Модуль:URL]]&amp;#039;&lt;br /&gt;
			if arg2 then&lt;br /&gt;
				-- Если есть arg2, а мы распарсить ссылку не смогли, и значит заменить title не сможем корректно, это есть ошибка.&lt;br /&gt;
				result = result .. &amp;#039;[[Категория:Википедия:Статьи с ошибочной работой Модуль:URL]]&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return result&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	source = mw.text.trim( source, &amp;quot;%[%] &amp;quot; )&lt;br /&gt;
	local titleDelimeterPosition = mw.ustring.find( source, &amp;quot; &amp;quot;, 1 )&lt;br /&gt;
	if titleDelimeterPosition then&lt;br /&gt;
		if not title or title == &amp;quot;&amp;quot; then&lt;br /&gt;
			title = mw.ustring.sub( source, titleDelimeterPosition + 1 )&lt;br /&gt;
			local postfixDelimeterPosition = mw.ustring.find( title, &amp;quot;%]&amp;quot;, 1 )&lt;br /&gt;
			if postfixDelimeterPosition then&lt;br /&gt;
				postfix = mw.ustring.sub( title, postfixDelimeterPosition + 1 )&lt;br /&gt;
				title = mw.ustring.sub( title, 1, postfixDelimeterPosition - 1 )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		source = mw.ustring.sub( source, 1, titleDelimeterPosition - 1 )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local hostStartPosition&lt;br /&gt;
	local schemeDelimeterPosition = mw.ustring.find( source, &amp;quot;://&amp;quot;, 1, true )&lt;br /&gt;
	if schemeDelimeterPosition then&lt;br /&gt;
		scheme = mw.ustring.sub( source, 1, schemeDelimeterPosition + 2)&lt;br /&gt;
		hostStartPosition = schemeDelimeterPosition + 3&lt;br /&gt;
	elseif mw.ustring.find( source, &amp;quot;^//&amp;quot;, 1 ) then&lt;br /&gt;
		scheme = &amp;quot;//&amp;quot;&lt;br /&gt;
		hostStartPosition = 3&lt;br /&gt;
	elseif mw.ustring.find( source, &amp;quot;^mailto:&amp;quot;, 1 ) then&lt;br /&gt;
		scheme = &amp;quot;mailto:&amp;quot;&lt;br /&gt;
		hostStartPosition = 8&lt;br /&gt;
	elseif mw.ustring.find( source, &amp;quot;@&amp;quot;, 1 ) then&lt;br /&gt;
		scheme = &amp;quot;mailto:&amp;quot;&lt;br /&gt;
		source = scheme .. source&lt;br /&gt;
		hostStartPosition = 8&lt;br /&gt;
	else&lt;br /&gt;
		scheme = &amp;quot;http://&amp;quot;&lt;br /&gt;
		source = scheme .. source&lt;br /&gt;
		hostStartPosition = 8&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if title then&lt;br /&gt;
		local finds = mw.ustring.find( arg1, &amp;quot;[&amp;quot;, 1, true )&lt;br /&gt;
		if titleDelimeterPosition and finds and finds &amp;gt; titleDelimeterPosition + 1 then&lt;br /&gt;
			-- Если titleDelimeterPosition промазал мимо скобки и нашел пробел раньше неё, к примеру &amp;quot;a [b  c]&amp;quot;,&lt;br /&gt;
			-- то свернуть всю нашу хиромантию и выдать первый аргумент без изменений.&lt;br /&gt;
			if arg2 == nil then&lt;br /&gt;
				return arg1 .. (isTestPage and &amp;#039;&amp;#039; or &amp;#039;[[Категория:Википедия:Статьи со сложным входом в Модуль:URL]]&amp;#039;)&lt;br /&gt;
			-- Если есть arg2, а мы распарсить ссылку не смогли, и значит заменить title не сможем корректно, это есть ошибка.&lt;br /&gt;
			-- С другой стороны, если arg2 нет, а arg1 очень сложный, то возможно это нормальный ход вещей,&lt;br /&gt;
			-- и на вход в модуль дана уже очень сильно оформленная ссылка.&lt;br /&gt;
			else&lt;br /&gt;
				return arg1 .. (isTestPage and &amp;#039;&amp;#039; or &amp;#039;[[Категория:Википедия:Статьи с ошибочной работой Модуль:URL]]&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;#039;[&amp;#039; .. source .. &amp;#039; &amp;#039; .. title .. &amp;#039;]&amp;#039; .. postfix&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local hostDelimeterPosition = mw.ustring.find( source, &amp;quot;/&amp;quot;, hostStartPosition, true )&lt;br /&gt;
	if hostDelimeterPosition then&lt;br /&gt;
		host = mw.ustring.sub( source, hostStartPosition, hostDelimeterPosition - 1 )&lt;br /&gt;
		if hostDelimeterPosition == mw.ustring.len( source ) then&lt;br /&gt;
			path = nil&lt;br /&gt;
		else&lt;br /&gt;
			path = mw.ustring.sub( source, hostDelimeterPosition + 1 )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		host = mw.ustring.sub( source, hostStartPosition )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- post-split format options&lt;br /&gt;
	if startsWith( host, &amp;#039;www.&amp;#039; ) then&lt;br /&gt;
		host = mw.ustring.sub( host, 5 )&lt;br /&gt;
	end&lt;br /&gt;
	host = mw.language.new( &amp;#039;en&amp;#039; ):lc( host )&lt;br /&gt;
&lt;br /&gt;
	if path and path ~= &amp;#039;&amp;#039; and path ~= &amp;#039;/&amp;#039; then&lt;br /&gt;
		local title = host .. &amp;#039;/&amp;#039; .. path&lt;br /&gt;
		if length and #title &amp;gt; length then&lt;br /&gt;
			title = host .. &amp;#039;/&amp;#039; .. mw.ustring.sub( path, 1, length - #title - 2 ) .. &amp;#039;…&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;#039;[&amp;#039; .. source .. &amp;#039; &amp;#039; .. title .. &amp;#039;]&amp;#039; .. postfix&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;[&amp;#039; .. source .. &amp;#039; &amp;#039; .. host .. &amp;#039;]&amp;#039; .. postfix&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatUrl( frame )&lt;br /&gt;
	local url = frame.args[1] or &amp;#039;&amp;#039;&lt;br /&gt;
	local title = frame.args[2] or &amp;#039;&amp;#039;&lt;br /&gt;
	local length = frame.args[&amp;#039;length&amp;#039;] and tonumber( frame.args[&amp;#039;length&amp;#039;] )&lt;br /&gt;
&lt;br /&gt;
	url = mw.text.trim( url )&lt;br /&gt;
	title = mw.text.trim( title )&lt;br /&gt;
&lt;br /&gt;
	if url == &amp;#039;&amp;#039; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if title == &amp;#039;&amp;#039; then&lt;br /&gt;
		title = nil&lt;br /&gt;
	end&lt;br /&gt;
	return formatUrlImpl( url, title, length )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatUrlSingle( context, options, url )&lt;br /&gt;
	url = mw.text.trim( url )&lt;br /&gt;
	if url == &amp;#039;&amp;#039; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local title = nil&lt;br /&gt;
	if ( options[&amp;#039;text&amp;#039;] and options[&amp;#039;text&amp;#039;] ~= &amp;#039;&amp;#039; ) then&lt;br /&gt;
		title = options[&amp;#039;text&amp;#039;]&lt;br /&gt;
	end&lt;br /&gt;
	local length = options[&amp;#039;length&amp;#039;] and tonumber( options[&amp;#039;length&amp;#039;] )&lt;br /&gt;
&lt;br /&gt;
	return formatUrlImpl( url, title, length )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>[[en:Infobox software]]&gt;Jack who built the house</name></author>
	</entry>
</feed>