Skip to content

lujanfernaud/regular-expressions-advanced

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Upcase: Regular Expressions

Tying it all Together

Exercise for the Regular Expressions course.

Final Code

# phone_number_formatter.rb

class PhoneNumberFormatter
  PHONE = %r{
    (?<country_code>\+\d+)?
    .*?
    (?<area_code>\d{3})
    .*?
    (?<exchange>\d{3})
    .*?
    (?<subscriber>\d{4})
  }x # Ignore spaces inside the regex.

  def initialize(number)
    @number = number
  end

  def format_number
    return @number unless @number =~ PHONE

    @number = @number.match(PHONE)

    "#{country_code}#{area_code}#{exchange}#{subscriber}"
  end

  private

  def country_code
    @number[:country_code] ? "#{@number[:country_code]} " : ""
  end

  def area_code
    "(#{@number[:area_code]}) "
  end

  def exchange
    "#{@number[:exchange]}-"
  end

  def subscriber
    @number[:subscriber]
  end
end

Additional Resources

About

Regex with named captures

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •