local p ={}
local infoboxFunc
local getArgs
local argsIndex = 1
function partFunc2(index, origArgs, outputArgs, labelVF , argsSelect)
local prefix = index == 1 and '' or tostring(index)
if --labelVF == 'above' or
labelVF == 'header' then
--outputArgs[labelVF == 'above' and 'above' or ('header' .. argsIndex) ] = argsSelect[1]
outputArgs['header' .. argsIndex] = argsSelect[1]
argsIndex = argsIndex + 1
else
local key1, key2, val1, val2
key1, key2, argsIndex =
'label' .. argsIndex, 'data' .. argsIndex, argsIndex + 1
local lengthArgs=#argsSelect
local argPick = ''
for i=lengthArgs,1,-1 do
argPick = prefix .. argsSelect[i]
val2 = origArgs[ argPick ]
if val2 then
break
end
end
if val2 then
if type(labelVF) == 'function' then
val1 = labelVF(prefix,origArgs)
else
val1 = labelVF
end
outputArgs[key1]=val1
outputArgs[key2]=val2
end
end
end
local labelVFFuncMap = {}
function labelVFFunc(a,b,c)
local key = a .. "|" .. b .. "|" .. c
if labelVFFuncMap[key] ==nil then
labelVFFuncMap[key] = function(prefix,origArgs) return origArgs[prefix .. a] and b or c end
end
return labelVFFuncMap[key]
end
function partFunc(index,origArgs,outputArgs)
local isFirst = index == 1
local prefix = isFirst and '' or tostring(index)
local name = origArgs[prefix .. '名称']
local must = (isFirst or name )
if isFirst and not name then
name = '{{{名称}}}'
end
--mw.log('name',name)
if must then
local name2
if origArgs[prefix..'正式名称'] then
name2 = name .. '<br/>' .. origArgs[prefix..'正式名称']
else
name2 = name
end
partFunc2(index, origArgs, outputArgs, 'header' , {name2})
--
partFunc2(index, origArgs, outputArgs, '別稱', {'別稱'})
partFunc2(index, origArgs, outputArgs, '形式編號', {'形式番号','形式編號'})
partFunc2(index, origArgs, outputArgs, '型式編號', {'型式番号','型式編號'})
partFunc2(index, origArgs, outputArgs, '登錄編號', {'登録番号','登錄編號'})
partFunc2(index, origArgs, outputArgs, '艦籍編號', {'艦籍番号','艦籍編號'})
partFunc2(index, origArgs, outputArgs, '分類', {'分類'})
partFunc2(index, origArgs, outputArgs, '種別', {'種別'})
partFunc2(index, origArgs, outputArgs, '艦級', {'艦級'})
partFunc2(index, origArgs, outputArgs, '所屬', {'所属','所屬'})
partFunc2(index, origArgs, outputArgs, '設計', {'設計'})
partFunc2(index, origArgs, outputArgs, '開發', {'開発','開發'})
partFunc2(index, origArgs, outputArgs, '製造', {'製造'})
partFunc2(index, origArgs, outputArgs, '建造', {'建造'})
partFunc2(index, origArgs, outputArgs, '生產形態', {'生産形態','生產形態'})
partFunc2(index, origArgs, outputArgs, '全高', {'全高'})
partFunc2(index, origArgs, outputArgs, '頭頂高', {'頭頂高'})
partFunc2(index, origArgs, outputArgs, '全長', {'全長'})
partFunc2(index, origArgs, outputArgs, '宽度', {'宽度'})
partFunc2(index, origArgs, outputArgs, '翼長', {'翼長'})
partFunc2(index, origArgs, outputArgs, '全高', {'全高 (非人型)'})
partFunc2(index, origArgs, outputArgs, labelVFFunc('全備重量','本体重量','重量'), {'重量'})
partFunc2(index, origArgs, outputArgs, '全備重量', {'全備重量'})
partFunc2(index, origArgs, outputArgs, '出力', {'出力'})
partFunc2(index, origArgs, outputArgs, '能量输出', {'能量输出'})
partFunc2(index, origArgs, outputArgs, '推力', {'推力'})
partFunc2(index, origArgs, outputArgs, '传感器<br />有効半径', {'传感器'})
partFunc2(index, origArgs, outputArgs, labelVFFunc('最高速度','巡航速度','速度'), {'速度'})
partFunc2(index, origArgs, outputArgs, '最高速度', {'最高速度'})
partFunc2(index, origArgs, outputArgs, '續航距離', {'航続距離','續航距離'})
partFunc2(index, origArgs, outputArgs, '上昇限度', {'上昇限度'})
partFunc2(index, origArgs, outputArgs, '推進機關', {'推進機関','推進機關'})
partFunc2(index, origArgs, outputArgs, '裝甲材質', {'装甲','裝甲'})
partFunc2(index, origArgs, outputArgs, 'OS', {'OS'})
partFunc2(index, origArgs, outputArgs, '動力源', {'動力'})
partFunc2(index, origArgs, outputArgs, '燃料', {'燃料'})
partFunc2(index, origArgs, outputArgs, '武裝', {'武装','武裝'})
partFunc2(index, origArgs, outputArgs, labelVFFunc('携帯火器',' ', '副武裝'), {'携帯火器'})
partFunc2(index, origArgs, outputArgs, '使用彈種', {'使用弾種','使用彈種'})
partFunc2(index, origArgs, outputArgs, '有效射程', {'有効射程','有效射程'})
partFunc2(index, origArgs, outputArgs, '攻撃用裝備', {'攻撃用装備','攻撃用裝備'})
partFunc2(index, origArgs, outputArgs, '防禦用裝備', {'防御用装備','防禦用裝備'})
partFunc2(index, origArgs, outputArgs, '防禦裝備', {'防御装備','防禦裝備'})
partFunc2(index, origArgs, outputArgs, '性能級數', {'性能級數'})
partFunc2(index, origArgs, outputArgs, '技', {'技'})
partFunc2(index, origArgs, outputArgs, '必殺技', {'必殺技'})
partFunc2(index, origArgs, outputArgs, 'MMI', {'人机交互'})
partFunc2(index, origArgs, outputArgs, '搭載人數', {'乗員人数','搭載人數'})
partFunc2(index, origArgs, outputArgs, '主運用領域', {'主運用領域'})
partFunc2(index, origArgs, outputArgs, '主戰鬥距離', {'主戦闘距離','主戰鬥距離'})
partFunc2(index, origArgs, outputArgs, '搭載者', {'搭乗者','搭載者'})
partFunc2(index, origArgs, outputArgs, '艦長', {'艦長'})
partFunc2(index, origArgs, outputArgs, '搭載数', {'搭載数'})
partFunc2(index, origArgs, outputArgs, '主要搭载机', {'主要搭载机'})
partFunc2(index, origArgs, outputArgs, '主要塗裝', {'主要塗裝'})
partFunc2(index, origArgs, outputArgs, '其它', {'其它'})
end
end
function p.main(frame)
if not getArgs then getArgs = require('Module:Arguments').getArgs end
if not infoboxFunc then infoboxFunc = require('Module:Infobox').infobox end
local origArgs = getArgs(frame, { trim = true, --[[wrappers ={"Template:機動兵器","Template:機動兵器/sandbox"}]]})
local args = {}
args['templatestyles']='Module:Infobox/bordered/styles.css'
args['bodyclass']='bordered'
args['bodystyle']='clear:both; font-size:12px;'
args['title']='規格'
if origArgs['圖片'] then
args['image'] = frame:callParserFunction("#invoke:InfoboxImage",{
[1]="InfoboxImage",
['image']=origArgs['圖片'],
['alt']=origArgs['描述'],
['class']='skin-invert'
})
args['caption']=origArgs['描述']
end
for i=1,5 do
partFunc(i,origArgs,args)
end
--mw.logObject(origArgs)
--mw.logObject(args)
return tostring(infoboxFunc(args))
end
return p