local i = {}

function i.LinkPhone(frame)
    local demo = frame.args["demo"] or '';
    local txt = frame.args[1] or '';
    local link = txt;
    local catprefix = '';
    local catMissingCountryCode = '';
    local catFormatIssue = '';
    local output;
    if demo == 'true' then
    	catprefix = ':';
    end
    link = mw.ustring.gsub(txt, ' ', '');
    link = mw.ustring.gsub(link, "'", "");
    if link == "" then
        return "";
    end
    if mw.ustring.sub(link, 1, 1) ~= '+' then
    	catMissingCountryCode = '[[' .. catprefix .. 'Category:缺失国家代码的电话]]'
    end
    if mw.ustring.match(link,"^%+[%d-() ]+$") ~= nil then
        output = '<span class="plainlinks nourlexpansion">[tel:' .. link .. ' ' .. txt ..']</span>';
    else
        output = txt;
        if mw.ustring.match('+' .. link,"^%+[%d-() ]+$") == nil then
            catFormatIssue = '[[' .. catprefix .. 'Category:格式有问题的电话]]'
        end
    end
    if mw.ustring.match(link,"%(0%)") ~= nil then
        catFormatIssue = '[[' .. catprefix .. 'Category:格式有问题的电话]]'
    end
    -- Note the quote ("") below is not empty and actually contains a hidden unicode character.
    -- if mw.ustring.match(link,"‎") ~= nil then
    --     catFormatIssue = '[[' .. catprefix .. 'Category:Listing with hidden unicode character]]'
    -- end
    if catFormatIssue ~= '' then
        output = txt;
    end
    return output .. catFormatIssue.. catMissingCountryCode;
end

return i;