class TelBr
Attributes
telephone[R]
Public Class Methods
new(telephone)
click to toggle source
# File lib/telefonia_br.rb, line 5 def initialize(telephone) @telephone = telephone.to_s validate_telephone end
Public Instance Methods
ddd()
click to toggle source
# File lib/telefonia_br.rb, line 18 def ddd stripped[0,2] end
error()
click to toggle source
# File lib/telefonia_br.rb, line 14 def error @error end
formatted()
click to toggle source
# File lib/telefonia_br.rb, line 38 def formatted number.size == 8 ? "(#{ddd}) #{number[0,4]}-#{number[4,4]}" : "(#{ddd}) #{number[0,5]}-#{number[5,4]}" end
number()
click to toggle source
# File lib/telefonia_br.rb, line 30 def number stripped[2,9] end
region()
click to toggle source
# File lib/telefonia_br.rb, line 26 def region DDDS[ddd][:region] end
state()
click to toggle source
# File lib/telefonia_br.rb, line 22 def state DDDS[ddd][:state] end
stripped()
click to toggle source
# File lib/telefonia_br.rb, line 34 def stripped @telephone.scan(/[0-9]/).join end
type()
click to toggle source
# File lib/telefonia_br.rb, line 42 def type number_type end
valid?()
click to toggle source
# File lib/telefonia_br.rb, line 10 def valid? @error.empty? ? true : false end
Private Instance Methods
ddd_requires_nineth_digit?()
click to toggle source
# File lib/telefonia_br.rb, line 81 def ddd_requires_nineth_digit? DDDS[ddd][:ninth_digit] && is_mobile? end
is_mobile?()
click to toggle source
# File lib/telefonia_br.rb, line 77 def is_mobile? type == 'mobile' ? true : false end
number_type()
click to toggle source
# File lib/telefonia_br.rb, line 85 def number_type return 'invalid' if number.nil? || (number.size == 9 && number[0].to_i != 9) number.size == 9 ? eight_digits = number[1,8] : eight_digits = number case # SPECIAL CASES when MOBILE_SME_FIRST_2_DIGITS[DDDS[ddd][:state]].include?(eight_digits[0,2].to_i) return 'mobile sme' when MOBILE_SPECIAL_CASES_FIRST_4_DIGITS[DDDS[ddd][:state]].include?(eight_digits[0,4].to_i) return 'mobile' when MOBILE_SPECIAL_CASES_FIRST_2_DIGITS[DDDS[ddd][:state]].include?(eight_digits[0,2].to_i) return 'mobile' # DEFAULT CASES when eight_digits[0,2].to_i == 57 # 57 rural landline return 'rural landline' when (2..5).include?(eight_digits[0,1].to_i) # 2 to 5 landline return 'landline' when MOBILE_BANDS[DDDS[ddd][:state]].include?(eight_digits[0,2].to_i) return 'mobile' else return 'invalid' end end
should_have_eight_digits?()
click to toggle source
# File lib/telefonia_br.rb, line 69 def should_have_eight_digits? (!ddd_requires_nineth_digit? && number.size == 9) || (!is_mobile? && number.size == 9) end
should_have_nine_digits?()
click to toggle source
# File lib/telefonia_br.rb, line 73 def should_have_nine_digits? ddd_requires_nineth_digit? && is_mobile? && number.size == 8 end
valid_ddd?()
click to toggle source
# File lib/telefonia_br.rb, line 61 def valid_ddd? DDDS.keys.include?(ddd) end
valid_number_type?()
click to toggle source
# File lib/telefonia_br.rb, line 65 def valid_number_type? number_type != 'invalid' end
valid_string?()
click to toggle source
# File lib/telefonia_br.rb, line 57 def valid_string? [10, 11].include?(stripped.size) end
validate_telephone()
click to toggle source
# File lib/telefonia_br.rb, line 48 def validate_telephone return @error = "Invalid telephone" unless valid_string? return @error = "Invalid DDD" unless valid_ddd? return @error = "Invalid number" unless valid_number_type? return @error = "Number should have 8 digits" if should_have_eight_digits? return @error = "Number should have 9 digits" if should_have_nine_digits? return @error = "" end