coderifous / address_extractor

Find and/or replace mailing addresses in strings.

This URL has Read+Write access

name age message
file .gitignore Fri Nov 14 07:44:09 -0800 2008 initial import [coderifous]
file LICENSE.textile Fri Nov 14 07:44:09 -0800 2008 initial import [coderifous]
file README.textile Fri Nov 14 08:26:28 -0800 2008 fixed bug for when no address is found, added t... [coderifous]
file Rakefile Fri Nov 21 15:08:11 -0800 2008 touching gemspec [coderifous]
file address_extractor.gemspec Sat Feb 28 15:04:20 -0800 2009 --inline-source is no longer an option in rdoc ... [rmm5t]
directory lib/ Thu Nov 20 21:37:16 -0800 2008 Support longer street names, especially for str... [rmm5t]
directory test/ Thu Nov 20 21:37:16 -0800 2008 Support longer street names, especially for str... [rmm5t]
README.textile

AddressExtractor

Find and/or replace mailing addresses in strings.

Examples


require 'rubygems'
require 'address_extractor'
  
string = <<EOF
Please send the package to 123 Foo St., Someplace FL

My phone number is 123-1234 and St. Marc of Israel can be reached 
via mail at:
  123 Goob Avenue
  Apt 123
  Nice Town CA 123456
EOF

# Find first address
AddressExtractor.first_address(string) # => { :street1 => "123 Foo St.", :city => "Someplace", :state => "FL" }

# Find all addresses
AddressExtractor.find_addresses(string) # => 
  # [
  #   { :street1 => "123 Foo St.", :city => "Someplace", :state => "FL" }
  #   { :street1 => "123 Goob Avenue.", :street2 => "Apt 123", :city => "Nice Town", :state => "CA", :zip => "123456" }
  # ]
  
# Do a gsub on first address
new_string = AddressExtractor.replace_first_address(string) do |address_hash, address_string|
  map_link_to(address_string)
end

# Do a gsub on all addresses
new_string = AddressExtractor.replace_addresses(string) do |address_hash, address_string|
  map_link_to(address_string)
end

About

Written by Jim Garvin (coderifous) at RubyConf ’08 at the request of Chris Murphy (chmurph2) and Ryan McGeary (rmm5t) so they could use it in their awesome invitation and survey app.

You can use it, too.

The address-finding regex may be a bit naive, I’ll gladly accept pull requests that add to the test data and tests.