class Stockade::Lexemes::Phone

Phone lexeme

Constants

MASKS

Public Class Methods

regex() click to toggle source
# File lib/stockade/lexemes/phone.rb, line 10
def regex
  /
  #{MASKS
    .map { |mask| to_re(mask) }
    .join(" |\n")
  }
  /x
end

Private Class Methods

to_re(mask) click to toggle source

Convert less noisy phone mask syntax to regexes ### ### #### => (?:d{3}sd{3}sd{4})

# File lib/stockade/lexemes/phone.rb, line 23
def to_re(mask)
  '(?:' +
    mask
    .gsub('+', '\\\+')
    .gsub(/(#+)/) { |m| "\\d{#{m.size}}" }
    .gsub(' ', '\s')
    .gsub('(', '\(\s*')
    .gsub(')', '\\s*\)') +
    ')'
end