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

Module talk: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)