Module:Sandbox/Vergir: Difference between revisionsGive feedback
Jump to navigation
Jump to search
Improve verification harness: plain-text output and scaling diagnostic (with help from vergir-bot LLM) |
Use stub frame so harness output is plain text (with help from vergir-bot LLM) |
||
| Line 3: | Line 3: | ||
local GameData = require("Module:GameData") | local GameData = require("Module:GameData") | ||
-- A stand-in frame whose expandTemplate returns the bare argument, so the | |||
-- module's output stays plain text instead of parser strip markers. | |||
local stub = { | |||
expandTemplate = function(self, args) return args.args[1] end, | |||
} | |||
function p.check(frame) | function p.check(frame) | ||
local out = require("Module:ArcaneSurge").render( | local out = require("Module:ArcaneSurge").render(stub) | ||
local | local heroes, abilities, notes = 0, 0, 0 | ||
local lines = {} | |||
for item in out:gmatch("<li>(.-)</li>") do | for item in out:gmatch("<li>(.-)</li>") do | ||
heroes = heroes + 1 | heroes = heroes + 1 | ||
for _ in item:gmatch("%(after T") do notes = notes + 1 end | |||
local _, commas = item:gsub(", ", "") | |||
abilities = abilities + commas + 1 | |||
table.insert(lines, | table.insert(lines, item) | ||
end | end | ||
return "<pre>heroes=" .. heroes .. " notes=" .. notes .. "\n\n" | return "<pre>heroes=" .. heroes .. " abilities=" .. abilities | ||
.. " notes=" .. notes .. "\n\n" | |||
.. mw.text.encode(table.concat(lines, "\n")) .. "</pre>" | .. mw.text.encode(table.concat(lines, "\n")) .. "</pre>" | ||
end | end | ||
Revision as of 07:56, 10 August 2026
Documentation for this module may be created at Module:Sandbox/Vergir/doc
-- Temporary harness: summarises Module:ArcaneSurge output for verification.
local p = {}
local GameData = require("Module:GameData")
-- A stand-in frame whose expandTemplate returns the bare argument, so the
-- module's output stays plain text instead of parser strip markers.
local stub = {
expandTemplate = function(self, args) return args.args[1] end,
}
function p.check(frame)
local out = require("Module:ArcaneSurge").render(stub)
local heroes, abilities, notes = 0, 0, 0
local lines = {}
for item in out:gmatch("<li>(.-)</li>") do
heroes = heroes + 1
for _ in item:gmatch("%(after T") do notes = notes + 1 end
local _, commas = item:gsub(", ", "")
abilities = abilities + commas + 1
table.insert(lines, item)
end
return "<pre>heroes=" .. heroes .. " abilities=" .. abilities
.. " notes=" .. notes .. "\n\n"
.. mw.text.encode(table.concat(lines, "\n")) .. "</pre>"
end
-- Dumps every Scale block of a named ability, to compare live data against
-- local expectations.
function p.scales(frame)
local name = frame.args[1]
local data = mw.loadJsonData(GameData.Dataset.ABILITIES)
for key, record in pairs(data) do
if record["Name"] == name then
local rows = { "key = " .. key }
local function walk(node, path)
if type(node) ~= "table" then return end
for k, v in pairs(node) do
if type(v) == "table" then
local scale = v["Scale"]
if type(scale) == "table" and scale["Type"] then
table.insert(rows, path .. tostring(k)
.. ": Value=" .. tostring(v["Value"])
.. " Scale.Type=" .. tostring(scale["Type"])
.. " Scale.Value=" .. tostring(scale["Value"]))
end
walk(v, path .. tostring(k) .. ".")
end
end
end
walk(record, "")
return "<pre>" .. mw.text.encode(table.concat(rows, "\n")) .. "</pre>"
end
end
return "not found: " .. tostring(name)
end
return p