<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://wflswiki.zelda-110.link/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=240D%3AC010%3A77%3AB%3A0%3A0%3A0%3A6C</id>
	<title>武外梗百科 - 用户贡献 [zh]</title>
	<link rel="self" type="application/atom+xml" href="https://wflswiki.zelda-110.link/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=240D%3AC010%3A77%3AB%3A0%3A0%3A0%3A6C"/>
	<link rel="alternate" type="text/html" href="https://wflswiki.zelda-110.link/wiki/Special:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/240D:C010:77:B:0:0:0:6C"/>
	<updated>2026-07-30T21:02:32Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wflswiki.zelda-110.link/index.php?title=Module:PageSummary&amp;diff=1057</id>
		<title>Module:PageSummary</title>
		<link rel="alternate" type="text/html" href="https://wflswiki.zelda-110.link/index.php?title=Module:PageSummary&amp;diff=1057"/>
		<updated>2026-02-18T05:09:51Z</updated>

		<summary type="html">&lt;p&gt;240D:C010:77:B:0:0:0:6C：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- 核心剥离逻辑：状态机识别，防止图片碎片&lt;br /&gt;
local function stripImages(text)&lt;br /&gt;
    if not text then return &amp;quot;&amp;quot; end&lt;br /&gt;
    local out = {}&lt;br /&gt;
    local i = 1&lt;br /&gt;
    local len = mw.ustring.len(text)&lt;br /&gt;
    while i &amp;lt;= len do&lt;br /&gt;
        local foundImage = false&lt;br /&gt;
        local chunk = mw.ustring.sub(text, i, i + 10)&lt;br /&gt;
        if chunk:match(&amp;quot;^%[%[[Ff]ile:&amp;quot;) or chunk:match(&amp;quot;^%[%[[Ii]mage:&amp;quot;) or &lt;br /&gt;
           chunk:match(&amp;quot;^%[%[[Cc]ategory:&amp;quot;) or &lt;br /&gt;
           chunk:match(&amp;quot;^%[%[文件:&amp;quot;) or chunk:match(&amp;quot;^%[%[图像:&amp;quot;) then&lt;br /&gt;
            local depth = 0&lt;br /&gt;
            local j = i&lt;br /&gt;
            while j &amp;lt;= len do&lt;br /&gt;
                local char2 = mw.ustring.sub(text, j, j + 1)&lt;br /&gt;
                if char2 == &amp;quot;[[&amp;quot; then depth = depth + 1 j = j + 2&lt;br /&gt;
                elseif char2 == &amp;quot;]]&amp;quot; then depth = depth - 1 j = j + 2&lt;br /&gt;
                    if depth &amp;lt;= 0 then i = j foundImage = true break end&lt;br /&gt;
                else j = j + 1 end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if not foundImage then&lt;br /&gt;
            table.insert(out, mw.ustring.sub(text, i, i))&lt;br /&gt;
            i = i + 1&lt;br /&gt;
        end&lt;br /&gt;
        if i &amp;gt; 600 then break end&lt;br /&gt;
    end&lt;br /&gt;
    return table.concat(out)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function cleanFinal(text)&lt;br /&gt;
    text = string.gsub(text, &amp;quot;{{[^{}]+}}&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    text = string.gsub(text, &amp;quot;{{[^{}]+}}&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    text = string.gsub(text, &amp;quot;&amp;lt;ref.-&amp;lt;/ref&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    text = string.gsub(text, &amp;quot;&amp;lt;ref.-&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    text = string.gsub(text, &amp;quot;&amp;lt;!%-%-.-%-%-&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    text = string.gsub(text, &amp;quot;\n==+.-==+&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
    text = string.gsub(text, &amp;quot;\n%s*[*#:]+&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
    text = string.gsub(text, &amp;quot;\n&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
    text = string.gsub(text, &amp;quot;%s+&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
    return mw.text.trim(text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSummaryAndImage(frame)&lt;br /&gt;
    local pageName = frame.args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local title = mw.title.new(pageName)&lt;br /&gt;
    if not title or not title.exists then return &amp;quot;&amp;quot; end&lt;br /&gt;
    &lt;br /&gt;
    local content = title:getContent()&lt;br /&gt;
    local rawExcerpt = mw.ustring.sub(content, 1, 400)&lt;br /&gt;
&lt;br /&gt;
    -- 提取第一张图名&lt;br /&gt;
    local firstImage = string.match(rawExcerpt, &amp;quot;%[%[([Ff]ile:[^|%]%s]+)&amp;quot;) or &lt;br /&gt;
                       string.match(rawExcerpt, &amp;quot;%[%[(文件:[^|%]%s]+)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    local step1 = stripImages(rawExcerpt)&lt;br /&gt;
    local cleanText = cleanFinal(step1)&lt;br /&gt;
&lt;br /&gt;
    local targetLen = 120&lt;br /&gt;
    local summary = mw.ustring.sub(cleanText, 1, targetLen)&lt;br /&gt;
    &lt;br /&gt;
    -- 清理末尾断头链接&lt;br /&gt;
    local _, opens = string.gsub(summary, &amp;quot;%[%[&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    local _, closes = string.gsub(summary, &amp;quot;%]%]&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    if opens &amp;gt; closes then&lt;br /&gt;
        local lastOpen = string.find(summary:reverse(), &amp;quot;%[%[&amp;quot;)&lt;br /&gt;
        if lastOpen then summary = string.sub(summary, 1, #summary - lastOpen - 1) end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    summary = mw.text.trim(summary)&lt;br /&gt;
    if mw.ustring.len(cleanText) &amp;gt; targetLen then summary = summary .. &amp;quot;...&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
    -- --- 渲染部分修改 ---&lt;br /&gt;
    local container = mw.html.create(&#039;div&#039;):css({[&#039;margin-bottom&#039;]=&#039;25px&#039;, [&#039;display&#039;]=&#039;flow-root&#039;})&lt;br /&gt;
    &lt;br /&gt;
    -- 1. 先渲染标题&lt;br /&gt;
    container:tag(&#039;div&#039;)&lt;br /&gt;
        :css({[&#039;font-size&#039;]=&#039;1.3em&#039;, [&#039;font-weight&#039;]=&#039;bold&#039;, [&#039;margin-bottom&#039;]=&#039;6px&#039;, [&#039;border-bottom&#039;]=&#039;1px solid #eee&#039;})&lt;br /&gt;
        :wikitext(&#039;[[&#039; .. pageName .. &#039;]]&#039;)&lt;br /&gt;
    &lt;br /&gt;
    -- 2. 创建摘要正文容器&lt;br /&gt;
    local textDiv = container:tag(&#039;div&#039;)&lt;br /&gt;
        :css({[&#039;line-height&#039;]=&#039;1.6&#039;, [&#039;color&#039;]=&#039;#222&#039;, [&#039;font-size&#039;]=&#039;14px&#039;})&lt;br /&gt;
    &lt;br /&gt;
    -- 3. 将图片放在正文的最前面，实现文字环绕&lt;br /&gt;
    if firstImage then&lt;br /&gt;
        textDiv:wikitext(&#039;[[&#039; .. firstImage .. &#039;|120px|right|link=&#039; .. pageName .. &#039;]]&#039;)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- 4. 紧接着放入文字&lt;br /&gt;
    textDiv:wikitext(summary)&lt;br /&gt;
&lt;br /&gt;
    return tostring(container)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>240D:C010:77:B:0:0:0:6C</name></author>
	</entry>
</feed>