class AusPhones
Constants
- CNF
- VERSION
Attributes
input[R]
phone_number[R]
Public Class Methods
new(input='')
click to toggle source
# File lib/aus_phones.rb, line 11 def initialize(input='') raise RuntimeError.new('Not a string') unless input.is_a? String @input = input @phone_number = build end
Public Instance Methods
area_code()
click to toggle source
# File lib/aus_phones.rb, line 77 def area_code phone_number.area_code end
carrier()
click to toggle source
# File lib/aus_phones.rb, line 69 def carrier phone_number.carrier end
description()
click to toggle source
# File lib/aus_phones.rb, line 73 def description phone_number.description end
dial_domestic()
click to toggle source
# File lib/aus_phones.rb, line 85 def dial_domestic if (phone_number.number.to_s.size == 0) return nil else "#{phone_number.area_code}#{phone_number.number}" end end
dial_international()
click to toggle source
# File lib/aus_phones.rb, line 93 def dial_international if (phone_number.area_code.start_with?('0') || phone_number.number.start_with?('0')) dial = "#{phone_number.area_code}#{phone_number.number}" return dial.sub(/^0/, CNF.prefix) else return nil end end
dial_local()
click to toggle source
# File lib/aus_phones.rb, line 81 def dial_local phone_number.number end
format_domestic()
click to toggle source
# File lib/aus_phones.rb, line 124 def format_domestic if phone_number.number.to_s.size == 0 nil else if phone_number.area_code.to_s.size == 0 format_local else "(#{phone_number.area_code}) #{format_local}" end end end
format_international()
click to toggle source
# File lib/aus_phones.rb, line 136 def format_international if phone_number.area_code.start_with?('0') area_code = phone_number.area_code.sub(/^0/, '') number = format_local return "+#{CNF.prefix} (#{area_code}) #{number}" elsif phone_number.number.start_with?('0') number = format_local number = number.sub(/^0/, '') return "+#{CNF.prefix} #{number}" else return nil end end
format_local()
click to toggle source
# File lib/aus_phones.rb, line 102 def format_local if (phone_number.number.to_s.size == 0) return nil elsif (phone_number.number.to_s.size == 12) return phone_number.number.sub(/^([0-9]{4})([0-9]{4})([0-9]{4})$/, '\1 \2 \3') elsif (phone_number.number.to_s.size == 11) return phone_number.number.sub(/^([0-9]{4})([0-9]{3})([0-9]{4})$/, '\1 \2 \3') elsif (phone_number.number.to_s.size == 10) return phone_number.number.sub(/^([0-9]{4})([0-9]{3})([0-9]{3})$/, '\1 \2 \3') elsif (phone_number.number.to_s.size == 9) return phone_number.number.sub(/^([0-9]{3})([0-9]{3})([0-9]{3})$/, '\1 \2 \3') elsif (phone_number.number.to_s.size == 8) return phone_number.number.sub(/^([0-9]{4})([0-9]{4})$/, '\1 \2') elsif (phone_number.number.to_s.size == 7) return phone_number.number.sub(/^([0-9]{3})([0-9]{4})$/, '\1 \2') elsif (phone_number.number.to_s.size == 6) return phone_number.number.sub(/^([0-9]{3})([0-9]{3})$/, '\1 \2') elsif (phone_number.number.to_s.size < 6) return phone_number.number end end
is_data?()
click to toggle source
# File lib/aus_phones.rb, line 45 def is_data? phone_number.type == 'data' end
is_emergency?()
click to toggle source
# File lib/aus_phones.rb, line 25 def is_emergency? phone_number.type == 'emergency' end
is_fictitious?()
click to toggle source
# File lib/aus_phones.rb, line 57 def is_fictitious? phone_number.type == 'fictitious' end
is_form_valid?()
click to toggle source
# File lib/aus_phones.rb, line 21 def is_form_valid? phone_number.is_form_valid end
is_landline?()
click to toggle source
# File lib/aus_phones.rb, line 33 def is_landline? phone_number.type == 'landline' end
is_mobile?()
click to toggle source
# File lib/aus_phones.rb, line 29 def is_mobile? phone_number.type == 'mobile' end
is_nongeo?()
click to toggle source
# File lib/aus_phones.rb, line 49 def is_nongeo? phone_number.type == 'nongeo' end
is_satellite?()
click to toggle source
# File lib/aus_phones.rb, line 37 def is_satellite? phone_number.type == 'satellite' end
is_test?()
click to toggle source
# File lib/aus_phones.rb, line 53 def is_test? phone_number.type == 'test' end
is_valid?()
click to toggle source
# File lib/aus_phones.rb, line 17 def is_valid? phone_number.is_valid end
is_voip?()
click to toggle source
# File lib/aus_phones.rb, line 41 def is_voip? phone_number.type == 'voip' end
region()
click to toggle source
# File lib/aus_phones.rb, line 65 def region phone_number.region end
type()
click to toggle source
# File lib/aus_phones.rb, line 61 def type phone_number.type end
Private Instance Methods
build()
click to toggle source
# File lib/aus_phones.rb, line 153 def build # Create a data structure phone_number = OpenStruct.new( is_valid: false, is_form_valid: false, type: nil, region: nil, carrier: nil, description: nil, area_code: nil, number: nil ) # Clean out non standard characters cleaned = input.gsub(/[^0-9\+]/, '') # Remove international prefix cleaned = cleaned.gsub(/\+#{CNF.prefix}/, '0') # Match Number to profile CNF.phones.each do |profile| m = Regexp.new(profile[:pattern]).match(cleaned) if m then phone_number.is_valid = true phone_number.is_form_valid = profile[:valid] phone_number.area_code = profile[:area_code] phone_number.type = profile[:type] phone_number.carrier = profile[:carrier] phone_number.state = profile[:state] phone_number.region = profile[:region] phone_number.description = profile[:description] phone_number.number = m[1] end end phone_number end