Editing Module:Test
Jump to navigation
Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 3: | Line 3: | ||
local function runTime() | local function runTime() | ||
− | + | local clock = string.format("%i", os.clock() * 1000) | |
+ | return clock | ||
end | end | ||
Line 112: | Line 113: | ||
function DefInfo.getDef(defID, expandVF) | function DefInfo.getDef(defID, expandVF) | ||
if expandVF ~= false then expandVF = true end | if expandVF ~= false then expandVF = true end | ||
− | |||
local ignoreKeys = {"Abstract", "Name", "ParentName"} | local ignoreKeys = {"Abstract", "Name", "ParentName"} | ||
local baseDef | local baseDef | ||
Line 160: | Line 160: | ||
if mw then DefInfo.vardefine(mt[k], v, frame) end | if mw then DefInfo.vardefine(mt[k], v, frame) end | ||
else | else | ||
− | definePrefixed(v | + | definePrefixed(v) |
end | end | ||
end | end | ||
Line 168: | Line 168: | ||
-- public interface -- | -- public interface -- | ||
---------------------- | ---------------------- | ||
+ | |||
+ | function wiki.getDefName(frame) | ||
+ | local defName | ||
+ | local label = frame.args[1] | ||
+ | |||
+ | if not label then | ||
+ | logObject(frame.args, string.format("getDefName @ %ims: missing argument #1 (label)\nframe.args", runTime())) | ||
+ | return nil | ||
+ | end | ||
+ | |||
+ | for defID,def in pairs(Data) do | ||
+ | if string.upper(def.label or '') == string.upper(label) then | ||
+ | defName = def.defName | ||
+ | end | ||
+ | end | ||
+ | |||
+ | if not defName then | ||
+ | logObject(frame.args, string.format("getDefName @ %ims: '%s' not found\nframe.args", runTime(), label)) | ||
+ | return nil | ||
+ | end | ||
+ | |||
+ | log(string.format("@%ims, getDefName: retrieved defName", runTime())) | ||
+ | return defName | ||
+ | end | ||
function wiki.count(frame) | function wiki.count(frame) | ||
local query = wiki.query(frame) | local query = wiki.query(frame) | ||
− | if type( | + | if type(query) == 'table' then |
− | return Util.table.count( | + | return Util.table.count(query) |
end | end | ||
end | end | ||
Line 197: | Line 221: | ||
end | end | ||
− | local | + | local prune = def |
for i,arg in ipairs(frame.args) do -- arguments | for i,arg in ipairs(frame.args) do -- arguments | ||
Line 203: | Line 227: | ||
if i == argLen and frame.args["sibling"] then | if i == argLen and frame.args["sibling"] then | ||
− | + | prune = Search.find({nil, frame.args["sibling"]} , prune) | |
− | if not | + | if not prune then |
logObject(frame.args, string.format("query @ %ims: bad argument 'sibling' ('%s' not found')\nframe.args", runTime(), frame.args["sibling"])) | logObject(frame.args, string.format("query @ %ims: bad argument 'sibling' ('%s' not found')\nframe.args", runTime(), frame.args["sibling"])) | ||
return nil | return nil | ||
else | else | ||
− | + | prune = Search.meta.parent.table[arg] | |
− | if not | + | if not prune then |
logObject(frame.args, string.format("query @ %ims: bad argument #%i ('%s' is not a sibling of '%s')", runTime(), i, arg, frame.args["sibling"])) | logObject(frame.args, string.format("query @ %ims: bad argument #%i ('%s' is not a sibling of '%s')", runTime(), i, arg, frame.args["sibling"])) | ||
return nil | return nil | ||
Line 217: | Line 241: | ||
if i < argLen or i == argLen and not frame.args["sibling"] then | if i < argLen or i == argLen and not frame.args["sibling"] then | ||
− | + | prune = Search.find(arg, prune) | |
− | if not | + | if not prune then |
logObject(frame.args, string.format("query @ %ims: bad argument #%i ('%s' not found)\nframe.args", runTime(), i, frame.args[i])) | logObject(frame.args, string.format("query @ %ims: bad argument #%i ('%s' not found)\nframe.args", runTime(), i, frame.args[i])) | ||
return nil | return nil | ||
else | else | ||
− | if type( | + | if type(prune) ~= 'table' and i < argLen then |
log(string.format("query @ %ims: warning Def ['%s'] argument #%i ('%s' returns a value, all extra arguments ignored)", runTime(), def['label'], i, frame.args[i])) | log(string.format("query @ %ims: warning Def ['%s'] argument #%i ('%s' returns a value, all extra arguments ignored)", runTime(), def['label'], i, frame.args[i])) | ||
− | return | + | return prune |
end | end | ||
end | end | ||
Line 231: | Line 255: | ||
end -- for arguments | end -- for arguments | ||
− | if type( | + | if type(prune) == "table" then |
log(string.format("@%ims, query: table vardefined", runTime())) | log(string.format("@%ims, query: table vardefined", runTime())) | ||
− | setPrefix( | + | setPrefix(prune, frame.args[argLen]) |
− | definePrefixed( | + | definePrefixed(prune, frame) |
− | + | queried = prune | |
return nil | return nil | ||
end | end | ||
− | log(string.format("@%ims, query: %s printed", runTime(), type( | + | log(string.format("@%ims, query: %s printed", runTime(), type(prune))) |
− | return | + | return prune |
+ | |||
end | end | ||
+ | -- {{User:Dr. Strangelove/Template:Infobox/sandbox|{{{movespeed|}}}|statBases|MoveSpeed|title=Some movin|SMWP=Move Speed Base}} | ||
+ | -- {{#invoke:Test|print|{{SUBPAGENAME}}}} | ||
+ | function wiki.print(frame) | ||
+ | local subpagename = frame.args[1] | ||
+ | local pFrame = frame:getParent() | ||
+ | |||
+ | if not pFrame.args then return "no arguments passed" end | ||
+ | if not pFrame.args[1] then return "missing argument #1" end | ||
+ | if not pFrame.args.title then return "missing named argument 'title'" end | ||
+ | |||
+ | local ibPropValue = pFrame.args[1] | ||
− | + | local qFrame = { | |
− | -- simulate | + | args = {} |
− | + | } | |
+ | |||
+ | for i,v in ipairs(pFrame.args) do | ||
+ | if i > 1 then | ||
+ | table.insert(qFrame.args, v) | ||
+ | end | ||
+ | end | ||
+ | |||
+ | qFrame.args.label = 'hare' | ||
+ | |||
+ | mw.logObject(qFrame, 'qFrame') | ||
+ | |||
+ | local q = wiki.query(qFrame) | ||
+ | |||
+ | mw.logObject(q, 'q') | ||
+ | mw.logObject(pFrame.args.SMWP, 'pFrame.args.SMWP') | ||
+ | mw.logObject(ibPropValue, 'ibPropValue') | ||
+ | |||
+ | if pFrame.args.SMWP and ibPropValue then | ||
+ | frame:callParserFunction('#set', pFrame.args.SMWP .. '=' .. ibPropValue) | ||
+ | end | ||
+ | |||
+ | local sOutputText | ||
+ | |||
+ | if ibPropValue == '' then | ||
+ | sOutputText = string.format(';%s\n:%s', pFrame.args.title, q) | ||
+ | else | ||
+ | sOutputText = string.format(';%s\n:%s', pFrame.args.title, ibPropValue) | ||
+ | end | ||
+ | |||
+ | return sOutputText | ||
+ | end | ||
+ | |||
+ | --------------------------------- | ||
+ | -- simulate module invocation -- | ||
+ | --------------------------------- | ||
if not mw then | if not mw then | ||
Line 254: | Line 325: | ||
wiki.query(simframe) | wiki.query(simframe) | ||
end | end | ||
+ | |||
+ | ---------------------------------------- | ||
+ | -- simulate wiki log while developing -- | ||
+ | ---------------------------------------- | ||
if not mw then | if not mw then | ||
Line 261: | Line 336: | ||
end | end | ||
end | end | ||
− | |||
− | |||
− | |||
− | |||
if mw then | if mw then |