AddressUS v0.2.1 AddressUS.Parser

Parses US Addresses.

Summary

Functions

Abbreviates the state provided.

Example

iex> AddressUS.Parser.abbreviate_state("Wyoming")
"WY"
iex> AddressUS.Parser.abbreviate_state("wyoming")
"WY"
iex> AddressUS.Parser.abbreviate_state("Wyomin")
"Wyomin"
iex> AddressUS.Parser.abbreviate_state(nil)
nil

Removes non-numeric characters from the phone number and then returns the integer.

Examples

iex> AddressUS.Parser.clean_phone_number("(303) 310-7802")
3033107802

Removes country code and associated punctuation from the phone number.

Examples

iex> AddressUS.Parser.filter_country_code("+1 303-310-7802")
"303-310-7802"
iex> AddressUS.Parser.filter_country_code("+1 (303) 310-7802")
"(303) 310-7802"
iex> AddressUS.Parser.filter_country_code("+1-303-310-7802")
"303-310-7802"
iex> AddressUS.Parser.filter_country_code("1-303-310-7802")
"303-310-7802"

Converts the country to the 2 digit ISO country code. “US” is default.

Example

iex> AddressUS.Parser.get_country_code(nil)
"US"
iex> AddressUS.Parser.get_country_code("Afghanistan")
"AF"
iex> AddressUS.Parser.get_country_code("AF")
"AF"

Parses a raw address into all of its requisite parts according to USPS suggestions for address parsing.

Known Bugs

1) if street suffix is left off while parsing a full multi-line address,
it will fail unless there is a comma or newline separating the street
name from the city.

Examples

iex> AddressUS.Parser.parse_address("2345 S B Street, Denver, CO 80219")
%Address{city: "Denver", plus_4: nil, postal: "80219",
state: "CO", street: %Street{name: "B", pmb: nil,
post_direction: nil, pre_direction: "S", primary_number: "2345",
secondary_designator: nil, secondary_value: nil, suffix: "St"}}

Parses the raw street portion of an address into its requisite parts according to USPS suggestions for address parsing.

Examples

iex> AddressUS.Parser.parse_address_line("2345 S. Beade St")
%Street{name: "Beade", pmb: nil, post_direction: nil, pre_direction: "S",
primary_number: "2345", secondary_designator: nil, secondary_value: nil,
suffix: "St"}

Parses a csv, but instead of parsing at every comma, it only splits at the last one found. This allows it to handle situations where the first value parsed has a comma in it that is not part of what you want to parse.

Example

iex> AddressUS.Parser.parse_csv("test/test.csv")
%{"Something Horrible, (The worst place other than Wyoming)" => "SH",
"Wyoming" => "WY"}

Functions

abbreviate_state(raw_state)

Abbreviates the state provided.

Example

iex> AddressUS.Parser.abbreviate_state("Wyoming")
"WY"
iex> AddressUS.Parser.abbreviate_state("wyoming")
"WY"
iex> AddressUS.Parser.abbreviate_state("Wyomin")
"Wyomin"
iex> AddressUS.Parser.abbreviate_state(nil)
nil
clean_phone_number(phone)

Removes non-numeric characters from the phone number and then returns the integer.

Examples

iex> AddressUS.Parser.clean_phone_number("(303) 310-7802")
3033107802
filter_country_code(phone)

Removes country code and associated punctuation from the phone number.

Examples

iex> AddressUS.Parser.filter_country_code("+1 303-310-7802")
"303-310-7802"
iex> AddressUS.Parser.filter_country_code("+1 (303) 310-7802")
"(303) 310-7802"
iex> AddressUS.Parser.filter_country_code("+1-303-310-7802")
"303-310-7802"
iex> AddressUS.Parser.filter_country_code("1-303-310-7802")
"303-310-7802"
get_country_code(country_name)

Converts the country to the 2 digit ISO country code. “US” is default.

Example

iex> AddressUS.Parser.get_country_code(nil)
"US"
iex> AddressUS.Parser.get_country_code("Afghanistan")
"AF"
iex> AddressUS.Parser.get_country_code("AF")
"AF"
parse_address(messy_address)

Parses a raw address into all of its requisite parts according to USPS suggestions for address parsing.

Known Bugs

1) if street suffix is left off while parsing a full multi-line address,
it will fail unless there is a comma or newline separating the street
name from the city.

Examples

iex> AddressUS.Parser.parse_address("2345 S B Street, Denver, CO 80219")
%Address{city: "Denver", plus_4: nil, postal: "80219",
state: "CO", street: %Street{name: "B", pmb: nil,
post_direction: nil, pre_direction: "S", primary_number: "2345",
secondary_designator: nil, secondary_value: nil, suffix: "St"}}
parse_address_line(invalid)

Parses the raw street portion of an address into its requisite parts according to USPS suggestions for address parsing.

Examples

iex> AddressUS.Parser.parse_address_line("2345 S. Beade St")
%Street{name: "Beade", pmb: nil, post_direction: nil, pre_direction: "S",
primary_number: "2345", secondary_designator: nil, secondary_value: nil,
suffix: "St"}
parse_csv(csv)

Parses a csv, but instead of parsing at every comma, it only splits at the last one found. This allows it to handle situations where the first value parsed has a comma in it that is not part of what you want to parse.

Example

iex> AddressUS.Parser.parse_csv("test/test.csv")
%{"Something Horrible, (The worst place other than Wyoming)" => "SH",
"Wyoming" => "WY"}
title_case(value)