模块:FileNameFix
本模块引自我的世界玩家社区Wiki,遵循CC BY SA 3.0协议;此文档并非引用内容
在“我的世界玩家社区Wiki”,此模块主要配合“图片格子/元模板”模板使用。
主要功能是将文件名中的半角符号转换为全角符号,用于规范化用户输入。
这个模块的功能与盐酱对“我的世界玩家社区Wiki”的模板设计有关——物品的材质图片命名规定为[模组名]-[物品名].png
的格式,同时冒号、感叹号等符号强制要求使用全角字符,以方便各个模板调用。
--[[
{{#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