<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://ac-wiki.cn/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3ALuaInfobox</id>
	<title>模块:LuaInfobox - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://ac-wiki.cn/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3ALuaInfobox"/>
	<link rel="alternate" type="text/html" href="https://ac-wiki.cn/index.php?title=%E6%A8%A1%E5%9D%97:LuaInfobox&amp;action=history"/>
	<updated>2026-08-24T06:30:43Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://ac-wiki.cn/index.php?title=%E6%A8%A1%E5%9D%97:LuaInfobox&amp;diff=560&amp;oldid=prev</id>
		<title>天明：​创建页面，内容为“-- Simple infobox Lua module whose interface is inspired by https://mzh.moegirl.org.cn/Template:Infobox3 -- The code is independently written.  local p = {};  local getArgs = require(&#039;Module:Arguments&#039;).getArgs;  local ACandy = require(&#039;Module:ACandy&#039;); local a = ACandy.a; local raw = ACandy.Raw;  function makeInfoboxImage(args) 	local filename = args[&#039;image&#039;] or &quot;&quot;; 	if filename == &quot;&quot; then 		return &quot;&quot;; 	end 	 	local caption = args[&#039;caption&#039;]; 	 	return a.tr {…”</title>
		<link rel="alternate" type="text/html" href="https://ac-wiki.cn/index.php?title=%E6%A8%A1%E5%9D%97:LuaInfobox&amp;diff=560&amp;oldid=prev"/>
		<updated>2025-12-24T11:13:07Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“-- Simple infobox Lua module whose interface is inspired by https://mzh.moegirl.org.cn/Template:Infobox3 -- The code is independently written.  local p = {};  local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs;  local ACandy = require(&amp;#039;Module:ACandy&amp;#039;); local a = ACandy.a; local raw = ACandy.Raw;  function makeInfoboxImage(args) 	local filename = args[&amp;#039;image&amp;#039;] or &amp;quot;&amp;quot;; 	if filename == &amp;quot;&amp;quot; then 		return &amp;quot;&amp;quot;; 	end 	 	local caption = args[&amp;#039;caption&amp;#039;]; 	 	return a.tr {…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Simple infobox Lua module whose interface is inspired by https://mzh.moegirl.org.cn/Template:Infobox3&lt;br /&gt;
