Skip to content

Commit

Permalink
feat: apply distance_unit
Browse files Browse the repository at this point in the history
  • Loading branch information
pouriya committed Feb 12, 2024
1 parent 1464d22 commit 5490998
Show file tree
Hide file tree
Showing 253 changed files with 1,539 additions and 751 deletions.
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ assert_eq!(country.country_code(), 1);
assert_eq!(country.region(), Some(Region::Americas));
assert!(country.unofficial_name_list().contains(&"United States"));
assert!(country.spoken_language_list().contains(&"en"));
assert!(country.distance_unit().is_mi()); // KM/MI
assert!(country.g7_member() && country.g20_member());
assert!(!country.eu_member() && !country.eea_member()); // Not in `European Union` and `European Economic Area`
assert!(!country.gdpr_compliant()); // It's not GDPR compliant too!
Expand Down Expand Up @@ -62,9 +63,10 @@ assert_eq!(
* Phone number (E.164)
* GDPR compliance
* VAT (Value-added Tax) rate
* Distance unit
* ...
* Country Subdivisions. (Optional)
* GEO locations for countries and their subdivisions (Optional)
* Geolocations for countries and their subdivisions (Optional)
* Translations for countries and subdivisions (Optional)
* [`serde`](https://docs.rs/serde) integration (Optional)
* [`chrono`](https://docs.rs/chrono) integration (Optional)
Expand Down Expand Up @@ -254,7 +256,7 @@ let country = CountryIterator::new()
assert_eq!("Israel", country.iso_short_name());
```

### GEO
### Geo
Enable `geo` feature inside `Cargo.toml` file:
```toml
[dependencies]
Expand Down
11 changes: 9 additions & 2 deletions keshvar-code-generator/src/countries.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ pub fn generate_country(destination_file: &PathBuf, info: &CountryInfo) -> Resul
file.write_all(b"pub mod consts {\n")?;
file.write_all(b" #[allow(unused_imports)]\n")?;
file.write_all(
b" use crate::{Alpha2, Alpha3, GEC, IOC, CurrencyCode, Continent, Region, SubRegion, WorldRegion, WeekDay};\n\n",
b" use crate::{Alpha2, Alpha3, DistanceUnit, GEC, IOC, CurrencyCode, Continent, Region, SubRegion, WorldRegion, WeekDay};\n\n",
)?;
for (name, _type, value) in [
(
Expand Down Expand Up @@ -224,6 +224,11 @@ pub fn generate_country(destination_file: &PathBuf, info: &CountryInfo) -> Resul
"bool",
info.eu_member.unwrap_or(false).to_string(),
),
(
"const DISTANCE_UNIT",
"DistanceUnit",
format!("DistanceUnit::{:?}", info.distance_unit),
),
] {
file.write_all(format!(" pub {}: {} = {};\n", name, _type, value).as_bytes())?;
}
Expand Down Expand Up @@ -400,7 +405,7 @@ pub fn generate_country(destination_file: &PathBuf, info: &CountryInfo) -> Resul
file.write_all(b"}\n")?;
file.write_all(b"#[allow(unused_imports)]\n")?;
file.write_all(
b"use crate::{Alpha2, Alpha3, GEC, IOC, Country, CurrencyCode, Continent, Region, SubRegion, WorldRegion, WeekDay, VatRates};\n",
b"use crate::{Alpha2, Alpha3, DistanceUnit, GEC, IOC, Country, CurrencyCode, Continent, Region, SubRegion, WorldRegion, WeekDay, VatRates};\n",
)?;
file.write_all(b"#[allow(unused_imports)]\n")?;
file.write_all(b"use std::collections::HashMap;\n")?;
Expand Down Expand Up @@ -450,6 +455,7 @@ pub fn new() -> Country {{
eu_member: {},
eea_member: {},
vat_rates: {},
distance_unit: {},
}}
}}
"#,
Expand Down Expand Up @@ -512,6 +518,7 @@ pub fn new() -> Country {{
} else {
"None".to_string()
},
format!("DistanceUnit::{:?}", info.distance_unit),
)
.as_bytes(),
)?;
Expand Down
8 changes: 8 additions & 0 deletions keshvar-code-generator/src/structs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,14 @@ pub struct CountryInfo {
pub eea_member: Option<bool>,
pub eu_member: Option<bool>,
pub vat_rates: Option<VatRates>,
pub distance_unit: DistanceUnit,
}

#[derive(Clone, Debug, Copy, Serialize, Deserialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum DistanceUnit {
Km,
Mi,
}

