Модуль:Phone

Материал из ultracity
Перейти к навигации Перейти к поиску

Для документации этого модуля может быть создана страница Модуль:Phone/doc

local p = {}

-- Форматирует телефон: +79237017325 -> +7 (923) 701-73-25
function p.format(frame)
    local s = frame.args[1] or ''
    return p._format(s)
end

function p._format(s)
    if not s then return '' end
    s = tostring(s):gsub('[^0-9+]', '')
    -- нормализация ведущей 8
    if s:sub(1,1) == '8' then
        s = '7' .. s:sub(2)
    end
    if s:sub(1,1) ~= '+' then
        if s:sub(1,1) == '7' then
            s = '+' .. s
        else
            return s
        end
    end
    local digits = s:gsub('[^0-9]', '')
    if #digits == 11 and digits:sub(1,1) == '7' then
        return string.format('+7 (%s) %s-%s-%s',
            digits:sub(2,4), digits:sub(5,7), digits:sub(8,9), digits:sub(10,11))
    end
    return s
end

return p