<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://9on0wiki.gunmu.dns.navy/index.php?action=history&amp;feed=atom&amp;title=Module%3AHtmlBuilder</id>
	<title>Module:HtmlBuilder - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://9on0wiki.gunmu.dns.navy/index.php?action=history&amp;feed=atom&amp;title=Module%3AHtmlBuilder"/>
	<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Module:HtmlBuilder&amp;action=history"/>
	<updated>2026-08-27T16:56:09Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Module:HtmlBuilder&amp;diff=544&amp;oldid=prev</id>
		<title>DoubleCircle：​导入1个版本</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Module:HtmlBuilder&amp;diff=544&amp;oldid=prev"/>
		<updated>2026-08-25T19:18:35Z</updated>

		<summary type="html">&lt;p&gt;导入1个版本&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年8月25日 (二) 19:18的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;zh&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;（没有差异）&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key mediawiki:diff:1.41:old-390:rev-544 --&gt;
&lt;/table&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Module:HtmlBuilder&amp;diff=390&amp;oldid=prev</id>
		<title>DoubleCircle：​导入1个版本</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Module:HtmlBuilder&amp;diff=390&amp;oldid=prev"/>
		<updated>2026-08-25T11:55:29Z</updated>

		<summary type="html">&lt;p&gt;导入1个版本&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年8月25日 (二) 11:55的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;zh&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;（没有差异）&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key mediawiki:diff:1.41:old-543:rev-390 --&gt;
&lt;/table&gt;</summary>
		<author><name>DoubleCircle</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Module:HtmlBuilder&amp;diff=543&amp;oldid=prev</id>
		<title>res1999&gt;Feral rage：​bot edit</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Module:HtmlBuilder&amp;diff=543&amp;oldid=prev"/>
		<updated>2023-06-06T08:14:37Z</updated>

		<summary type="html">&lt;p&gt;bot edit&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2023年6月6日 (二) 08:14的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;zh&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;（没有差异）&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key mediawiki:diff:1.41:old-389:rev-543 --&gt;
&lt;/table&gt;</summary>
		<author><name>res1999&gt;Feral rage</name></author>
	</entry>
	<entry>
		<id>https://9on0wiki.gunmu.dns.navy/index.php?title=Module:HtmlBuilder&amp;diff=389&amp;oldid=prev</id>
		<title>huijiwiki&gt;SerGawen：​来自:templatemanager:模块:HtmlBuilder的1个版本已导入：interwiki import</title>
		<link rel="alternate" type="text/html" href="https://9on0wiki.gunmu.dns.navy/index.php?title=Module:HtmlBuilder&amp;diff=389&amp;oldid=prev"/>
		<updated>2017-05-15T12:41:03Z</updated>

		<summary type="html">&lt;p&gt;来自&lt;a href=&quot;/index.php?title=Templatemanager:%E6%A8%A1%E5%9D%97:HtmlBuilder&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Templatemanager:模块:HtmlBuilder（页面不存在）&quot;&gt;templatemanager:模块:HtmlBuilder&lt;/a&gt;的1个版本已导入：interwiki import&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Module for building complex HTML (e.g. infoboxes, navboxes) using a fluent interface.&lt;br /&gt;