#[derive(Clone, Debug, Serialize, Deserialize)]
Expand Down
9 changes: 6 additions & 3 deletions src/countries/ad.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
pub mod consts {
#[allow(unused_imports)]
use crate::{
Alpha2, Alpha3, Continent, CurrencyCode, Region, SubRegion, WeekDay, WorldRegion, GEC, IOC,
Alpha2, Alpha3, Continent, CurrencyCode, DistanceUnit, Region, SubRegion, WeekDay,
WorldRegion, GEC, IOC,
};

pub const ADDRESS_FORMAT: Option<&str> = None;
Expand Down Expand Up @@ -42,6 +43,7 @@ pub mod consts {
pub const G20_MEMBER: bool = false;
pub const EU_MEMBER: bool = false;
pub const EEA_MEMBER: bool = false;
pub const DISTANCE_UNIT: DistanceUnit = DistanceUnit::Km;
#[cfg(feature = "emojis")]
pub const EMOJI: &str = "🇦🇩";
#[cfg(feature = "translations")]
Expand Down Expand Up @@ -406,8 +408,8 @@ pub mod subdivisions {
}
#[allow(unused_imports)]
use crate::{
Alpha2, Alpha3, Continent, Country, CurrencyCode, Region, SubRegion, VatRates, WeekDay,
WorldRegion, GEC, IOC,
Alpha2, Alpha3, Continent, Country, CurrencyCode, DistanceUnit, Region, SubRegion, VatRates,
WeekDay, WorldRegion, GEC, IOC,
};
#[allow(unused_imports)]
use std::collections::HashMap;
Expand Down Expand Up @@ -589,5 +591,6 @@ pub fn new() -> Country {
eu_member: false,
eea_member: false,
vat_rates: None,
distance_unit: DistanceUnit::Km,
}
}
9 changes: 6 additions & 3 deletions src/countries/ae.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
pub mod consts {
#[allow(unused_imports)]
use crate::{
Alpha2, Alpha3, Continent, CurrencyCode, Region, SubRegion, WeekDay, WorldRegion, GEC, IOC,
Alpha2, Alpha3, Continent, CurrencyCode, DistanceUnit, Region, SubRegion, WeekDay,
WorldRegion, GEC, IOC,
};

pub const ADDRESS_FORMAT: Option<&str> =
Expand Down Expand Up @@ -51,6 +52,7 @@ pub mod consts {
pub const G20_MEMBER: bool = false;
pub const EU_MEMBER: bool = false;
pub const EEA_MEMBER: bool = false;
pub const DISTANCE_UNIT: DistanceUnit = DistanceUnit::Km;
#[cfg(feature = "emojis")]
pub const EMOJI: &str = "🇦🇪";
#[cfg(feature = "translations")]
Expand Down Expand Up @@ -878,8 +880,8 @@ pub mod subdivisions {
}
#[allow(unused_imports)]
use crate::{
Alpha2, Alpha3, Continent, Country, CurrencyCode, Region, SubRegion, VatRates, WeekDay,
WorldRegion, GEC, IOC,
Alpha2, Alpha3, Continent, Country, CurrencyCode, DistanceUnit, Region, SubRegion, VatRates,
WeekDay, WorldRegion, GEC, IOC,
};
#[allow(unused_imports)]
use std::collections::HashMap;
Expand Down Expand Up @@ -926,5 +928,6 @@ pub fn new() -> Country {
eu_member: false,
eea_member: false,
vat_rates: Some(VatRates{standard: 5.0, reduced: Vec::from([]), super_reduced: None, parking: None}),
distance_unit: DistanceUnit::Km,
}
}
9 changes: 6 additions & 3 deletions src/countries/af.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
pub mod consts {
#[allow(unused_imports)]
use crate::{
Alpha2, Alpha3, Continent, CurrencyCode, Region, SubRegion, WeekDay, WorldRegion, GEC, IOC,
Alpha2, Alpha3, Continent, CurrencyCode, DistanceUnit, Region, SubRegion, WeekDay,
WorldRegion, GEC, IOC,
};

pub const ADDRESS_FORMAT: Option<&str> = None;
Expand Down Expand Up @@ -42,6 +43,7 @@ pub mod consts {
pub const G20_MEMBER: bool = false;
pub const EU_MEMBER: bool = false;
pub const EEA_MEMBER: bool = false;
pub const DISTANCE_UNIT: DistanceUnit = DistanceUnit::Km;
#[cfg(feature = "emojis")]
pub const EMOJI: &str = "🇦🇫";
#[cfg(feature = "translations")]
Expand Down Expand Up @@ -760,8 +762,8 @@ pub mod subdivisions {
}
#[allow(unused_imports)]
use crate::{
Alpha2, Alpha3, Continent, Country, CurrencyCode, Region, SubRegion, VatRates, WeekDay,
WorldRegion, GEC, IOC,
Alpha2, Alpha3, Continent, Country, CurrencyCode, DistanceUnit, Region, SubRegion, VatRates,
WeekDay, WorldRegion, GEC, IOC,
};
#[allow(unused_imports)]
use std::collections::HashMap;
Expand Down Expand Up @@ -946,5 +948,6 @@ pub fn new() -> Country {
eu_member: false,
eea_member: false,
vat_rates: None,
distance_unit: DistanceUnit::Km,
}
}
9 changes: 6 additions & 3 deletions src/countries/ag.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
pub mod consts {
#[allow(unused_imports)]
use crate::{
Alpha2, Alpha3, Continent, CurrencyCode, Region, SubRegion, WeekDay, WorldRegion, GEC, IOC,
Alpha2, Alpha3, Continent, CurrencyCode, DistanceUnit, Region, SubRegion, WeekDay,
WorldRegion, GEC, IOC,
};

pub const ADDRESS_FORMAT: Option<&str> = None;
Expand Down Expand Up @@ -49,6 +50,7 @@ pub mod consts {
pub const G20_MEMBER: bool = false;
pub const EU_MEMBER: bool = false;
pub const EEA_MEMBER: bool = false;
pub const DISTANCE_UNIT: DistanceUnit = DistanceUnit::Km;
#[cfg(feature = "emojis")]
pub const EMOJI: &str = "🇦🇬";
#[cfg(feature = "translations")]
Expand Down Expand Up @@ -371,8 +373,8 @@ pub mod subdivisions {
}
#[allow(unused_imports)]
use crate::{
Alpha2, Alpha3, Continent, Country, CurrencyCode, Region, SubRegion, VatRates, WeekDay,
WorldRegion, GEC, IOC,
Alpha2, Alpha3, Continent, Country, CurrencyCode, DistanceUnit, Region, SubRegion, VatRates,
WeekDay, WorldRegion, GEC, IOC,
};
#[allow(unused_imports)]
use std::collections::HashMap;
Expand Down Expand Up @@ -419,5 +421,6 @@ pub fn new() -> Country {
eu_member: false,
eea_member: false,
vat_rates: None,
distance_unit: DistanceUnit::Km,
}
}
9 changes: 6 additions & 3 deletions src/countries/ai.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
pub mod consts {
#[allow(unused_imports)]
use crate::{
Alpha2, Alpha3, Continent, CurrencyCode, Region, SubRegion, WeekDay, WorldRegion, GEC, IOC,
Alpha2, Alpha3, Continent, CurrencyCode, DistanceUnit, Region, SubRegion, WeekDay,
WorldRegion, GEC, IOC,
};

pub const ADDRESS_FORMAT: Option<&str> = None;
Expand Down Expand Up @@ -42,6 +43,7 @@ pub mod consts {
pub const G20_MEMBER: bool = false;
pub const EU_MEMBER: bool = false;
pub const EEA_MEMBER: bool = false;
pub const DISTANCE_UNIT: DistanceUnit = DistanceUnit::Km;
#[cfg(feature = "emojis")]
pub const EMOJI: &str = "🇦🇮";
#[cfg(feature = "translations")]
Expand Down Expand Up @@ -239,8 +241,8 @@ pub mod subdivisions {
}
#[allow(unused_imports)]
use crate::{
Alpha2, Alpha3, Continent, Country, CurrencyCode, Region, SubRegion, VatRates, WeekDay,
WorldRegion, GEC, IOC,
Alpha2, Alpha3, Continent, Country, CurrencyCode, DistanceUnit, Region, SubRegion, VatRates,
WeekDay, WorldRegion, GEC, IOC,
};
#[allow(unused_imports)]
use std::collections::HashMap;
Expand Down Expand Up @@ -419,5 +421,6 @@ pub fn new() -> Country {
eu_member: false,
eea_member: false,
vat_rates: None,
distance_unit: DistanceUnit::Km,
}
}
9 changes: 6 additions & 3 deletions src/countries/al.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
pub mod consts {
#[allow(unused_imports)]
use crate::{
Alpha2, Alpha3, Continent, CurrencyCode, Region, SubRegion, WeekDay, WorldRegion, GEC, IOC,
Alpha2, Alpha3, Continent, CurrencyCode, DistanceUnit, Region, SubRegion, WeekDay,
WorldRegion, GEC, IOC,
};

pub const ADDRESS_FORMAT: Option<&str> = None;
Expand Down Expand Up @@ -43,6 +44,7 @@ pub mod consts {
pub const G20_MEMBER: bool = false;
pub const EU_MEMBER: bool = false;
pub const EEA_MEMBER: bool = false;
pub const DISTANCE_UNIT: DistanceUnit = DistanceUnit::Km;
#[cfg(feature = "emojis")]
pub const EMOJI: &str = "🇦🇱";
#[cfg(feature = "translations")]
Expand Down Expand Up @@ -428,8 +430,8 @@ pub mod subdivisions {
}
#[allow(unused_imports)]
use crate::{
Alpha2, Alpha3, Continent, Country, CurrencyCode, Region, SubRegion, VatRates, WeekDay,
WorldRegion, GEC, IOC,
Alpha2, Alpha3, Continent, Country, CurrencyCode, DistanceUnit, Region, SubRegion, VatRates,
WeekDay, WorldRegion, GEC, IOC,
};
#[allow(unused_imports)]
use std::collections::HashMap;
Expand Down Expand Up @@ -611,5 +613,6 @@ pub fn new() -> Country {
eu_member: false,
eea_member: false,
vat_rates: None,
distance_unit: DistanceUnit::Km,
}
}
9 changes: 6 additions & 3 deletions src/countries/am.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
pub mod consts {
#[allow(unused_imports)]
use crate::{
Alpha2, Alpha3, Continent, CurrencyCode, Region, SubRegion, WeekDay, WorldRegion, GEC, IOC,
Alpha2, Alpha3, Continent, CurrencyCode, DistanceUnit, Region, SubRegion, WeekDay,
WorldRegion, GEC, IOC,
};

pub const ADDRESS_FORMAT: Option<&str> = None;
Expand Down Expand Up @@ -43,6 +44,7 @@ pub mod consts {
pub const G20_MEMBER: bool = false;
pub const EU_MEMBER: bool = false;
pub const EEA_MEMBER: bool = false;
pub const DISTANCE_UNIT: DistanceUnit = DistanceUnit::Km;
#[cfg(feature = "emojis")]
pub const EMOJI: &str = "🇦🇲";
#[cfg(feature = "translations")]
Expand Down Expand Up @@ -413,8 +415,8 @@ pub mod subdivisions {
}
#[allow(unused_imports)]
use crate::{
Alpha2, Alpha3, Continent, Country, CurrencyCode, Region, SubRegion, VatRates, WeekDay,
WorldRegion, GEC, IOC,
Alpha2, Alpha3, Continent, Country, CurrencyCode, DistanceUnit, Region, SubRegion, VatRates,
WeekDay, WorldRegion, GEC, IOC,
};
#[allow(unused_imports)]
use std::collections::HashMap;
Expand Down Expand Up @@ -596,5 +598,6 @@ pub fn new() -> Country {
eu_member: false,
eea_member: false,
vat_rates: None,
distance_unit: DistanceUnit::Km,
}
}
9 changes: 6 additions & 3 deletions src/countries/ao.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
pub mod consts {
#[allow(unused_imports)]
use crate::{
Alpha2, Alpha3, Continent, CurrencyCode, Region, SubRegion, WeekDay, WorldRegion, GEC, IOC,
Alpha2, Alpha3, Continent, CurrencyCode, DistanceUnit, Region, SubRegion, WeekDay,
WorldRegion, GEC, IOC,
};

pub const ADDRESS_FORMAT: Option<&str> = None;
Expand Down Expand Up @@ -42,6 +43,7 @@ pub mod consts {
pub const G20_MEMBER: bool = false;
pub const EU_MEMBER: bool = false;
pub const EEA_MEMBER: bool = false;
pub const DISTANCE_UNIT: DistanceUnit = DistanceUnit::Km;
#[cfg(feature = "emojis")]
pub const EMOJI: &str = "🇦🇴";
#[cfg(feature = "translations")]
Expand Down Expand Up @@ -517,8 +519,8 @@ pub mod subdivisions {
}
#[allow(unused_imports)]
use crate::{
Alpha2, Alpha3, Continent, Country, CurrencyCode, Region, SubRegion, VatRates, WeekDay,
WorldRegion, GEC, IOC,
Alpha2, Alpha3, Continent, Country, CurrencyCode, DistanceUnit, Region, SubRegion, VatRates,
WeekDay, WorldRegion, GEC, IOC,
};
#[allow(unused_imports)]
use std::collections::HashMap;
Expand Down Expand Up @@ -700,5 +702,6 @@ pub fn new() -> Country {
eu_member: false,
eea_member: false,
vat_rates: None,
distance_unit: DistanceUnit::Km,
}
}
Loading

0 comments on commit 5490998

Please sign in to comment.