<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://w.hil.su/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AInventory_slot</id>
		<title>Модуль:Inventory slot - История изменений</title>
		<link rel="self" type="application/atom+xml" href="https://w.hil.su/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AInventory_slot"/>
		<link rel="alternate" type="text/html" href="https://w.hil.su/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Inventory_slot&amp;action=history"/>
		<updated>2026-04-16T15:47:07Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.27.1</generator>

	<entry>
		<id>https://w.hil.su/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Inventory_slot&amp;diff=1810&amp;oldid=prev</id>
		<title>MailGik: Новая страница: «local p = {}  -- List of special prefixes which should be handled by -- other modules (such as being moved outside links) p.prefixes = { 	&#039;Any&#039;, 	&#039;Matching&#039;, 	&#039;Da…»</title>
		<link rel="alternate" type="text/html" href="https://w.hil.su/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Inventory_slot&amp;diff=1810&amp;oldid=prev"/>
				<updated>2016-08-15T09:16:08Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «local p = {}  -- List of special prefixes which should be handled by -- other modules (such as being moved outside links) p.prefixes = { 	&amp;#039;Any&amp;#039;, 	&amp;#039;Matching&amp;#039;, 	&amp;#039;Da…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- List of special prefixes which should be handled by&lt;br /&gt;
-- other modules (such as being moved outside links)&lt;br /&gt;
p.prefixes = {&lt;br /&gt;
	&amp;#039;Any&amp;#039;,&lt;br /&gt;
	&amp;#039;Matching&amp;#039;,&lt;br /&gt;
	&amp;#039;Damaged&amp;#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.slot( f )&lt;br /&gt;
	local args = f.args or f&lt;br /&gt;
	if f == mw.getCurrentFrame() and args[1] == nil then&lt;br /&gt;
		args = f:getParent().args&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	args[1] = mw.text.trim( args[1] or &amp;#039;&amp;#039; )&lt;br /&gt;
	&lt;br /&gt;
	-- Comment this next line out if you&amp;#039;re not using aliases&lt;br /&gt;
	local aliases = mw.loadData( &amp;#039;Module:Inventory slot/Aliases&amp;#039; )&lt;br /&gt;
	&lt;br /&gt;
	local modAliases = args.modaliases or &amp;#039;&amp;#039;&lt;br /&gt;
	if modAliases ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		modAliases = mw.loadData( &amp;#039;Module:&amp;#039; .. modAliases )&lt;br /&gt;
	else&lt;br /&gt;
		modAliases = nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if aliases or modAliases then&lt;br /&gt;
		local frames = {}&lt;br /&gt;
		for frame in mw.text.gsplit( args[1], &amp;#039;%s*;%s*&amp;#039; ) do&lt;br /&gt;
			local frameParts = p.getParts( frame, args.mod )&lt;br /&gt;
			&lt;br /&gt;
			local id = frameParts.name&lt;br /&gt;
			if frameParts.mod then&lt;br /&gt;
				id = frameParts.mod .. &amp;#039;:&amp;#039; .. id&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local alias&lt;br /&gt;
			if modAliases and modAliases[id] then&lt;br /&gt;
				alias = modAliases[id]&lt;br /&gt;
			elseif aliases and aliases[id] then&lt;br /&gt;
				alias = aliases[id]&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if alias then&lt;br /&gt;
				table.insert( frames, p.expandAlias( frameParts, alias ) )&lt;br /&gt;
			else&lt;br /&gt;
				table.insert( frames, frame )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		args[1] = table.concat( frames, &amp;#039;;&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local sprite&lt;br /&gt;
	local ids = mw.loadData( [[Module:InvSprite/IDs]] ).ids&lt;br /&gt;
	local modIds = {}&lt;br /&gt;
	local animated = args[1]:find( &amp;#039;;&amp;#039; )&lt;br /&gt;
	local pageName = mw.title.getCurrentTitle().text&lt;br /&gt;
	local imgClass = args.imgclass&lt;br /&gt;
	local numStyle = args.numstyle&lt;br /&gt;
	local body = mw.html.create( &amp;#039;span&amp;#039; ):addClass( &amp;#039;invslot&amp;#039; ):css{ [&amp;#039;vertical-align&amp;#039;] = args.align }&lt;br /&gt;
	if animated then&lt;br /&gt;
		body:addClass( &amp;#039;animated&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if args.class then&lt;br /&gt;
		body:addClass( args.class )&lt;br /&gt;
	end&lt;br /&gt;
	if args.style then&lt;br /&gt;
		body:cssText( args.style )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if ( args.default or &amp;#039;&amp;#039; ) ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		body:css( &amp;#039;background-image&amp;#039;, &amp;#039;{{FileUrl|&amp;#039; .. args.default .. &amp;#039;.png}}&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local first = true&lt;br /&gt;
	for frame in mw.text.gsplit( args[1], &amp;#039;%s*;%s*&amp;#039; ) do&lt;br /&gt;
		local item&lt;br /&gt;
		if frame ~= &amp;#039;&amp;#039; or frame == &amp;#039;&amp;#039; and animated then&lt;br /&gt;
			item = body:tag( &amp;#039;span&amp;#039; ):addClass( &amp;#039;invslot-item&amp;#039; )&lt;br /&gt;
			if imgClass then&lt;br /&gt;
				item:addClass( imgClass )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if frame == &amp;#039;&amp;#039; then&lt;br /&gt;
			( item or body ):tag( &amp;#039;br&amp;#039; )&lt;br /&gt;
		else&lt;br /&gt;
			local category&lt;br /&gt;
			local parts = p.getParts( frame, args.mod )&lt;br /&gt;
			local title = parts.title or mw.text.trim( args.title or &amp;#039;&amp;#039; )&lt;br /&gt;
			local mod = parts.mod&lt;br /&gt;
			local name = parts.name&lt;br /&gt;
			local num = parts.num&lt;br /&gt;
			local description = parts.text&lt;br /&gt;
			&lt;br /&gt;
			local img, idData&lt;br /&gt;
			if mod then&lt;br /&gt;
				local modData = modIds[mod]&lt;br /&gt;
				if not modData and mw.title.new( &amp;#039;Module:InvSprite/Mods/&amp;#039; .. mod .. &amp;#039;/IDs&amp;#039; ).exists then&lt;br /&gt;
					modData = mw.loadData( &amp;#039;Module:InvSprite/Mods/&amp;#039; .. mod .. &amp;#039;/IDs&amp;#039; )&lt;br /&gt;
					modIds[mod] = modData&lt;br /&gt;
				end&lt;br /&gt;
				if modData and modData[name] then&lt;br /&gt;
					idData = modData[name]&lt;br /&gt;
				else&lt;br /&gt;
					img = name .. &amp;#039; (&amp;#039; .. mod .. &amp;#039;)&amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
			elseif ids[name] then&lt;br /&gt;
				idData = ids[name]&lt;br /&gt;
			else&lt;br /&gt;
				img = name&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local link = args.link or &amp;#039;&amp;#039;&lt;br /&gt;
			if link == &amp;#039;&amp;#039; then&lt;br /&gt;
				if mod then&lt;br /&gt;
					link = &amp;#039;Mods/&amp;#039; .. mod .. &amp;#039;/&amp;#039; .. name&lt;br /&gt;
				else&lt;br /&gt;
					link = name:gsub( &amp;#039;^Damaged &amp;#039;, &amp;#039;&amp;#039; )&lt;br /&gt;
				end&lt;br /&gt;
			elseif link:lower() == &amp;#039;none&amp;#039; then&lt;br /&gt;
				link = nil&lt;br /&gt;
			end&lt;br /&gt;
			if link == pageName then&lt;br /&gt;
				link = nil&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local formattedTitle&lt;br /&gt;
			local plainTitle&lt;br /&gt;
			if title == &amp;#039;&amp;#039; then&lt;br /&gt;
				plainTitle = name&lt;br /&gt;
			elseif title:lower() ~= &amp;#039;none&amp;#039; then&lt;br /&gt;
				plainTitle = title:gsub( &amp;#039;\\\\&amp;#039;, &amp;#039;&amp;amp;#92;&amp;#039; ):gsub( &amp;#039;\\&amp;amp;&amp;#039;, &amp;#039;&amp;amp;#38;&amp;#039; )&lt;br /&gt;
				&lt;br /&gt;
				local formatPattern = &amp;#039;&amp;amp;[0-9a-fk-or]&amp;#039;&lt;br /&gt;
				if plainTitle:match( formatPattern ) then&lt;br /&gt;
					formattedTitle = title&lt;br /&gt;
					plainTitle = plainTitle:gsub( formatPattern, &amp;#039;&amp;#039; )&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if plainTitle == &amp;#039;&amp;#039; then&lt;br /&gt;
					plainTitle = name&lt;br /&gt;
				else&lt;br /&gt;
					plainTitle = plainTitle:gsub( &amp;#039;&amp;amp;#92;&amp;#039;, &amp;#039;\\&amp;#039; ):gsub( &amp;#039;&amp;amp;#38;&amp;#039;, &amp;#039;&amp;amp;&amp;#039; )&lt;br /&gt;
				end&lt;br /&gt;
			elseif link then&lt;br /&gt;
				if img then&lt;br /&gt;
					formattedTitle = &amp;#039;&amp;#039;&lt;br /&gt;
				else&lt;br /&gt;
					plainTitle = &amp;#039;&amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			item:attr{&lt;br /&gt;
				[&amp;#039;data-minetip-title&amp;#039;] = formattedTitle,&lt;br /&gt;
				[&amp;#039;data-minetip-text&amp;#039;] = description&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			if img then&lt;br /&gt;
				-- &amp;amp; is re-escaped because mw.html treats attributes&lt;br /&gt;
				-- as plain text, but MediaWiki doesn&amp;#039;t&lt;br /&gt;
				local escapedTitle = ( plainTitle or &amp;#039;&amp;#039; ):gsub( &amp;#039;&amp;amp;&amp;#039;, &amp;#039;&amp;amp;#38;&amp;#039; )&lt;br /&gt;
				item:addClass( &amp;#039;invslot-item-image&amp;#039; )&lt;br /&gt;
					:wikitext( &amp;#039;[[File:Grid &amp;#039;, img, &amp;#039;.png|32x32px|link=&amp;#039;, link or &amp;#039;&amp;#039;, &amp;#039;|&amp;#039;, escapedTitle, &amp;#039;]]&amp;#039; )&lt;br /&gt;
			else&lt;br /&gt;
				if not sprite then&lt;br /&gt;
					sprite = require( [[Module:Sprite]] ).sprite&lt;br /&gt;
				end&lt;br /&gt;
				local image&lt;br /&gt;
				if mod then&lt;br /&gt;
					image = args.spritesheet or mod .. &amp;#039;Sprite.png&amp;#039;&lt;br /&gt;
				end&lt;br /&gt;
				if link then&lt;br /&gt;
					item:wikitext( &amp;#039;[[&amp;#039;, link, &amp;#039;|&amp;#039; )&lt;br /&gt;
				end&lt;br /&gt;
				local image, spriteCat = sprite{&lt;br /&gt;
					iddata = idData, title = plainTitle,&lt;br /&gt;
					image = image, settings = &amp;#039;InvSprite&amp;#039;&lt;br /&gt;
				}&lt;br /&gt;
				item:node( image )&lt;br /&gt;
				category = spriteCat&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if num and num &amp;gt; 1 and num &amp;lt; 1000 then&lt;br /&gt;
				if img and link then&lt;br /&gt;
					item:wikitext( &amp;#039;[[&amp;#039;, link, &amp;#039;|&amp;#039; )&lt;br /&gt;
				end&lt;br /&gt;
				local number = item&lt;br /&gt;
					:tag( &amp;#039;span&amp;#039; )&lt;br /&gt;
						:addClass( &amp;#039;invslot-stacksize&amp;#039; )&lt;br /&gt;
						:attr{ title = plainTitle }&lt;br /&gt;
						:wikitext( num )&lt;br /&gt;
				if numStyle then&lt;br /&gt;
					number:cssText( numStyle )&lt;br /&gt;
				end&lt;br /&gt;
				if img and link then&lt;br /&gt;
					item:wikitext( &amp;#039;]]&amp;#039; )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if idData and link then&lt;br /&gt;
				item:wikitext( &amp;#039;]]&amp;#039; )&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			item:wikitext( category )&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if first then&lt;br /&gt;
			if animated and item then&lt;br /&gt;
				item:addClass( &amp;#039;active&amp;#039; )&lt;br /&gt;
			end&lt;br /&gt;
			first = false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return tostring( body )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.expandAlias( frameParts, alias )&lt;br /&gt;
	-- If the frame has no parts, we can just return the alias as-is&lt;br /&gt;
	if not frameParts.title and not frameParts.mod and not frameParts.num and not frameParts.text then&lt;br /&gt;
		return alias&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local expandedFrames = {}&lt;br /&gt;
	for aliasFrame in mw.text.gsplit( alias, &amp;#039;%s*;%s*&amp;#039; ) do&lt;br /&gt;
		local aliasParts = p.getParts( aliasFrame )&lt;br /&gt;
		aliasParts.title = frameParts.title or aliasParts.title or &amp;#039;&amp;#039;&lt;br /&gt;
		aliasParts.mod = frameParts.mod or aliasParts.mod or &amp;#039;Minecraft&amp;#039;&lt;br /&gt;
		aliasParts.num = frameParts.num or aliasParts.num or &amp;#039;&amp;#039;&lt;br /&gt;
		aliasParts.text = frameParts.text or aliasParts.text or &amp;#039;&amp;#039;&lt;br /&gt;
		&lt;br /&gt;
		table.insert( expandedFrames, string.format(&lt;br /&gt;
			&amp;#039;[%s]%s:%s,%s[%s]&amp;#039;,&lt;br /&gt;
			aliasParts.title, aliasParts.mod, aliasParts.name, aliasParts.num, aliasParts.text&lt;br /&gt;
		) )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat( expandedFrames, &amp;#039;;&amp;#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getParts( frame, mod )&lt;br /&gt;
	local parts = {}&lt;br /&gt;
	parts.title = frame:match( &amp;#039;^%[%s*([^%]]+)%s*%]&amp;#039; )&lt;br /&gt;
	&lt;br /&gt;
	parts.mod = mw.text.trim( frame:match( &amp;#039;([^:%]]+):&amp;#039; ) or mod or &amp;#039;&amp;#039; )&lt;br /&gt;
	&lt;br /&gt;
	local vanilla = { v = 1, vanilla = 1, mc = 1, minecraft = 1 }&lt;br /&gt;
	if parts.mod == &amp;#039;&amp;#039; or vanilla[mw.ustring.lower( parts.mod )] then&lt;br /&gt;
		parts.mod = nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local nameStart = ( frame:find( &amp;#039;:&amp;#039; ) or frame:find( &amp;#039;%]&amp;#039; ) or 0 ) + 1&lt;br /&gt;
	if nameStart - 1 == #frame then&lt;br /&gt;
		nameStart = 1&lt;br /&gt;
	end&lt;br /&gt;
	parts.name = mw.text.trim( frame:sub( nameStart, ( frame:find( &amp;#039;[,%[]&amp;#039;, nameStart ) or 0 ) - 1 ) )&lt;br /&gt;
	&lt;br /&gt;
	parts.num = math.floor( frame:match( &amp;#039;,%s*(%d+)&amp;#039; ) or 0 )&lt;br /&gt;
	if parts.num == 0 then&lt;br /&gt;
		parts.num = nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	parts.text = frame:match( &amp;#039;%[%s*([^%]]+)%s*%]$&amp;#039; )&lt;br /&gt;
	&lt;br /&gt;
	return parts&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>MailGik</name></author>	</entry>

	</feed>