4 releases

0.2.2 Jan 5, 2022
0.2.1 Jun 7, 2019
0.2.0 Apr 5, 2019
0.1.0 Apr 4, 2019

#163 in Internationalization (i18n)

Download history 29/week @ 2023-10-31 74/week @ 2023-11-07 51/week @ 2023-11-14 70/week @ 2023-11-21 282/week @ 2023-11-28 108/week @ 2023-12-05 98/week @ 2023-12-12 57/week @ 2023-12-19 49/week @ 2023-12-26 5/week @ 2024-01-02 31/week @ 2024-01-09 77/week @ 2024-01-16 103/week @ 2024-01-23 30/week @ 2024-01-30 5/week @ 2024-02-06 61/week @ 2024-02-13

224 downloads per month

AGPL-3.0

100KB
815 lines

build doc

address-formatter-rs

Universal international address formatter in Rust - data from https://github.com/OpenCageData/address-formatting

This crate is based on the amazing work of OpenCage Data who collected so many international formats of postal addresses.

The implementation is a port of the PHP, perl and js implementation of the Opencage configurations.

This is used by mimirsbrunn, a geocoder, to have nicely formatted addreses and POI.

⚠️ don't forget to initialize & update the git submodules, as they held the opencage configurations.

git submodule update --init

Usage

Add address-formatter in the Cargo.toml.

#[macro_use] extern crate maplit; // just to ease the Place creation

use address_formatter::{Component, Formatter};
use Component::*;
let formatter = Formatter::default();

let data = hashmap!(
    City => "Toulouse",
    Country => "France",
    CountryCode => "FR",
    County => "Toulouse",
    HouseNumber => "17",
    Neighbourhood => "Lafourguette",
    Postcode => "31000",
    Road => "Rue du Médecin-Colonel Calbairac",
    State => "Midi-Pyrénées",
    Suburb => "Toulouse Ouest",
);

assert_eq!(
formatter.format(data).unwrap(),
r#"17 Rue du Médecin-Colonel Calbairac
31000 Toulouse
France
"#.to_owned()
)

Developing

You need an up to date rust version:

rustup update

To run the tests (especially the one based on all the opencage tests cases).

cargo test

TODO

  • There here are still some failing tests on corner cases
  • Abbreviation handling

Dependencies

~10MB
~200K SLoC