mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Scribunto
synced 2024-11-26 01:05:22 +00:00
306 lines
5.1 KiB
Plaintext
306 lines
5.1 KiB
Plaintext
|
!! article
|
||
|
Module:Test
|
||
|
!! text
|
||
|
local p = {}
|
||
|
|
||
|
local isoTestData = ''
|
||
|
|
||
|
require('bit')
|
||
|
|
||
|
function p.tooFewArgs()
|
||
|
require()
|
||
|
end
|
||
|
|
||
|
function p.getAllArgs( frame )
|
||
|
local buf = {}
|
||
|
local names = {}
|
||
|
local values = {}
|
||
|
for name, value in frame:argumentPairs() do
|
||
|
table.insert(names, name)
|
||
|
values[name] = value
|
||
|
end
|
||
|
table.sort(names, function (a, b) return tostring(a) < tostring(b) end)
|
||
|
for index, name in ipairs(names) do
|
||
|
if #buf ~= 0 then
|
||
|
table.insert( buf, ', ' )
|
||
|
end
|
||
|
table.insert( buf, name .. '=' .. values[name] )
|
||
|
end
|
||
|
return table.concat( buf )
|
||
|
end
|
||
|
|
||
|
function p.getArg( frame )
|
||
|
local name = frame.args[1]
|
||
|
return frame:getArgument( name ):expand()
|
||
|
end
|
||
|
|
||
|
function p.getArgLength( frame )
|
||
|
local name = frame.args[1]
|
||
|
return #(frame.args[name])
|
||
|
end
|
||
|
|
||
|
function p.getArgType( frame )
|
||
|
local name = frame.args[1]
|
||
|
return type( frame.args[name] )
|
||
|
end
|
||
|
|
||
|
function p.hello()
|
||
|
return 'hello'
|
||
|
end
|
||
|
|
||
|
function p.emptyTable()
|
||
|
return {}
|
||
|
end
|
||
|
|
||
|
function p.import()
|
||
|
return require('Module:Test2').countBeans()
|
||
|
end
|
||
|
|
||
|
function p.bitop()
|
||
|
return bit.bor(1, bit.bor(2, bit.bor(4, 8)))
|
||
|
end
|
||
|
|
||
|
function p.isolationTestUpvalue( frame )
|
||
|
isoTestData = isoTestData .. frame.args[1]
|
||
|
return isoTestData
|
||
|
end
|
||
|
|
||
|
function p.isolationTestGlobal( frame )
|
||
|
if isoTestDataGlobal == nil then
|
||
|
isoTestDataGlobal = ''
|
||
|
end
|
||
|
isoTestDataGlobal = isoTestDataGlobal .. frame.args[1]
|
||
|
return isoTestDataGlobal
|
||
|
end
|
||
|
|
||
|
function p.getParentArgs( frame )
|
||
|
return p.getAllArgs( frame:getParent() )
|
||
|
end
|
||
|
|
||
|
function p.testExpandTemplate( frame )
|
||
|
return frame:expandTemplate{
|
||
|
title = 'Scribunto_all_args',
|
||
|
args = { x = 1, y = 2, z = '|||' }
|
||
|
}
|
||
|
end
|
||
|
|
||
|
function p.testNewTemplateParserValue( frame )
|
||
|
return
|
||
|
frame:newTemplateParserValue{
|
||
|
title = 'Scribunto_all_args',
|
||
|
args = { x = 1, y = 2, z = 'blah' }
|
||
|
} : expand()
|
||
|
end
|
||
|
|
||
|
function p.testPreprocess( frame )
|
||
|
return frame:preprocess( '{{Scribunto_all_args|{{{1}}}}}|x=y' )
|
||
|
end
|
||
|
|
||
|
function p.testNewParserValue( frame )
|
||
|
return frame:newParserValue( '{{Scribunto_all_args|{{{1}}}}}|x=y' ):expand()
|
||
|
end
|
||
|
|
||
|
return p
|
||
|
!! endarticle
|
||
|
|
||
|
|
||
|
!! article
|
||
|
Module:Test2
|
||
|
!! text
|
||
|
return {
|
||
|
countBeans = function ()
|
||
|
return 3
|
||
|
end
|
||
|
}
|
||
|
!! endarticle
|
||
|
|
||
|
|
||
|
!! article
|
||
|
Module:Parse error
|
||
|
!! text
|
||
|
{{{{
|
||
|
!! endarticle
|
||
|
|
||
|
!! article
|
||
|
Template:Scribunto_all_args
|
||
|
!! text
|
||
|
{{#invoke:test|getParentArgs}}
|
||
|
!! endarticle
|
||
|
|
||
|
!! test
|
||
|
Scribunto: no such module
|
||
|
!! input
|
||
|
{{#invoke:foo|bar}}
|
||
|
!! result
|
||
|
<p><strong class="error"><span class="scribunto-error" id="mw-scribunto-error-0">Script error<!--Script error: No such module--></span></strong>
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: no such function
|
||
|
!! input
|
||
|
{{#invoke:test|blah}}
|
||
|
!! result
|
||
|
<p><strong class="error"><span class="scribunto-error" id="mw-scribunto-error-0">Script error<!--Script error: The function you specified did not exist.--></span></strong>
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: parse error
|
||
|
!! input
|
||
|
{{#invoke:Parse error|blah}}
|
||
|
!! result
|
||
|
<p><strong class="error"><span class="scribunto-error" id="mw-scribunto-error-0">Script error<!--Lua error in Module:Parse_error at line 1: unexpected symbol near '{'--></span></strong>
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: hello world
|
||
|
!! input
|
||
|
{{#invoke:test|hello}}
|
||
|
!! result
|
||
|
<p>hello
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: getAllArgs
|
||
|
!! input
|
||
|
{{#invoke:test|getAllArgs|x|y|z|a=1|b=2|c=3}}
|
||
|
!! result
|
||
|
<p>1=x, 2=y, 3=z, a=1, b=2, c=3
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: named numeric parameters
|
||
|
!! input
|
||
|
{{#invoke:test|getArg|2|a|2=b}}
|
||
|
{{#invoke:test|getArg|2|2=a|b}}
|
||
|
!! result
|
||
|
<p>b
|
||
|
b
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: template-style argument trimming
|
||
|
!! input
|
||
|
{{#invoke:test|getArgLength|2| x }}
|
||
|
{{#invoke:test|getArgLength|2|2= x }}
|
||
|
!! result
|
||
|
<p>3
|
||
|
1
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: missing argument
|
||
|
!! input
|
||
|
{{#invoke:test|getArgType|2}}
|
||
|
{{#invoke:test|getArgType|blah}}
|
||
|
!! result
|
||
|
<p>nil
|
||
|
nil
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: parent frame access
|
||
|
!! input
|
||
|
{{Scribunto_all_args|x|y|z|a = 1|b = 2|c = 3}}
|
||
|
!! result
|
||
|
<p>1=x, 2=y, 3=z, a=1, b=2, c=3
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: expandTemplate
|
||
|
!! input
|
||
|
{{#invoke:test|testExpandTemplate}}
|
||
|
!! result
|
||
|
<p>x=1, y=2, z=|||
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: newTemplateParserValue
|
||
|
!! input
|
||
|
{{#invoke:test|testNewTemplateParserValue}}
|
||
|
!! result
|
||
|
<p>x=1, y=2, z=blah
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: preprocess
|
||
|
!! input
|
||
|
{{#invoke:test|testPreprocess|foo}}
|
||
|
!! result
|
||
|
<p>1=foo|x=y
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: newParserValue
|
||
|
!! input
|
||
|
{{#invoke:test|testNewParserValue|foo}}
|
||
|
!! result
|
||
|
<p>1=foo|x=y
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: table return
|
||
|
!! input
|
||
|
{{#invoke:test|emptyTable}}
|
||
|
!! result
|
||
|
<p>table
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: require
|
||
|
!! input
|
||
|
{{#invoke:test|import}}
|
||
|
!! result
|
||
|
<p>3
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: access to a module imported at the chunk level
|
||
|
!! input
|
||
|
{{#invoke:test|bitop}}
|
||
|
!! result
|
||
|
<p>15
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: invoke instance upvalue isolation
|
||
|
!! input
|
||
|
{{#invoke:test|isolationTestUpvalue|1}}
|
||
|
{{#invoke:test|isolationTestUpvalue|2}}
|
||
|
{{#invoke:test|isolationTestUpvalue|3}}
|
||
|
!! result
|
||
|
<p>1
|
||
|
2
|
||
|
3
|
||
|
</p>
|
||
|
!! end
|
||
|
|
||
|
!! test
|
||
|
Scribunto: invoke instance global isolation
|
||
|
!! input
|
||
|
{{#invoke:test|isolationTestGlobal|1}}
|
||
|
{{#invoke:test|isolationTestGlobal|2}}
|
||
|
{{#invoke:test|isolationTestGlobal|3}}
|
||
|
!! result
|
||
|
<p>1
|
||
|
2
|
||
|
3
|
||
|
</p>
|
||
|
!! end
|
||
|
|