module Core

Constants

PREFIXES

Public Instance Methods

clean(number=nil) click to toggle source
# File lib/piliponi/core.rb, line 27
def clean(number=nil)
  number.tr('^0-9','') if number
end
clean_prefix(number) click to toggle source
# File lib/piliponi/core.rb, line 41
def clean_prefix(number)
  number = "0#{number}" if number[0] != '0'; number
end
normalize(number, options={}) click to toggle source
# File lib/piliponi/core.rb, line 17
def normalize(number, options={})
  formats = [:pure, :local, :international]
  format = options[:format].intern

  raise FormatNotRecognizedException unless formats.include?(format)

  return send "_nf_#{format}", clean(number) if plausible?(number)
  raise InvalidPhoneNumberException
end
plausible?(number) click to toggle source
# File lib/piliponi/core.rb, line 5
def plausible? number
  return false if number.nil?

  clean_num = clean(number)
  size = clean_num.size

  ((clean_num[0] == "9" && size == 10) ||
  (clean_num[0..1] == "63" && size == 12) ||
  (clean_num[0..1] == "09" && size == 11)) &&
  telco?(clean_num) != "unknown"  
end
prefix(number=nil) click to toggle source
# File lib/piliponi/core.rb, line 35
def prefix number=nil
  hash = { '0' => [0,3], '6' => [2,4], '9' => [0,2] }
  start, finish = hash[number[0]].first, hash[number[0]].last
  clean_prefix(number[start..finish])
end
telco?(number=nil) click to toggle source
# File lib/piliponi/core.rb, line 31
def telco? number=nil
  PiliponiApi.new.lookup prefix(clean number)
end

Private Instance Methods

_nf_international(number) click to toggle source
# File lib/piliponi/core.rb, line 55
def _nf_international(number)
  '+63' << _nf_pure(number)
end
_nf_local(number) click to toggle source
# File lib/piliponi/core.rb, line 51
def _nf_local(number)
  '0' << _nf_pure(number)
end
_nf_pure(number) click to toggle source
# File lib/piliponi/core.rb, line 47
def _nf_pure(number)
  number[-10..-1]
end