https://github.com/sweetiq/expostal
Elixir binding for Libpostal - a library for parsing/normalizing street addresses around the world. Powered by statistical NLP and open geo data.
https://github.com/sweetiq/expostal
address binding elixir geocoding libpostal nif parser
Last synced: 8 months ago
JSON representation
Elixir binding for Libpostal - a library for parsing/normalizing street addresses around the world. Powered by statistical NLP and open geo data.
- Host: GitHub
- URL: https://github.com/sweetiq/expostal
- Owner: SweetIQ
- License: mit
- Created: 2017-05-26T16:42:12.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-07-23T09:55:31.000Z (over 2 years ago)
- Last Synced: 2025-04-09T22:17:38.528Z (8 months ago)
- Topics: address, binding, elixir, geocoding, libpostal, nif, parser
- Language: Elixir
- Homepage:
- Size: 35.2 KB
- Stars: 98
- Watchers: 5
- Forks: 18
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
#  expostal
[](https://travis-ci.org/SweetIQ/expostal)
[](https://hex.pm/packages/expostal)
[](https://github.com/SweetIQ/expostal/blob/master/LICENSE)
Elixir binding for [Libpostal] - a library for parsing/normalizing street addresses around the world.
Powered by statistical NLP and open geo data.
Tutorial on how to write Elixir/Erlang NIF: http://cs.mcgill.ca/~mxia3/2017/06/18/tutorial-extending-elixir-with-c-using-NIF/
## Installation
The package can be installed by adding `expostal` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[{:expostal, "~> 0.2.0"}]
end
```
### Dependencies
Depends on [system-wide installation of libpostal](https://github.com/openvenues/libpostal#installation).
[Libpostal]: https://github.com/openvenues/libpostal
## Usage
Parsing an address:
```
iex> Expostal.parse_address("615 Rene Levesque Ouest, Montreal, QC, Canada")
%{city: "montreal", country: "canada", house_number: "615",
road: "rene levesque ouest", state: "qc"}
```
Expanding an address:
```
iex> Expostal.expand_address("781 Franklin Ave Crown Hts Brooklyn NY")
["781 franklin avenue crown heights brooklyn new york",
"781 franklin avenue crown heights brooklyn ny"]
```
## Documentation
View the docs on [https://hexdocs.pm/expostal](https://hexdocs.pm/expostal), or
generate the docs locally with `mix docs`.