Skip to content

Instantly share code, notes, and snippets.

@ga-wolf

ga-wolf/phone.rb Secret

Created July 6, 2015 06:33
Show Gist options
  • Save ga-wolf/8aee420f3ae75e0fbd00 to your computer and use it in GitHub Desktop.
Save ga-wolf/8aee420f3ae75e0fbd00 to your computer and use it in GitHub Desktop.
Phone Example
class PhoneNumber
attr_reader :number
def initialize(number)
@number = clean(number)
end
def area_code
number[0..2]
end
# technically, the central office (exchange) code
def exchange_code
number[3..5]
end
def subscriber_number
number[6..9]
end
def to_s
"(#{area_code}) #{exchange_code}-#{subscriber_number}"
end
private
def clean(number)
number = number.gsub(/[^0-9]/, "")
normalize(number)
end
def normalize(number)
if valid?(number)
number[/(\d{10})\z/, 1]
else
"0" * 10
end
end
def valid?(number)
return true if number.length == 10
return true if number.length == 11 && number.start_with?("1")
false
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment