• Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

模組討論:Loop

萌娘百科,萬物皆可萌的百科全書!轉載請標註來源頁面的網頁連結,並聲明引自萌娘百科。內容不可商用。
跳至導覽 跳至搜尋

編輯請求 - Nzh21 - 2025.07.03

由Nzh21提出的對模塊:Loop的編輯請求:

狀態:   待處理申請

增加以下內容:

應用如下patch(抱歉沒法發完整代碼,完整代碼會被waf攔截):
diff --git a/old.lua b/new.lua
index 5edce90..9e4d1bd 100644
--- a/old.lua
+++ b/new.lua
@@ -103,9 +103,10 @@ function _loop(args, frame)
     local result = ''
     if type(args[2]) == 'nil' and _min > _max and addend > 0 then addend = -1 end
     for i=_min, _max, addend do
-        frame:callParserFunction('#vardefine', name, i)
+        local wikitext = loop
+        wikitext = string.gsub(wikitext, '{{%s-#var:%s-'..name..'%s-}}', i)
         -- mw.log('执行循环体('..name..'='..tostring(i)..') '..loop)
-        result = result..frame:preprocess(loop)
+        result = result..frame:preprocess(wikitext)
     end
     -- mw.log('循环结果 '..result)
     return result
@@ -217,10 +218,11 @@ function module.fornumargs(frame)
 	end
 	table.sort(keys)
 	for _, idx in ipairs(keys) do
-		parent:callParserFunction('#vardefine', numname, idx)
-		parent:callParserFunction('#vardefine', valname, parent.args[prefix .. idx])
+        local wikitext = loop
+        wikitext = string.gsub(wikitext, '{{%s-#var:%s-'..numname..'%s-}}', idx)
+        wikitext = string.gsub(wikitext, '{{%s-#var:%s-'..valname..'%s-}}', parent.args[prefix .. idx])
 		if cond == '' or parent:preprocess(cond) ~= '' then
-			table.insert(output, parent:preprocess(text))
+			table.insert(output, parent:preprocess(wikitext))
 		end
 	end
 	return table.concat(output)

萌百終於要更新mw,因為var即將棄用,此模塊之前有依賴於var,因此替換掉原先使用的的vardefine。

這個編輯請求可以不必立即執行,28號更新完成後再替換即可。

如果能夠在7號之前替換掉所有對#invoke:loop,那麼也可以考慮直接廢棄掉本模塊。(沒有var這個模塊也很難做出一些複雜的操作了)——Nzh21討論) 2025年7月4日 (五) 00:43 (CST)