<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://bard-wiki.net/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3A%D0%92%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA</id>
	<title>Модуль:Вложенный список - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://bard-wiki.net/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3A%D0%92%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA"/>
	<link rel="alternate" type="text/html" href="https://bard-wiki.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%92%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA&amp;action=history"/>
	<updated>2026-10-09T11:06:05Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://bard-wiki.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%92%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA&amp;diff=5250&amp;oldid=prev</id>
		<title>Admin: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="https://bard-wiki.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%92%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA&amp;diff=5250&amp;oldid=prev"/>
		<updated>2023-06-21T15:31:17Z</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;Версия от 18:31, 21 июня 2023&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://bard-wiki.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%92%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA&amp;diff=5249&amp;oldid=prev</id>
		<title>ru&gt;Stjn: + require( &#039;strict&#039; )</title>
		<link rel="alternate" type="text/html" href="https://bard-wiki.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:%D0%92%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA&amp;diff=5249&amp;oldid=prev"/>
		<updated>2023-05-28T01:05:06Z</updated>

		<summary type="html">&lt;p&gt;+ require( &amp;#039;strict&amp;#039; )&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;
--&lt;br /&gt;
-- Implements {{Вложенный список}} in one module&lt;br /&gt;
-- Allows us to potentially move towards a more accessible markup for the template when the time is right&lt;br /&gt;
-- Previously, the template broke the lists {{Вложенный список}} or {{NL2}} or {{NL3}} are in&lt;br /&gt;
-- Heavily borrows from https://en.wikipedia.org/wiki/Module:Excerpt_slideshow&lt;br /&gt;
--&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
local errorCat = &amp;#039;Википедия:Страницы с ошибками шаблона Вложенный список&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local noTitle = &amp;#039;Нет названия страницы.&amp;#039;&lt;br /&gt;
local noContent = &amp;#039;Ошибка при включении страницы «[[%s]]».&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	@param {String} wikitext: Wikitext of just the list (i.e. each line is a list item)&lt;br /&gt;
	@param {String} symbol:   Special character used in the wikitext markup for the list, e.g. &amp;#039;*&amp;#039; or &amp;#039;#&amp;#039;&lt;br /&gt;
	@param {String} outerTag: Text portion of the tag for each list or sublist, e.g. &amp;#039;ul&amp;#039; or &amp;#039;ol&amp;#039;&lt;br /&gt;
	@param {String} innerTag: Text portion of the tag for each list item, e.g. &amp;#039;li&amp;#039;&lt;br /&gt;
]]&lt;br /&gt;
local wikitextToHtmlList = function( wikitext, symbol, outerTag, innerTag )&lt;br /&gt;
	local listParts = {}&lt;br /&gt;
	for level, item in mw.ustring.gmatch( &amp;#039;\n&amp;#039; .. wikitext .. &amp;#039;\n&amp;#039;, &amp;#039;\n(%&amp;#039; .. symbol .. &amp;#039;+)(.-)%f[\n]&amp;#039; ) do&lt;br /&gt;
	    table.insert( listParts, { level=level, item=item } )&lt;br /&gt;
	end&lt;br /&gt;
	table.insert( listParts, { level=&amp;#039;&amp;#039;, item=&amp;#039;&amp;#039; } )&lt;br /&gt;
	&lt;br /&gt;
	local htmlList = {}&lt;br /&gt;
	for i, this in ipairs( listParts ) do&lt;br /&gt;
		local isFirstItem = ( i == 1 )&lt;br /&gt;
		local isLastItem = ( i == #listParts )&lt;br /&gt;
	    local lastLevel = isFirstItem and &amp;#039;&amp;#039; or listParts[ i - 1 ][ &amp;#039;level&amp;#039; ]&lt;br /&gt;
	    local tags&lt;br /&gt;
	    if #lastLevel == #this.level then&lt;br /&gt;
	    	tags = &amp;#039;&amp;lt;/&amp;#039;..innerTag..&amp;#039;&amp;gt;&amp;lt;&amp;#039;..innerTag..&amp;#039;&amp;gt;&amp;#039;&lt;br /&gt;
	    elseif #this.level &amp;gt; #lastLevel then&lt;br /&gt;
	    	tags = string.rep( &amp;#039;&amp;lt;&amp;#039;..outerTag..&amp;#039;&amp;gt;&amp;lt;&amp;#039;..innerTag..&amp;#039;&amp;gt;&amp;#039;, #this.level - #lastLevel )&lt;br /&gt;
	    elseif isLastItem then&lt;br /&gt;
	    	tags = string.rep( &amp;#039;&amp;lt;/&amp;#039;..innerTag..&amp;#039;&amp;gt;&amp;lt;/&amp;#039;..outerTag..&amp;#039;&amp;gt;&amp;#039;, #lastLevel )&lt;br /&gt;
	    else -- ( #this.level &amp;lt; #lastLevel ) and not last item&lt;br /&gt;
	    	tags = string.rep( &amp;#039;&amp;lt;/&amp;#039;..innerTag..&amp;#039;&amp;gt;&amp;lt;/&amp;#039;..outerTag..&amp;#039;&amp;gt;&amp;#039;, #lastLevel - #this.level ) .. &amp;#039;&amp;lt;/&amp;#039;..innerTag..&amp;#039;&amp;gt;&amp;lt;&amp;#039;..innerTag..&amp;#039;&amp;gt;&amp;#039;&lt;br /&gt;
	    end&lt;br /&gt;
	    table.insert( htmlList, tags .. this.item )&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat( htmlList )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	@param {String} wikitext: Wikitext excertp containg zero or more lists&lt;br /&gt;
	@param {String} symbol:   Special character used in the wikitext markup for the list, e.g. &amp;#039;*&amp;#039; or &amp;#039;#&amp;#039;&lt;br /&gt;
	@param {String} outerTag: Text portion of the tag for each list or sublist, e.g. &amp;#039;ul&amp;#039; or &amp;#039;ol&amp;#039;&lt;br /&gt;
	@param {String} innerTag: Text portion of the tag for each list item, e.g. &amp;#039;li&amp;#039;&lt;br /&gt;
]]&lt;br /&gt;
local gsubWikitextLists = function( wikitext, symbol, outerTag, innerTag )&lt;br /&gt;
	-- temporarily remove list linebreaks... &lt;br /&gt;
	wikitext = mw.ustring.gsub( wikitext .. &amp;#039;\n&amp;#039;, &amp;#039;\n%&amp;#039; .. symbol, &amp;#039;¿¿¿&amp;#039; .. symbol )&lt;br /&gt;
	-- ...so we can grab the whole list (and just the list)...&lt;br /&gt;
	return mw.ustring.gsub(&lt;br /&gt;
		wikitext,&lt;br /&gt;
		&amp;#039;¿¿¿%&amp;#039;..symbol..&amp;#039;[^\n]+&amp;#039;, &lt;br /&gt;
		function( listWikitext )&lt;br /&gt;
			-- ...and then reinstate linebreaks...&lt;br /&gt;
			listWikitext = mw.ustring.gsub( listWikitext, &amp;#039;¿¿¿%&amp;#039; .. symbol, &amp;#039;\n&amp;#039; .. symbol )&lt;br /&gt;
			-- ...and finally do the conversion&lt;br /&gt;
			return wikitextToHtmlList( listWikitext, symbol, outerTag, innerTag )&lt;br /&gt;
		end&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main( frame )&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local title = args[ 1 ]&lt;br /&gt;
	local displayedTitle = args[ 2 ] and &amp;#039;|&amp;#039; .. args[ 2 ] or &amp;#039;&amp;#039;&lt;br /&gt;
	local appendedText = args[ 3 ] and &amp;#039; &amp;#039; .. args[ 3 ] or &amp;#039;&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	if title == nil or title == &amp;#039;&amp;#039; then&lt;br /&gt;
		return &amp;#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;&amp;#039; .. noTitle .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local intro = string.format( &amp;#039;&amp;lt;span class=&amp;quot;dabhide&amp;quot;&amp;gt;[[%s%s]]&amp;lt;/span&amp;gt;%s:&amp;#039;, title, displayedTitle, appendedText)&lt;br /&gt;
	-- frame:expandTemplate is used because mw.title:getContent() does not handle redirects&lt;br /&gt;
	local sublistExists, sublist = pcall(function ()&lt;br /&gt;
		return frame:expandTemplate{ title = &amp;#039;:&amp;#039; .. title }&lt;br /&gt;
	end)&lt;br /&gt;
	&lt;br /&gt;
	-- The page does not exist or returns empty&lt;br /&gt;
	if sublistExists ~= true or mw.text.trim( sublist ) == &amp;#039;&amp;#039; then&lt;br /&gt;
		return intro .. &amp;#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;&amp;#039; .. string.format( noContent, title ) .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
			.. string.format( &amp;#039;[[Category:%s]]&amp;#039;, errorCat )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Replace list markers with HTML list openers&lt;br /&gt;
	sublist = gsubWikitextLists( &amp;#039;\n&amp;#039; .. sublist, &amp;#039;*&amp;#039;, &amp;#039;ul&amp;#039;, &amp;#039;li&amp;#039; )&lt;br /&gt;
	&lt;br /&gt;
	-- Replace all line breaks to avoid breaking the list&lt;br /&gt;
	sublist = mw.ustring.gsub( mw.text.trim(sublist), &amp;#039;\n\n&amp;#039;, &amp;#039;&amp;lt;p&amp;gt;&amp;#039; )&lt;br /&gt;
	sublist = mw.ustring.gsub( mw.text.trim(sublist), &amp;#039;\n&amp;#039;, &amp;#039;&amp;lt;br&amp;gt;&amp;#039; )&lt;br /&gt;
	&lt;br /&gt;
	return intro .. sublist&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>ru&gt;Stjn</name></author>
	</entry>
</feed>