Módulo:Mw
Saltar para a navegação
Saltar para a pesquisa
A documentação para este módulo pode ser criada na página Módulo:Mw/doc
-- Wrapper for Base and Frame Object Lua functions
-- https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Base_functions
-- https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Frame_object
--
-- Not implemented
-- mw.clone
-- mw.loadData
-- mw.dumpObject
-- mw.logObject
-- frame:callParserFunction
-- frame:expandTemplate
-- frame:extensionTag
-- frame:newChild
-- frame:newParserValue
-- frame:newTemplateParserValue
f = {}
function boolean( str )
-- Interpret string as boolean
-- * Returns False if nil, "false" or "0"; returns True otherwise
return not (str == nil or str == "false" or str == "0")
end
function f.allToString(frame)
-- mw.allToString( ... )
ret = {}
for i, j in pairs( frame.args or {} ) do
table.insert( ret, i .. '=' .. j )
end
return table.concat( ret, '|' )
end
function f.allToStringEx(frame)
-- mw.allToString( [separator, keyseparator, hidenumbers, useparent, ] ... )
separator = frame.args['separator'] or '|'
keyseparator = frame.args['keyseparator'] or '='
hidenumbers = boolean(frame.args['hidenumbers'])
useparent = boolean(frame.args['useparent'])
if useparent then
thisframe = frame:getParent()
else
thisframe = frame
end
ret = {}
nextnum = 1
for key, value in pairs( thisframe.args or {} ) do
if useparent or not (key == 'hidenumbers' or key == 'useparent' or key == 'separator' or key == 'keyseparator') then
if hidenumbers and key == nextnum then
txt = value
nextnum = nextnum + 1
else
txt = key .. keyseparator .. value
end
table.insert( ret, txt )
end
end
return table.concat( ret, separator )
end
function f.getCurrentFrame(frame)
-- mw.getCurrentFrame().args
return mw.allToString(frame)
end
function f.incrementExpensiveFunctionCount(frame)
-- mw.incrementExpensiveFunctionCount()
if pcall(mw.incrementExpensiveFunctionCount) then
return ''
else
return 'error'
end
end
function f.isSubsting(frame)
-- mw.isSubsting()
if mw.isSubsting() then
return 'true'
else
return 'false'
end
end
function f.log(frame)
-- mw.log( ... )
mw.log( f.allToString(frame) )
return ''
end
function f.getParent(frame)
-- frame:getParent().args
ret = {}
for i, j in pairs( frame:getParent().args or {} ) do
table.insert( ret, i .. '=' .. j )
end
return table.concat( ret, '|' )
end
function f.getTitle(frame)
-- frame:getTitle()
return frame:getTitle()
end
function f.preprocess(frame)
-- frame:preprocess( ... )
ret = mw.clone(frame.args)
return frame:preprocess( table.concat(ret, '|') )
end
function f.getArgument(frame)
-- frame:getArgument( arg )
arg = frame.args['arg'] or frame.args[1]
return frame:getArgument( arg ):expand()
end
function f.argumentPairs(frame)
-- frame:argumentPairs()
return f.getCurrentFrame(frame)
end
return f