floere/phony

View on GitHub
lib/phony/countries/brazil.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

# Brazilian phone numbers.
#
#
# NDC Reference
# https://www.gov.br/anatel/pt-br/regulado/numeracao/plano-de-numeracao-brasileiro

 # 11 #Sao Paulo
 # 12 #Sao Paulo
 # 13 #Sao Paulo
 # 14 #Sao Paulo
 # 15 #Sao Paulo
 # 16 #Sao Paulo
 # 17 #Sao Paulo
 # 18 #Sao Paulo
 # 19 #Sao Paulo
 #
 # 21 #Rio de Janeiro
 # 22 #Rio de Janeiro
 #
 # 24 #Rio de Janeiro
 #
 # 27 #Espírito Santo
 # 28 #Espírito Santo
 #
 # 31 #Minas Gerais
 # 32 #Minas Gerais
 # 33 #Minas Gerais
 # 34 #Minas Gerais
 # 35 #Minas Gerais
 # 36 #Minas Gerais
 # 37 #Minas Gerais
 # 38 #Minas Gerais
 #
 # 41 #Paraná
 # 42 #Paraná
 # 43 #Paraná
 # 44 #Paraná
 # 45 #Paraná
 # 46 #Paraná
 # 47 #Santa Catarina
 # 48 #Santa Catarina
 # 49 #Santa Catarina
 #
 # 51 #Rio Grande do Sul
 # 52 #Rio Grande do Sul
 # 53 #Rio Grande do Sul
 # 54 #Rio Grande do Sul
 # 55 #Rio Grande do Sul
 #
 # 61 #Distrito Federal
 # 62 #Goiânia
 # 63 #Tocantins
 # 64 #Goiânia
 # 65 #Mato Grosso
 # 66 #Mato Grosso
 # 67 #Mato Grosso do Sul
 # 68 #Acre
 # 69 #Rondônia
 #
 # 71 #Bahia
 # 72 #Bahia
 # 73 #Bahia
 # 74 #Bahia
 # 75 #Bahia
 #
 # 77 #Bahia
 # 78 #Bahia
 # 79 #Sergipe
 #
 # 81 #Pernambuco
 # 82 #Alagoas
 # 83 #Paraíba
 # 84 #Rio Grande do Norte
 # 85 #Ceará
 # 86 #Piauí
 # 87 #Pernambuco
 # 88 #Ceará
 # 89 #Piauí
 #
 # 91 #Pará
 # 92 #Amazonas
 # 93 #Pará
 # 94 #Pará
 # 95 #Roraima
 # 96 #Amapá
 # 97 #Amazonas
 # 98 #Maranhão
 # 99 #Maranhão

ndcs = "(11|12|13|14|15|16|17|18|19|21|22|24|27|28|31|32|33|34|35|36|37|38|41|42|43|44|45|46|47|48|49|51|52|53|54|55|61|62|63|64|65|66|67|68|69|71|72|73|74|75|77|78|79|81|82|83|84|85|86|87|88|89|91|92|93|94|95|96|97|98|99)"

service = %w{ 100 128 190 191 192 193 194 197 198 199 } # State specific numbers were not added. See http://www.brasil.gov.br/navegue_por/aplicativos/agenda

special_numbers_3_4 = %w{ 0800 }
special_numbers_4 = %w{ 3003 4003 4004 4020 }

Phony.define do
  country '55',
    match(/^#{ndcs}9\d{8}$/)     >> split(5,4) |
    match(/^#{ndcs}[2-5]\d{7}$/) >> split(4,4) |
    one_of(special_numbers_3_4)  >> split(3,4) |
    one_of(special_numbers_4)    >> split(4) |
    one_of(service)              >> split(3) |
    fixed(3)                     >> split(3)
end