维护提醒

BWIKI 全站将于 9 月 3 日(全天)进行维护,期间无法编辑任何页面或发布新的评论。

全站通知:

模块:Name

来自星露谷物语维基
跳到导航 跳到搜索

本模块用于模板:Name,替代了曾用的 #switch 写法,提高了运行的效率。

大部分数据均由游戏中导出,如需手动添加,请补至页面模块:Name/overrides的末尾。

[ 查看 | 编辑 | 历史 | 刷新 ]上述文档的内容来自模块:Name/doc
local Helper = require("Module:Helper")

local Special = Helper.LazyLoad("Module:Name/data/overrides", true)
local NormalSpecial = Helper.LazyLoad("Module:Name/data/overrides", false)
local Name = Helper.LazyLoad("Module:Name/data/en", true)
local NormalName = Helper.LazyLoad("Module:Name/data/en", false)
local SVE = Helper.LazyLoad("Module:Name/data/expanded", true)
local NormalSVE = Helper.LazyLoad("Module:Name/data/expanded", false)

local p = {}

function p.name(frame)
    local text = frame.args[1]
    if not text then
        return ""
    end
    local lowerText = string.lower(text):gsub("_"," ")
    return Special[lowerText] or Name[lowerText] or ""
end

function p.nameSVE(frame)
    local text = frame.args[1]
    if not text then
        return ""
    end
    local lowerText = string.lower(text):gsub("_"," ")
    if SVE[lowerText] ~= nil then
    	return 'SVE:' .. SVE[lowerText] .. '|' .. SVE[lowerText]
    end
	local fallback = '' --'SVE:' .. text .. '|' .. text
    return Special[lowerText] or Name[lowerText] or fallback
end

function p.reverse_name(frame)
    local text = frame.args[1]
    if not text then
        return ""
    end
    
    local chineseText = text
    -- local chineseText = text:gsub("^%s*(.-)%s*$", "%1")
    
    for englishKey, chineseValue in pairs(NormalSpecial or {}) do
        if chineseValue == chineseText then
        	-- return englishKey:gsub(" ", "_")
            return englishKey
        end
    end
    
    for englishKey, chineseValue in pairs(NormalName or {}) do
        if chineseValue == chineseText then
            return englishKey
        end
    end
    
    return ""
end

function p.rawNameSVE(frame)
    local text = frame.args[1]
    if not text then
        return ""
    end
    local lowerText = string.lower(text):gsub("_"," ")
    return SVE[lowerText] or Special[lowerText] or Name[lowerText] or ""
end

-- =p.deafaultNameSVE{args={"大叫汉堡"}}
function p.deafaultNameSVE(frame)
    local text = frame.args[1]
    if not text then
        return ""
    end
    for key, value in pairs(NormalSVE) do
        if string.lower(value) == text then
            return key
        end
    end
    return ""
end

return p