Mô đun:LinkPhone
Giao diện

Bạn có thể muốn tạo một trang tài liệu cho mô đun Scribunto này. Biên tập viên sửa đổi có thể thử nghiệm trong các trang chỗ thử (tạo | sao) và trường hợp kiểm thử (tạo) của mô đun này. Các trang con của mô đun này. |
local i = {}
function i.LinkOnePhone(txt, demo)
local link = txt;
local othertxt = "";
local catprefix = '';
local catMissingCountryCode = '';
local catFormatIssue = '';
local output;
if demo == 'true' then
catprefix = ':';
end
-- any other text in brackets at the end is stored separately and ignored for the dialing number
if mw.ustring.gsub(txt, "(.*)( %([^0-9]*%))$", "%2") ~= txt then
othertxt = mw.ustring.gsub(txt, "(.*)( %([^0-9]*%))$", "%2");
txt = mw.ustring.gsub(txt, "(.*)( %([^0-9]*%))$", "%1");
end
-- Don't include "ext NNNN" in the link
link = mw.ustring.gsub(txt, " +[Ee][Xx][Tt] +%d+$", "");
-- Don't include " xNNNN" in the link
link = mw.ustring.gsub(link, " +x%d+$", "");
link = mw.ustring.gsub(link, " ", "");
link = mw.ustring.gsub(link, "'", "");
if link == "" then
return "";
end
if mw.ustring.sub(link, 1, 1) ~= '+' then
catMissingCountryCode = '[[' .. catprefix .. 'Thể loại:Địa điểm với số điện thoại không có mã nước]]<span class="phoneinfo" style="display:none;">NOCC</span>';
end
if mw.ustring.match(link,"^%+[%d-() ]+$") ~= nil then
output = '<span class="plainlinks nourlexpansion">[tel:' .. link .. ' ' .. txt .. ']</span>' .. othertxt;
elseif mw.ustring.match(link,"^%+[%d%u- ]+$") ~= nil then
local extra = mw.ustring.match(link, "%u[%d%u- ]+")
link = mw.ustring.gsub(link, "[A-C]", "2");
link = mw.ustring.gsub(link, "[D-F]", "3");
link = mw.ustring.gsub(link, "[G-I]", "4");
link = mw.ustring.gsub(link, "[J-L]", "5");
link = mw.ustring.gsub(link, "[M-O]", "6");
link = mw.ustring.gsub(link, "[P-S]", "7");
link = mw.ustring.gsub(link, "[T-V]", "8");
link = mw.ustring.gsub(link, "[W-Z]", "9");
extra = mw.ustring.gsub(extra, "[A-C]", "2");
extra = mw.ustring.gsub(extra, "[D-F]", "3");
extra = mw.ustring.gsub(extra, "[G-I]", "4");
extra = mw.ustring.gsub(extra, "[J-L]", "5");
extra = mw.ustring.gsub(extra, "[M-O]", "6");
extra = mw.ustring.gsub(extra, "[P-S]", "7");
extra = mw.ustring.gsub(extra, "[T-V]", "8");
extra = mw.ustring.gsub(extra, "[W-Z]", "9");
output = '<span class="plainlinks nourlexpansion">[tel:' .. link .. ' ' .. txt .. ' (' .. extra .. ')' ..']</span>' .. othertxt;
else
output = txt .. othertxt;
if mw.ustring.match('+' .. link,"^%+[%d-() ]+$") == nil then
catFormatIssue = '[[' .. catprefix .. 'Thể loại:Địa điểm có vấn đề định dạng số điện thoại]]<span class="phoneinfo" style="display:none;">FORMAT</span>';
end
end
if mw.ustring.match(link,"%(0%)") ~= nil then
catFormatIssue = '[[' .. catprefix .. 'Thể loại:Địa điểm có vấn đề định dạng số điện thoại]]<span class="phoneinfo" style="display:none;">FORMAT</span>';
end
if mw.title.getCurrentTitle().namespace == 0 or demo == 'true' then
output = output .. catFormatIssue .. catMissingCountryCode;
end
return output;
end
function i.LinkPhone(frame)
local demo = frame.args["demo"] or '';
local txtall = frame.args[1] or '' .. ',';
local txt = "";
local result = "";
local catprefix = '';
-- replace or / and with comma
txtall = mw.ustring.gsub(txtall, " or %+", ", +");
txtall = mw.ustring.gsub(txtall, " and %+", ", +");
for txt in mw.ustring.gmatch(txtall, "([^,]+)") do
result = result .. ", " .. i.LinkOnePhone(txt, demo)
end
result = mw.ustring.sub(result, 3, mw.ustring.len(result) );
return result;
end
return i;