欢迎来到东方归言录wiki!这里是为东方归言录玩家们提供帮助的wiki。

现在新的攻略组正在慢慢建设wiki,如果有心帮忙的话也可以为东方归言录wiki添砖加瓦提供支持,感谢你的帮助和支持。

特别注意:本站为东方归言录(国服)的wiki站,信息和讨论仅限于国服范畴。对日服与国际服仅有参考作用,具体详情还请参阅各自对应的wiki站点。

全站通知:

模块:FileNameFix

来自东方归言录WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

此模块的文档可以在模块:FileNameFix/doc创建

--[[
{{#invoke:FileNameFix|filefix|可能有问题的文件名}}
{{#invoke:FileNameFix|urlfix|可能有问题的文件名}}
这个东西主要用于修复包含“ \ / * : ? " < > | ”这些字符的页面自动生成的文件名
映射表:
“\ / * |”:“-”
“:”:“:”
“?”:“?”
“"”:“'”
]]
local nf = {}

function nf.filefix(frame)
	local new_args = nf._getParameters( frame.args, { 'name' } );
	local fname = new_args['name'] or '';
	fname = mw.ustring.gsub(fname, '/', '-');
	fname = mw.ustring.gsub(fname, '\\', '-');
	fname = mw.ustring.gsub(fname, '*', '-');
	fname = mw.ustring.gsub(fname, '|', '-');
	fname = mw.ustring.gsub(fname, ':', ':');
	fname = mw.ustring.gsub(fname, '?', '?');
	fname = mw.ustring.gsub(fname, '"', '\'');
	return fname
end

function nf.urlfix(frame)
	local new_args = nf._getParameters( frame.args, { 'name' } );
	local fname = new_args['name'] or '';
	fname = mw.ustring.gsub(fname, ' ', '_');
	fname = mw.ustring.gsub(fname, '\'', '%%27');
	fname = mw.ustring.gsub(fname, '&', '%%26');
	fname = mw.ustring.gsub(fname, '%%26#38;', '%%26');
	fname = mw.ustring.gsub(fname, '%%26#39;', '%%27');
	return fname
end

function nf._getParameters( frame_args, arg_list )
    local new_args = {};
    local index = 1;
    local value;
    
    for i,arg in ipairs( arg_list ) do
        value = frame_args[arg]
        if value == nil then
            value = frame_args[index];
            index = index + 1;
        end
        new_args[arg] = value;
    end
    
    return new_args;
end 

return nf