-- The code is independently written.&lt;br /&gt;
&lt;br /&gt;
local p = {};&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs;&lt;br /&gt;
&lt;br /&gt;
local ACandy = require(&amp;#039;Module:ACandy&amp;#039;);&lt;br /&gt;
local a = ACandy.a;&lt;br /&gt;
local raw = ACandy.Raw;&lt;br /&gt;
&lt;br /&gt;
function makeInfoboxImage(args)&lt;br /&gt;
	local filename = args[&amp;#039;image&amp;#039;] or &amp;quot;&amp;quot;;&lt;br /&gt;
	if filename == &amp;quot;&amp;quot; then&lt;br /&gt;
		return &amp;quot;&amp;quot;;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local caption = args[&amp;#039;caption&amp;#039;];&lt;br /&gt;
	&lt;br /&gt;
	return a.tr {&lt;br /&gt;
		a.td {&lt;br /&gt;
			class = &amp;quot;infobox-image-container&amp;quot;,&lt;br /&gt;
			colspan = 2,&lt;br /&gt;
			a.div {&lt;br /&gt;
				class = &amp;quot;infobox-image&amp;quot;,&lt;br /&gt;
				string.format(&amp;quot;[[File:%s|%s]]&amp;quot;, filename, args[&amp;#039;image-size&amp;#039;] or &amp;quot;180px&amp;quot;)&lt;br /&gt;
			},&lt;br /&gt;
			caption and a.div {&lt;br /&gt;
				class = &amp;quot;infobox-image-caption&amp;quot;,&lt;br /&gt;
				colspan = 2,&lt;br /&gt;
				raw(caption)&lt;br /&gt;
			} or &amp;quot;&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function trim(s)&lt;br /&gt;
	if s == nil then&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
	return s:match( &amp;quot;^%s*(.-)%s*$&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function makeInfoboxContent(args)&lt;br /&gt;
	local result = a.div {&lt;br /&gt;
		class = &amp;quot;infobox-content&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local tabGroup = &amp;quot;infobox&amp;quot; .. tostring(#args);&lt;br /&gt;
	local currentTab = nil;&lt;br /&gt;
	&lt;br /&gt;
	for _, arg in ipairs(args) do&lt;br /&gt;
		local i, _ = string.find(arg, &amp;quot;::&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		local key, value;&lt;br /&gt;
		if i then&lt;br /&gt;
		    key = string.sub(arg, 1, i - 1);&lt;br /&gt;
		    value = string.sub(arg, i + 2);&lt;br /&gt;
		else&lt;br /&gt;
		    key = nil&lt;br /&gt;
		    value = arg&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Do not perform html escaping on value so that the user can&lt;br /&gt;
		-- supply arbitrary html if needed&lt;br /&gt;
		key = trim(key);&lt;br /&gt;
		value = trim(value);&lt;br /&gt;
		if value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			value = raw(value);&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local row = nil;&lt;br /&gt;
		&lt;br /&gt;
		if key == &amp;quot;-header&amp;quot; then&lt;br /&gt;
			row = a.tr {&lt;br /&gt;
				class = &amp;quot;infobox-header&amp;quot;,&lt;br /&gt;
				style = args[&amp;#039;header-style&amp;#039;] or &amp;quot;&amp;quot;,&lt;br /&gt;
				a.td {&lt;br /&gt;
					class = &amp;quot;infobox-header-data&amp;quot;,&lt;br /&gt;
					colspan = 2,&lt;br /&gt;
					value&lt;br /&gt;
				}&lt;br /&gt;
			};&lt;br /&gt;
		elseif key == &amp;quot;-tabs&amp;quot; then&lt;br /&gt;
			local tab_names = mw.text.split(tostring(value), &amp;quot;::&amp;quot;, true);&lt;br /&gt;
			local buttons = {};&lt;br /&gt;
			for index, tab_name in ipairs(tab_names) do&lt;br /&gt;
				table.insert(buttons, a.div {&lt;br /&gt;
					class = &amp;quot;tab-button&amp;quot; .. (index == 1 and &amp;quot; tab-button-selected&amp;quot; or &amp;quot;&amp;quot;),&lt;br /&gt;
					[&amp;quot;data-option&amp;quot;] = index,&lt;br /&gt;
					tab_name&lt;br /&gt;
				});&lt;br /&gt;
			end&lt;br /&gt;
			row = a.tr {&lt;br /&gt;
				class = &amp;quot;infobox-tabs&amp;quot;,&lt;br /&gt;
				a.td {&lt;br /&gt;
					class = &amp;quot;tab-button-container&amp;quot;,&lt;br /&gt;
					colspan = 2,&lt;br /&gt;
					[&amp;quot;data-group&amp;quot;] = tabGroup,&lt;br /&gt;
					buttons&lt;br /&gt;
				}&lt;br /&gt;
			};&lt;br /&gt;
		elseif key == &amp;quot;-tab-start&amp;quot; then&lt;br /&gt;
			currentTab = tostring(value);&lt;br /&gt;
		elseif key == &amp;quot;-tab-end&amp;quot; then&lt;br /&gt;
			currentTab = nil;&lt;br /&gt;
		elseif key ~= nil and key ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			row = a.tr {&lt;br /&gt;
				a.td {&lt;br /&gt;
					class = &amp;quot;infobox-label&amp;quot;,&lt;br /&gt;
					style = args[&amp;#039;label-style&amp;#039;] or &amp;quot;&amp;quot;,&lt;br /&gt;
					raw(key)&lt;br /&gt;
				},&lt;br /&gt;
				a.td {&lt;br /&gt;
					class = &amp;quot;infobox-data&amp;quot;,&lt;br /&gt;
					style = args[&amp;#039;data-style&amp;#039;] or &amp;quot;&amp;quot;,&lt;br /&gt;
					value&lt;br /&gt;
				}&lt;br /&gt;
			};&lt;br /&gt;
		elseif key == &amp;quot;&amp;quot; and value ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			-- Originally &amp;quot; :: value&amp;quot;&lt;br /&gt;
			row = a.tr {&lt;br /&gt;
				a.td {&lt;br /&gt;
					class = &amp;quot;infobox-data&amp;quot;,&lt;br /&gt;
					style = args[&amp;#039;data-style&amp;#039;] or &amp;quot;&amp;quot;,&lt;br /&gt;
					colspan = 2,&lt;br /&gt;
					value&lt;br /&gt;
				}&lt;br /&gt;
			};&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if row then&lt;br /&gt;
			row.class = &amp;quot;infobox-row &amp;quot; .. (row.class or &amp;quot;&amp;quot;);&lt;br /&gt;
			if currentTab then&lt;br /&gt;
				row.class = row.class .. &amp;quot; tab-panel&amp;quot;&lt;br /&gt;
				if currentTab ~= &amp;quot;1&amp;quot; then&lt;br /&gt;
					row.class = row.class .. &amp;quot; tab-panel-hidden&amp;quot;;&lt;br /&gt;
				end&lt;br /&gt;
				row.attributes[&amp;#039;data-group&amp;#039;] = tabGroup;&lt;br /&gt;
				row.attributes[&amp;#039;data-option&amp;#039;] = currentTab;&lt;br /&gt;
			end&lt;br /&gt;
			result.children:insert(row);&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;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame, { removeBlanks = false });&lt;br /&gt;
	local infoboxTitle = a.tr {&lt;br /&gt;
		a.td {&lt;br /&gt;
			class = &amp;quot;infobox-title&amp;quot;,&lt;br /&gt;
			style = args[&amp;#039;title-style&amp;#039;] or &amp;quot;&amp;quot;,&lt;br /&gt;
			colspan = 2,&lt;br /&gt;
			raw(args[&amp;#039;title&amp;#039;] or &amp;quot;&amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
	local infoboxImage = makeInfoboxImage(args);&lt;br /&gt;
	local infoboxContent = makeInfoboxContent(args);&lt;br /&gt;
	return a.table {&lt;br /&gt;
		class = &amp;quot;wikitable lua-infobox citizen-table-nowrap &amp;quot; .. (args[&amp;#039;class&amp;#039;] or &amp;quot;&amp;quot;),&lt;br /&gt;
		style = args[&amp;#039;style&amp;#039;] or &amp;quot;&amp;quot;,&lt;br /&gt;
		infoboxTitle,&lt;br /&gt;
		infoboxImage,&lt;br /&gt;
		infoboxContent,&lt;br /&gt;
		frame:extensionTag( &amp;#039;templatestyles&amp;#039;, &amp;#039;&amp;#039;, { src = &amp;#039;:Module:LuaInfobox/styles.css&amp;#039; } )&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p;&lt;/div&gt;</summary>
		<author><name>天明</name></author>
	</entry>
</feed>