class Lite::Address::Regexp
Attributes
list[R]
Public Class Methods
new(list)
click to toggle source
# File lib/lite/address/regexp.rb, line 9 def initialize(list) @list = list end
Public Instance Methods
avoid_unit()
click to toggle source
# File lib/lite/address/regexp.rb, line 13 def avoid_unit @avoid_unit ||= /(?:[^\#\w]+|\Z)/ix end
cardinal_code()
click to toggle source
# File lib/lite/address/regexp.rb, line 17 def cardinal_code @cardinal_code ||= begin values = list.cardinal_codes.keys ::Regexp.new(values.join('|'), ::Regexp::IGNORECASE) end end
cardinal_type()
click to toggle source
# File lib/lite/address/regexp.rb, line 24 def cardinal_type @cardinal_type ||= begin values = list.cardinal_types.each_with_object([]) do |(key, val), array| array << key array << [::Regexp.quote(val.gsub(/(\w)/, '\1.')), ::Regexp.quote(val)] end ::Regexp.new(values.join('|'), ::Regexp::IGNORECASE) end end
city_state()
click to toggle source
# File lib/lite/address/regexp.rb, line 35 def city_state @city_state ||= /(?:(?<city> [^\d,]+?)\W+(?<state> #{subdivision}))/ix end
corner()
click to toggle source
# File lib/lite/address/regexp.rb, line 39 def corner @corner ||= /(?:\band\b|\bat\b|&|@)/ix end
formal_address()
click to toggle source
# File lib/lite/address/regexp.rb, line 43 def formal_address @formal_address ||= /\A[^\w\x23]* #{number} \W* #{street}\W+ (?:#{unit}\W+)? #{place}\W*\z /ix end
informal_address()
click to toggle source
# File lib/lite/address/regexp.rb, line 52 def informal_address @informal_address ||= /\A\s* (?:#{unit} #{separator} #{place})? (?:#{number})? \W* #{street} #{avoid_unit} (?:#{unit} #{separator})? (?:#{place})? /ix end
intersectional_address()
click to toggle source
# File lib/lite/address/regexp.rb, line 62 def intersectional_address @intersectional_address ||= /\A\W* #{street}\W*? \s+#{corner}\s+ #{street}\W+ #{place}\W*\z /ix end
number()
click to toggle source
rubocop:disable Lint/MixedRegexpCaptureTypes
# File lib/lite/address/regexp.rb, line 72 def number # Utah and Wisconsin have a more elaborate system of block numbering # http://en.wikipedia.org/wiki/House_number#Block_numbers @number ||= /(?<number>(n|s|e|w)?\d+[.-]?\d*)(?=\D)/ix end
place()
click to toggle source
rubocop:enable Lint/MixedRegexpCaptureTypes
# File lib/lite/address/regexp.rb, line 79 def place @place ||= /(?:#{city_state}\W*)? (?:#{postal_code})?/ix end
postal_code()
click to toggle source
# File lib/lite/address/regexp.rb, line 83 def postal_code @postal_code ||= /(?:(?<postal_code>\d{5})(?:-?(?<postal_code_ext>\d{4}))?)/ix end
separator()
click to toggle source
# File lib/lite/address/regexp.rb, line 87 def separator @separator ||= /(?:\W+|\Z)/ix end
street()
click to toggle source
# File lib/lite/address/regexp.rb, line 91 def street @street ||= /(?: (?: (?<street> #{cardinal_type})\W+ (?<street_type> #{street_type})\b ) | (?:(?<prefix> #{cardinal_type})\W+)? (?: (?<street> [^,]*\d) (?:[^\w,]* (?<suffix> #{cardinal_type})\b) | (?<street> [^,]+) (?:[^\w,]+(?<street_type> #{street_type})\b) (?:[^\w,]+(?<suffix> #{cardinal_type})\b)? | (?<street> [^,]+?) (?:[^\w,]+(?<street_type> #{street_type})\b)? (?:[^\w,]+(?<suffix> #{cardinal_type})\b)? ) )/ix end
street_type()
click to toggle source
# File lib/lite/address/regexp.rb, line 113 def street_type @street_type ||= begin values = (list.street_types.keys + list.street_types.values).uniq ::Regexp.new(values.join('|'), ::Regexp::IGNORECASE) end end
subdivision()
click to toggle source
# File lib/lite/address/regexp.rb, line 120 def subdivision @subdivision ||= begin values = list.subdivision_codes.flatten.map { |code| ::Regexp.quote(code) } ::Regexp.new("\b#{values.join('|')}\b", ::Regexp::IGNORECASE) end end
unit()
click to toggle source
# File lib/lite/address/regexp.rb, line 127 def unit @unit ||= %r{ (?: (?: (?:#{unit_numbered} \W*) | (?<unit_prefix> \#)\W* ) (?<unit> [\w/-]+) ) | #{unit_unnumbered} }ix end
unit_numbered()
click to toggle source
# File lib/lite/address/regexp.rb, line 139 def unit_numbered @unit_numbered ||= begin values = list.unit_abbr_numbered_regexps.values /(?<unit_prefix>#{values.join('|')})(?![a-z])/ix end end
unit_unnumbered()
click to toggle source
# File lib/lite/address/regexp.rb, line 146 def unit_unnumbered @unit_unnumbered ||= begin values = list.unit_abbr_unnumbered_regexps.values /(?<unit_prefix>#{values.join('|')})\b/ix end end