模組:Vgname/testcases
外观
![]() | 這是Module:Vgname的測試樣例頁,測試結果請見討論頁。 |
local languageList = mw.loadData('Module:Vgname/languages')
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local function refSeparator( a )
a = a or ''
local refPattern = '\127UNIQ%x+%-ref%-%x+%-QINU\127'
local p, _ = string.find( a, refPattern )
local contentPart, refPart
if p then
contentPart, refPart = string.sub( a, 1, p - 1 ), string.sub( a, p )
else
contentPart, refPart = a, ''
end
return contentPart, refPart
end
local function bold( a )
local cont, ref = refSeparator( a )
if yesno( _bold ) then
cont = '<b>' .. cont .. '</b>' .. ref
end
return cont
end
local function italic( a )
local cont, ref = refSeparator( a )
if yesno( _italic ) then
cont = '<i>' .. cont ..'</i>' .. ref
end
return cont
end
local function diff( args )
if yesno( _diff ) or args.na or args.eu then
return 'diff'
end
end
local function lang( langcode, a )
local span = mw.html.create( 'span' )
local content, ref = refSeparator( a )
span
:attr( 'lang', langcode )
:wikitext( '-{' .. content .. '}-' .. ref )
return tostring( span )
end
--------------------------------------------------------------------------
local function intro( args )
local ret = args[1]
ret = bold( ret )
if yesno( _bracket ) then
ret = '《' .. ret .. '》'
end
return ret
end
local function original( args )
local ret = ''
for i, v in ipairs( languageList ) do
if args[v[1]] then
if diff( args ) then
ret = v[3] .. ':' .. lang( v[1], args[v[1]] )
else
ret = v[2] .. ':' .. lang( v[1], args[v[1]] )
end
break
end
end
return ret
end
--------------------------------------------------------------------------
local p = {}
function p.main(frame)
local args = getArgs(frame)
_bold = args.bold or 'yes'
_italic = args.italic or 'yes'
_bracket = args.italic or 'yes'
return p._main(args)
end
function p._main(args)
return intro( args ) .. original( args )
end
return p