<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Module%3AVgr</id>
	<title>Module:Vgr - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Module%3AVgr"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Module:Vgr&amp;action=history"/>
	<updated>2026-06-25T20:52:50Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Module:Vgr&amp;diff=2401676&amp;oldid=prev</id>
		<title>imported&gt;For Each ... Next 来自 2026年4月1日 (三) 14:49</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Module:Vgr&amp;diff=2401676&amp;oldid=prev"/>
		<updated>2026-04-01T14:49:28Z</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;require(&amp;quot;strict&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local split = mw.text.split&lt;br /&gt;
local trim = mw.text.trim&lt;br /&gt;
local concat = table.concat&lt;br /&gt;
&lt;br /&gt;
local chinese_date = require(&amp;quot;Module:Date_Convert&amp;quot;)._ChineseDate&lt;br /&gt;
local getArgs = require(&amp;quot;Module:Arguments&amp;quot;).getArgs&lt;br /&gt;
local unbulleted = require(&amp;quot;Module:List&amp;quot;).unbulleted&lt;br /&gt;
local yesno = require(&amp;quot;Module:Yesno&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local region_data = mw.loadData(&amp;quot;Module:Vgr/regions&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local ITEMS_LIMIT = 42&lt;br /&gt;
local DEFAULT_PLAIN_MODE = false&lt;br /&gt;
local DELIM_PATTERN = &amp;quot;[,;/、，；／]%s*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--- Return the mapped region name, or the original value if unmapped.&lt;br /&gt;
--- @param code string&lt;br /&gt;
--- @return string&lt;br /&gt;
local function get_name(code)&lt;br /&gt;
    return region_data[code] or code&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Split and normalize region codes.&lt;br /&gt;
--- @param s string&lt;br /&gt;
--- @return string[]&lt;br /&gt;
local function split_codes(s)&lt;br /&gt;
    local codes = {}&lt;br /&gt;
&lt;br /&gt;
    for _, part in ipairs(split(s or &amp;quot;&amp;quot;, DELIM_PATTERN, false)) do&lt;br /&gt;
        part = trim(part)&lt;br /&gt;
        if part ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            codes[#codes + 1] = part&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return codes&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Convert a region-code string into display names.&lt;br /&gt;
--- @param s string&lt;br /&gt;
--- @return string[]&lt;br /&gt;
local function get_names(s)&lt;br /&gt;
    local names = {}&lt;br /&gt;
&lt;br /&gt;
    for _, code in ipairs(split_codes(s)) do&lt;br /&gt;
        names[#names + 1] = get_name(code)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return names&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Render the label portion.&lt;br /&gt;
--- @param value string&lt;br /&gt;
--- @return string&lt;br /&gt;
local function render_label(value)&lt;br /&gt;
    return concat(get_names(value), &amp;quot;、&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Render the data portion.&lt;br /&gt;
--- @param value string&lt;br /&gt;
--- @param plain boolean&lt;br /&gt;
--- @return string&lt;br /&gt;
local function render_data(value, plain)&lt;br /&gt;
    if plain then&lt;br /&gt;
        return value&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return chinese_date {value, error = &amp;quot;ignore&amp;quot;, suf = &amp;quot;yes&amp;quot;}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Render one item.&lt;br /&gt;
--- @param label string&lt;br /&gt;
--- @param value string&lt;br /&gt;
--- @param plain boolean&lt;br /&gt;
--- @return string&lt;br /&gt;
local function render_item(label, value, plain)&lt;br /&gt;
    return (&amp;quot;%s：%s&amp;quot;):format(render_label(label), render_data(value, plain))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Handle shorthand single-value usage.&lt;br /&gt;
--- @param args table&lt;br /&gt;
--- @param plain boolean&lt;br /&gt;
--- @return table|nil&lt;br /&gt;
local function get_single_item(args, plain)&lt;br /&gt;
    local first, second = args[1], args[2]&lt;br /&gt;
&lt;br /&gt;
    if first and second == nil then&lt;br /&gt;
        return {render_data(first, plain)}&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if second and first == nil then&lt;br /&gt;
        return {render_data(second, plain)}&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Collect normal paired items.&lt;br /&gt;
--- @param args table&lt;br /&gt;
--- @param plain boolean&lt;br /&gt;
--- @return table&lt;br /&gt;
local function get_paired_items(args, plain)&lt;br /&gt;
    local items = {}&lt;br /&gt;
&lt;br /&gt;
    for i = 1, ITEMS_LIMIT * 2, 2 do&lt;br /&gt;
        local label = args[i]&lt;br /&gt;
        if not label or label == &amp;quot;&amp;quot; then&lt;br /&gt;
            break&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        items[#items + 1] = render_item(label, args[i + 1] or &amp;quot;&amp;quot;, plain)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return items&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parse arguments into rendered items.&lt;br /&gt;
--- @param args table&lt;br /&gt;
--- @return table&lt;br /&gt;
local function get_items(args)&lt;br /&gt;
    local plain = yesno(args.plain, DEFAULT_PLAIN_MODE)&lt;br /&gt;
    return get_single_item(args, plain) or get_paired_items(args, plain)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Internal entry point.&lt;br /&gt;
--- @param args table&lt;br /&gt;
--- @return string&lt;br /&gt;
function p._main(args)&lt;br /&gt;
    return unbulleted(get_items(args))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Template entry point.&lt;br /&gt;
--- @param frame table&lt;br /&gt;
--- @return string&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    return p._main(getArgs(frame))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;For Each ... Next</name></author>
	</entry>
</feed>