Mô đun:Name change validation
Giao diện
local p = {};
local msg = {
["firstCharCapital"] = "Tên mới phải bắt đầu bằng chữ hoa vì lý do kỹ thuật.",
["emptyName"] = "Tên %s không được để trống.",
["nameEqual"] = "Tên mới giống với tên cũ.",
["invalidCharacters"] = "Tên mới chứa (các) ký tự không hợp lệ."
}
local function ol_gen( params )
return mw.getCurrentFrame():expandTemplate{
title = 'Ordered list',
args = params
}
end
local function check_empty_name( val, name )
if val == nil or val == "" then
return string.format( msg["emptyName"], name );
end
return "";
end
local function check_fchar_capital( val )
if mw.ustring.match( val, "^[a-z]" ) then
return msg["firstCharCapital"];
end
return "";
end
local function check_equal_name( n_val, o_val )
if mw.ustring.lower( mw.ustring.gsub( n_val, "_", " " ) ) == mw.ustring.lower( mw.ustring.gsub( o_val, "_", " " ) ) then
return msg["nameEqual"];
end
return "";
end
local function check_name_contains_invalid_characters( val )
if mw.ustring.find( val, "[@#<>%[%]{}|]" ) then
return msg["invalidCharacters"];
end
return "";
end
function p.check_valid ( frame )
local args = frame.args;
local o_val = args[1];
local n_val = args[2];
local f_output = "";
local params = {}
local err_obj = {
check_empty_name( n_val, "mới" ),
check_empty_name( o_val, "cũ" ),
check_fchar_capital( n_val ),
check_equal_name( n_val, o_val ),
check_name_contains_invalid_characters( n_val )
}
for i = 1, #err_obj do
if err_obj[i] ~= "" then
params[#params + 1] = err_obj[i]
end
end
if #params > 0 then
f_output = "Các lỗi đã phát hiện:" .. ol_gen( params );
end
return f_output;
end
return p;