模組:Vgname/sandbox
外观
![]() | 这是Module:Vgname(差异)的沙盒。 参见本模块的测试样例(运行)。 |
请在 Module:Vgname/languages定义新的外语
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local languageList = mw.loadData('Module:Vgname/languages')
--------------------------------------------------------------------------------
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
else
cont = cont .. ref
end
return cont
end
local function italic( a )
local cont, ref = refSeparator( a )
if yesno( _italic ) then
cont = '<i>' .. cont ..'</i>' .. ref
else
cont = cont .. ref
end
return cont
end
local function isDiff( args )
if yesno( args.diff ) or args.na or args.eu then
return true
end
end
local function lang( langcode, a )
local content, ref = refSeparator( a )
local span = mw.html.create( 'span' )
span
:attr( 'lang', langcode )
:wikitext( '-{' .. content .. '}-' )
return tostring( span ) .. ref
end
--------------------------------------------------------------------------------
local function intro( args )
local ret = args[1] or '{{PAGENAME}}'
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
ret = ( isDiff( args ) and v[3] or v[2] ) .. ':' .. lang( v[1], args[v[1]] )
break
end
end
return ret
end
local function english( args )
local ret
if args.na then
ret = '美版名:' .. italic( lang( 'en', args.na ) )
if args.eu then
ret = ret .. ',欧版名:' .. italic( lang( 'en', args.eu ) )
end
elseif args.eu then
ret = '欧版名:' .. italic( lang( 'en', args.eu ) )
elseif args.en then
ret = ( isDiff( args ) and '英文版名' or '英文名' ) .. ':' .. italic( lang( 'en', args.en ) )
end
return ret
end
--------------------------------------------------------------------------------
local getArgs = require('Module:Arguments').getArgs
local p = {}
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
function p._main(args)
local ret = ''
local list = { original( args ), english( args ) }
if original( args ) then
ret = ret .. original( args ) .. ','
end
if english( args ) then
ret = ret .. english( args) .. ','
end
ret = string.sub( ret, 1, -4 )
return intro( args ) .. ret
end
return p