Module: Core

Included in:
Piliponi, SingletonMethodSupport::SingletonMethods
Defined in:
lib/piliponi/core.rb,
lib/piliponi/piliponi_api.rb

Defined Under Namespace

Classes: PiliponiApi

Constant Summary collapse

PREFIXES =
YAML.load_file(File.join(File.dirname(__FILE__),"config/telco.yml"))

Instance Method Summary collapse

Instance Method Details

#clean(number = nil) ⇒ Object



27
28
29
# File 'lib/piliponi/core.rb', line 27

def clean(number=nil)
  number.tr('^0-9','') if number
end

#clean_prefix(number) ⇒ Object



41
42
43
# File 'lib/piliponi/core.rb', line 41

def clean_prefix(number)
  number = "0#{number}" if number[0] != '0'; number
end

#normalize(number, options = {}) ⇒ Object



17
18
19
20
21
22
23
24
25
# 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) ⇒ Boolean

Returns:

  • (Boolean)


5
6
7
8
9
10
11
12
13
14
15
# 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) ⇒ Object



35
36
37
38
39
# 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) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/piliponi/core.rb', line 31

def telco? number=nil
  PiliponiApi.new.lookup prefix(clean number)
end