نماد توضیحات توضیحات پودمان[ایجاد]
local i = {}   function i.LinkOnePhone(link, demo, txt)     if txt == nil then         txt = link     end     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(link, " +[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 .. 'رده:فهرست‌های دارای شماره تلفن بدون پیش‌شماره کشور]]<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 .. 'رده:فهرست‌های دارای خطای قالب‌بندی در شماره تلفن]]<span class="phoneinfo" style="display:none;">FORMAT</span>';         end     end     if mw.ustring.match(link,"%(0%)") ~= nil then         catFormatIssue = '[[' .. catprefix .. 'رده:فهرست‌های دارای خطای قالب‌بندی در شماره تلفن]]<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 linkall = frame.args[1] or '' .. ',';     local txtall = frame.args[2] or linkall;     local link = "";     local txt = "";     local result = "";     local catprefix = '';     -- replace or / and with comma     linkall = mw.ustring.gsub(linkall, " or %+", ", +");     linkall = mw.ustring.gsub(linkall, " and %+", ", +");     txtall = mw.ustring.gsub(txtall, " or %+", ", +");     txtall = mw.ustring.gsub(txtall, " and %+", ", +");     local links = mw.ustring.gmatch(linkall, "([^,]+)")     local txts = mw.ustring.gmatch(txtall, "([^,]+)")     local txt_array = {}     local index = 1     for txt in txts do         txt_array[index] = txt         index = index + 1     end     index = 1     for link in links do         result = result .. ", " .. i.LinkOnePhone(link , demo, txt_array[index])         index = index + 1     end     result = mw.ustring.sub(result, 3, mw.ustring.len(result) );     return result; end  return i;