模块:Items:修订间差异
来自星露谷物语扩展百科
更多操作
无编辑摘要 |
无编辑摘要 |
||
| 第2行: | 第2行: | ||
local zh = { | local zh = { | ||
nameById = mw.loadData("Module:Items/zh/ids/name"), | nameById = mw.loadData("Module:Items/zh/ids/name"), | ||
idByName = mw.loadData("Module:Items/zh/name/ids"), | idByName = mw.loadData("Module:Items/zh/name/ids"), | ||
descById = mw.loadData("Module:Items/zh/id/desc"), | descById = mw.loadData("Module:Items/zh/id/desc"), | ||
descByName = mw.loadData("Module:Items/zh/name/desc") | descByName = mw.loadData("Module:Items/zh/name/desc") | ||
} | } | ||
| 第21行: | 第21行: | ||
function p.getEnglishName(input) | function p.getEnglishName(input) | ||
local text = | local text = utils.getArg(input) | ||
if not text then return "" end | if not text then return "" end | ||
if overrides.name[text] then return overrides.name[text] end | text = text:lower():gsub("_", " ") | ||
if overrides.name[text] then | |||
return overrides.name[text] | |||
end | |||
local id = zh.idByName[text] | local id = zh.idByName[text] | ||
return id and en.nameById[id] or "" | return id and en.nameById[id] or "" | ||
| 第29行: | 第32行: | ||
function p.getChineseName(input) | function p.getChineseName(input) | ||
local text = | local text = utils.getArg(input) | ||
if not text then return "" end | if not text then return "" end | ||
local id = en.idByName[text] | local id = en.idByName[text] | ||
| 第36行: | 第39行: | ||
function p.getDescription(input) | function p.getDescription(input) | ||
local text = | local text = utils.getArg(input) | ||
if not text then return "" end | if not text then return "" end | ||
local text = text:lower():gsub("_", " ") | |||
if zh.descByName[text] then return zh.descByName[text] end | local tmp = overrides.desc[text] | ||
if tmp then return tmp end | |||
if zh.descByName[text] then | |||
return zh.descByName[text] | |||
end | |||
local id = en.idByName[text] | local id = en.idByName[text] | ||
if id then | if id then | ||
local | local tmp = zh.nameById[id] | ||
if | if tmp and zh.descByName[tmp] then | ||
return zh.descByName[ | return zh.descByName[tmp] | ||
end | end | ||
end | end | ||
if zh.descById[text] then return zh.descById[text] end | if zh.descById[text] then | ||
return zh.descById[text] | |||
end | |||
return "" | return "" | ||
end | end | ||
| 第54行: | 第63行: | ||
local args = frame.args | local args = frame.args | ||
if frame == mw.getCurrentFrame() then | if frame == mw.getCurrentFrame() then | ||
args = require('Module:Arguments').getArgs(frame, | args = require('Module:Arguments').getArgs(frame, { | ||
wrappers = 'Template:Name' | |||
}) | |||
end | end | ||
local inputName = args[1] or "" | local inputName = args[1] or "" | ||
local description = args[2] or "" | local description = args[2] or "" | ||
| 第64行: | 第74行: | ||
local alt = args.alt | local alt = args.alt | ||
local class = args.class | local class = args.class | ||
local imageName = inputName | local imageName = inputName | ||
if not utils.fileExists(inputName .. ".png") then | if not utils.fileExists(inputName .. ".png") then | ||
local englishName = p.getEnglishName(inputName) | local englishName = p.getEnglishName(inputName) | ||
if englishName and englishName ~= "" and | if englishName and englishName ~= "" and utils.fileExists(englishName .. ".png") then | ||
imageName = englishName | imageName = englishName | ||
else | else | ||
| 第75行: | 第84行: | ||
end | end | ||
end | end | ||
local linkText | local linkText | ||
if link then | if link then | ||
| 第82行: | 第91行: | ||
linkText = "[[" .. alt .. "]]" | linkText = "[[" .. alt .. "]]" | ||
else | else | ||
local chineseName = | local chineseName = '' -- reserved placeholder | ||
if chineseName and chineseName ~= "" then | if chineseName and chineseName ~= "" then | ||
linkText = "[[" .. chineseName .. "]]" | linkText = "[[" .. chineseName .. "]]" | ||
| 第89行: | 第98行: | ||
end | end | ||
end | end | ||
local cssClass = "nametemplate" | local cssClass = "nametemplate" | ||
if class == "inline" then cssClass = cssClass .. "inline" end | if class == "inline" then | ||
cssClass = cssClass .. "inline" | |||
end | |||
local result = string.format( | local result = string.format( | ||
'<span class="%s">[[File:%s.png|%spx|link=]] %s%s</span>', | |||
cssClass, | |||
imageName, | |||
size, | |||
linkText, | |||
description ~= "" and "(" .. description .. ")" or "" | |||
) | |||
return result | return result | ||
end | end | ||
| 第108行: | 第123行: | ||
}) | }) | ||
end | end | ||
local itemType = args[1] or "" | local itemType = args[1] or "" | ||
local itemName = args[2] or "" | local itemName = args[2] or "" | ||
local itemTypeLower = itemType:lower() | local itemTypeLower = itemType:lower() | ||
if itemTypeLower == "recipe" or itemTypeLower == "食谱" or itemTypeLower == "配方" then | |||
return "一个用于制作" .. itemName .. "的配方" | |||
end | |||
if itemTypeLower == "blueprint" or itemTypeLower == "图纸" then | |||
return "用于制造" .. itemName .. "的设计图" | |||
end | |||
return | return p.getDescription(itemType) | ||
end | end | ||
return p | return p | ||
2025年10月13日 (一) 20:06的版本
local utils = require("Module:Utils")
local zh = {
nameById = mw.loadData("Module:Items/zh/ids/name"),
idByName = mw.loadData("Module:Items/zh/name/ids"),
descById = mw.loadData("Module:Items/zh/id/desc"),
descByName = mw.loadData("Module:Items/zh/name/desc")
}
local en = {
nameById = mw.loadData("Module:Items/en/ids/name"),
idByName = mw.loadData("Module:Items/en/name/ids")
}
local overrides = {
name = mw.loadData("Module:Items/overrides/name"),
desc = mw.loadData("Module:Items/overrides/description")
}
local p = {}
function p.getEnglishName(input)
local text = utils.getArg(input)
if not text then return "" end
text = text:lower():gsub("_", " ")
if overrides.name[text] then
return overrides.name[text]
end
local id = zh.idByName[text]
return id and en.nameById[id] or ""
end
function p.getChineseName(input)
local text = utils.getArg(input)
if not text then return "" end
local id = en.idByName[text]
return id and zh.nameById[id] or ""
end
function p.getDescription(input)
local text = utils.getArg(input)
if not text then return "" end
local text = text:lower():gsub("_", " ")
local tmp = overrides.desc[text]
if tmp then return tmp end
if zh.descByName[text] then
return zh.descByName[text]
end
local id = en.idByName[text]
if id then
local tmp = zh.nameById[id]
if tmp and zh.descByName[tmp] then
return zh.descByName[tmp]
end
end
if zh.descById[text] then
return zh.descById[text]
end
return ""
end
function p.renderName(frame)
local args = frame.args
if frame == mw.getCurrentFrame() then
args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Name'
})
end
local inputName = args[1] or ""
local description = args[2] or ""
local size = args.size or "24"
local link = args.link
local alt = args.alt
local class = args.class
local imageName = inputName
if not utils.fileExists(inputName .. ".png") then
local englishName = p.getEnglishName(inputName)
if englishName and englishName ~= "" and utils.fileExists(englishName .. ".png") then
imageName = englishName
else
imageName = "Blank icon"
end
end
local linkText
if link then
linkText = "[[" .. link .. "]]"
elseif alt then
linkText = "[[" .. alt .. "]]"
else
local chineseName = '' -- reserved placeholder
if chineseName and chineseName ~= "" then
linkText = "[[" .. chineseName .. "]]"
else
linkText = "[[" .. inputName .. "]]"
end
end
local cssClass = "nametemplate"
if class == "inline" then
cssClass = cssClass .. "inline"
end
local result = string.format(
'<span class="%s">[[File:%s.png|%spx|link=]] %s%s</span>',
cssClass,
imageName,
size,
linkText,
description ~= "" and "(" .. description .. ")" or ""
)
return result
end
function p.renderDescription(frame)
local args = frame.args
if frame == mw.getCurrentFrame() then
args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Description'
})
end
local itemType = args[1] or ""
local itemName = args[2] or ""
local itemTypeLower = itemType:lower()
if itemTypeLower == "recipe" or itemTypeLower == "食谱" or itemTypeLower == "配方" then
return "一个用于制作" .. itemName .. "的配方"
end
if itemTypeLower == "blueprint" or itemTypeLower == "图纸" then
return "用于制造" .. itemName .. "的设计图"
end
return p.getDescription(itemType)
end
return p