&lt;br /&gt;
local HtmlBuilder = {}&lt;br /&gt;
&lt;br /&gt;
local metatable = {}&lt;br /&gt;
&lt;br /&gt;
metatable.__index = function(t, key)&lt;br /&gt;
    local ret = rawget(t, key)&lt;br /&gt;
    if ret then&lt;br /&gt;
        return ret&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    ret = metatable[key]&lt;br /&gt;
    if type(ret) == &amp;#039;function&amp;#039; then&lt;br /&gt;
        return function(...) &lt;br /&gt;
            return ret(t, ...) &lt;br /&gt;
        end &lt;br /&gt;
    else&lt;br /&gt;
        return ret&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.__tostring = function(t)&lt;br /&gt;
    local ret = {}&lt;br /&gt;
    t._build(ret)&lt;br /&gt;
    return table.concat(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable._build = function(t, ret)&lt;br /&gt;
    if t.tagName then &lt;br /&gt;
        table.insert(ret, &amp;#039;&amp;lt;&amp;#039; .. t.tagName)&lt;br /&gt;
        for i, attr in ipairs(t.attributes) do&lt;br /&gt;
            table.insert(ret, &amp;#039; &amp;#039; .. attr.name .. &amp;#039;=&amp;quot;&amp;#039; .. attr.val .. &amp;#039;&amp;quot;&amp;#039;) &lt;br /&gt;
        end&lt;br /&gt;
        if #t.styles &amp;gt; 0 then&lt;br /&gt;
            table.insert(ret, &amp;#039; style=&amp;quot;&amp;#039;)&lt;br /&gt;
            for i, prop in ipairs(t.styles) do&lt;br /&gt;
                if type(prop) == &amp;#039;string&amp;#039; then -- added with cssText()&lt;br /&gt;
                    table.insert(ret, prop .. &amp;#039;;&amp;#039;)&lt;br /&gt;
                else -- added with css()&lt;br /&gt;
                    table.insert(ret, prop.name .. &amp;#039;:&amp;#039; .. prop.val .. &amp;#039;;&amp;#039;)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            table.insert(ret, &amp;#039;&amp;quot;&amp;#039;)&lt;br /&gt;
        end&lt;br /&gt;
        if t.selfClosing then&lt;br /&gt;
            table.insert(ret, &amp;#039; /&amp;#039;)&lt;br /&gt;
        end&lt;br /&gt;
        table.insert(ret, &amp;#039;&amp;gt;&amp;#039;) &lt;br /&gt;
    end&lt;br /&gt;
    for i, node in ipairs(t.nodes) do&lt;br /&gt;
        if node then&lt;br /&gt;
            if type(node) == &amp;#039;table&amp;#039; then&lt;br /&gt;
                node._build(ret)&lt;br /&gt;
            else&lt;br /&gt;
                table.insert(ret, tostring(node))&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if t.tagName and not t.unclosed and not t.selfClosing then&lt;br /&gt;
        table.insert(ret, &amp;#039;&amp;lt;/&amp;#039; .. t.tagName .. &amp;#039;&amp;gt;&amp;#039;)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.node = function(t, builder)&lt;br /&gt;
    if builder then&lt;br /&gt;
        table.insert(t.nodes, builder)&lt;br /&gt;
    end&lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.wikitext = function(t, ...) &lt;br /&gt;
    local vals = {...}&lt;br /&gt;
    for i = 1, #vals do&lt;br /&gt;
        if vals[i] then&lt;br /&gt;
            table.insert(t.nodes, vals[i])&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.newline = function(t)&lt;br /&gt;
    table.insert(t.nodes, &amp;#039;\n&amp;#039;)&lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.tag = function(t, tagName, args)&lt;br /&gt;
    args = args or {}&lt;br /&gt;
    args.parent = t&lt;br /&gt;
    local builder = HtmlBuilder.create(tagName, args)&lt;br /&gt;
    table.insert(t.nodes, builder)&lt;br /&gt;
    return builder&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getAttr(t, name)&lt;br /&gt;
    for i, attr in ipairs(t.attributes) do&lt;br /&gt;
        if attr.name == name then&lt;br /&gt;
            return attr&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.attr = function(t, name, val)&lt;br /&gt;
    if type(val) == &amp;#039;string&amp;#039; or type(val) == &amp;#039;number&amp;#039; then&lt;br /&gt;
        -- if caller sets the style attribute explicitly, then replace all styles previously added with css() and cssText()&lt;br /&gt;
        if name == &amp;#039;style&amp;#039; then&lt;br /&gt;
            t.styles = {val}&lt;br /&gt;
            return t&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        local attr = getAttr(t, name)&lt;br /&gt;
        if attr then&lt;br /&gt;
            attr.val = val&lt;br /&gt;
        else&lt;br /&gt;
            table.insert(t.attributes, {name = name, val = val})&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.addClass = function(t, class)&lt;br /&gt;
    if class then&lt;br /&gt;
        local attr = getAttr(t, &amp;#039;class&amp;#039;)&lt;br /&gt;
        if attr then&lt;br /&gt;
            attr.val = attr.val .. &amp;#039; &amp;#039; .. class&lt;br /&gt;
        else&lt;br /&gt;
            t.attr(&amp;#039;class&amp;#039;, class)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.css = function(t, name, val)&lt;br /&gt;
    if type(val) == &amp;#039;string&amp;#039; or type(val) == &amp;#039;number&amp;#039; then&lt;br /&gt;
        for i, prop in ipairs(t.styles) do&lt;br /&gt;
            if prop.name == name then&lt;br /&gt;
                prop.val = val&lt;br /&gt;
                return t&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        table.insert(t.styles, {name = name, val = val})&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.cssText = function(t, css)&lt;br /&gt;
    if css then&lt;br /&gt;
        table.insert(t.styles, css)&lt;br /&gt;
    end&lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.done = function(t)&lt;br /&gt;
    return t.parent or t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
metatable.allDone = function(t)&lt;br /&gt;
    while t.parent do&lt;br /&gt;
        t = t.parent&lt;br /&gt;
    end&lt;br /&gt;
    return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function HtmlBuilder.create(tagName, args)&lt;br /&gt;
    args = args or {}&lt;br /&gt;
    local builder = {}&lt;br /&gt;
    setmetatable(builder, metatable)&lt;br /&gt;
    builder.nodes = {}&lt;br /&gt;
    builder.attributes = {}&lt;br /&gt;
    builder.styles = {}&lt;br /&gt;
    builder.tagName = tagName&lt;br /&gt;
    builder.parent = args.parent&lt;br /&gt;
    builder.unclosed = args.unclosed or false&lt;br /&gt;
    builder.selfClosing = args.selfClosing or false&lt;br /&gt;
    return builder&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return HtmlBuilder&lt;/div&gt;</summary>
		<author><name>huijiwiki&gt;SerGawen</name></author>
	</entry>
</feed>