floere/phony

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

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

# Guinea (sometimes Guinea-Conakry; officially Republic of Guinea)
# http://www.itu.int/oth/T020200005B/en

land_ndcs_with_4_digits = [
  '3031', # Boké
  '3046', # Boussoura
  *['3041', '3043', '3045', '3047'], # Conakry
  '3069', # Delaba
  '3081', # Faranah
  '3024', # Fria
  '3097', # Guéckédou
  '3032', # Kamsar
  '3071', # Kankan
  '3061', # Kindia
  '3098', # Kissidougou
  '3051', # Labé
  '3094', # Macenta
  '3068', # Mamou
  '3091', # N'Zérékoré
  '3053', # Pita
  '3042'  # Sangoya
]

land_ndcs_with_5_digits = [
  '30613' # Télimélé
]

# NOTE We're not using *('660'..'669') since it does not freeze easily.
mobile_ndcs_with_3_digits = [
  '600', '601', '602', '603', '604', '605', '606', '607', '608', '609', # Sotelgui
  '620', '621', '622', '623', '624', '625', '626', '627', '628', '629', # Orange
  '650', '651', '652', '653', '654', '655', '656', '657', '658', '659', # Cellcom
  '630', '631', '632', '633', '634', '635', '636', '637', '638', '639', # Intercel
  '660', '661', '662', '663', '664', '665', '666', '667', '668', '669', # Areeba
]

Phony.define do
  country '224',
    one_of(land_ndcs_with_5_digits)   >> split(2, 2)    | # 2-2-2-2
    one_of(land_ndcs_with_4_digits)   >> split(2, 2)    | # 2-2-2-2
    one_of(mobile_ndcs_with_3_digits) >> split(2, 2, 2) | # 3-2-2-2
    match(/^(7\d{2})\d{6}/)           >> split(2, 2, 2) | # voip numbers
    fixed(3)                          >> split(2, 2, 2)
end