class Telefon

Constants

DEFAULTS
VERSION
WITHOUT_AREA_CODE
WITH_AREA_CODE

Public Class Methods

convert(number, options = {}) click to toggle source
# File lib/telefon.rb, line 14
def self.convert(number, options = {})
  new(options).convert(number)
end
new(options = {}) click to toggle source
# File lib/telefon.rb, line 18
def initialize(options = {})
  @options = DEFAULTS.merge(options)
end

Public Instance Methods

convert(number) click to toggle source
# File lib/telefon.rb, line 22
def convert(number)
  code = @options[:country_code]
  ext = @options[:extension]

  result = ""

  result << country_code(code) if code
  result << convert_to_phone_number(number.to_s)
  result << extension(ext) if ext

  return result
end

Private Instance Methods

convert_to_phone_number(number) click to toggle source
# File lib/telefon.rb, line 41
def convert_to_phone_number(number)
  if @options[:area_code]
    return convert_with_area_code(number)
  else
    return convert_without_area_code(number)
  end
end
convert_with_area_code(number) click to toggle source
# File lib/telefon.rb, line 49
def convert_with_area_code(number)
  return number.gsub(WITH_AREA_CODE, "(\\1) \\2#{ delimiter }\\3")
end
convert_without_area_code(number) click to toggle source
# File lib/telefon.rb, line 53
def convert_without_area_code(number)
  result = number.gsub(WITHOUT_AREA_CODE, "\\1#{ delimiter }\\2#{ delimiter }\\3")
  result.slice!(0, delimiter.size) if start_with_delimiter?(result)

  return result
end
country_code(code) click to toggle source
# File lib/telefon.rb, line 37
def country_code(code)
  return "+#{ code }#{ delimiter }"
end
delimiter() click to toggle source
# File lib/telefon.rb, line 68
def delimiter
  return @options[:delimiter]
end
extension(ext) click to toggle source
# File lib/telefon.rb, line 60
def extension(ext)
  return " x #{ ext }"
end
start_with_delimiter?(number) click to toggle source
# File lib/telefon.rb, line 64
def start_with_delimiter?(number)
  delimiter && number.start_with?(delimiter)
end