Mô đun:Name change validation

Bách khoa toàn thư mở Wikipedia
Tài liệu mô đun[tạo]
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;