#![allow(unused_braces)]
use self::de::Nullable;
use serde::{Deserialize, Serialize};
use std::fmt;
pub mod prelude;
pub mod entry;
pub use self::entry::{
parse_journal_dir, parse_journal_file, parse_status_file, Entry,
};
pub mod system;
pub mod body;
pub mod faction;
pub mod station;
pub mod ship;
pub mod de;
#[derive(Serialize, Deserialize, Debug, Copy, Clone, Eq)]
#[cfg_attr(feature = "with-sqlx", derive(sqlx::Type))]
#[serde(rename_all = "PascalCase")]
pub enum Government {
#[serde(alias = "$government_Anarchy;")]
Anarchy,
#[serde(alias = "$government_Communism;")]
Communism,
#[serde(alias = "$government_Confederacy;")]
Confederacy,
#[serde(alias = "$government_Cooperative;")]
Cooperative,
#[serde(alias = "$government_Corporate;")]
Corporate,
#[serde(alias = "$government_Democracy;")]
Democracy,
#[serde(alias = "$government_Dictatorship;")]
Dictatorship,
#[serde(alias = "$government_Feudal;")]
Feudal,
#[serde(alias = "$government_Patronage;")]
Patronage,
#[serde(alias = "$government_Prison;")]
Prison,
#[serde(alias = "$government_PrisonColony;")]
#[serde(alias = "Prison Colony")]
#[serde(alias = "Prison colony")]
PrisonColony,
#[serde(alias = "$government_Theocracy;")]
Theocracy,
#[serde(alias = "$government_Engineer;")]
#[serde(alias = "Workshop (Engineer)")]
Engineer,
#[serde(alias = "$government_Carrier;")]
Carrier,
#[serde(alias = "$government_Megaconstruction;")]
Megaconstruction,
#[serde(alias = "")]
#[serde(alias = "$government_None;")]
None,
}
impl fmt::Display for Government {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{:?}", self)
}
}
impl Nullable for Government {
fn is_null(&self) -> bool {
match self {
Government::None => true,
_ => false,
}
}
}
impl PartialEq for Government {
fn eq(&self, other: &Self) -> bool {
match (*other, *self) {
(Government::None, Government::None) => false,
(l, r) => l as u8 == r as u8,
}
}
}
#[test]
fn government() {
let high_tech = serde_json::from_str(
r#"
"Prison Colony"
"#,
)
.unwrap();
assert_eq!(Government::PrisonColony, high_tech);
let extraction = serde_json::from_str(
r#"
"$government_Dictatorship;"
"#,
)
.unwrap();
assert_eq!(Government::Dictatorship, extraction);
let megaconstruction: Government =
serde_json::from_str(r#""$government_Megaconstruction;""#).unwrap();
assert_eq!(Government::Megaconstruction, megaconstruction);
assert!(Government::None != Government::None);
assert!(serde_json::from_str::<Government>(r#""$government_None;""#)
.unwrap()
.is_null());
assert!(serde_json::from_str::<Government>(r#""None""#).unwrap().is_null());
assert!(serde_json::from_str::<Government>(r#""""#).unwrap().is_null());
}
#[derive(Serialize, Deserialize, Debug, Copy, Clone, Eq)]
#[cfg_attr(feature = "with-sqlx", derive(sqlx::Type))]
#[serde(rename_all = "PascalCase")]
pub enum Allegiance {
Alliance,
Empire,
Federation,
Guardian,
Independent,
#[serde(alias = "Pilots Federation")]
PilotsFederation,
PlayerPilots,
Thargoid,
FrontlineSolutions,
#[serde(alias = "")]
None,
}
impl fmt::Display for Allegiance {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{:?}", self)
}
}
impl Nullable for Allegiance {
fn is_null(&self) -> bool {
match self {
Allegiance::None => true,
_ => false,
}
}
}
impl PartialEq for Allegiance {
fn eq(&self, other: &Self) -> bool {
match (*other, *self) {
(Allegiance::None, Allegiance::None) => false,
(l, r) => l as u8 == r as u8,
}
}
}
#[test]
fn allegiance() {
let pilots_federation = serde_json::from_str(
r#"
"Pilots Federation"
"#,
)
.unwrap();
assert_eq!(Allegiance::PilotsFederation, pilots_federation);
let player_pilots = serde_json::from_str(
r#"
"PlayerPilots"
"#,
)
.unwrap();
assert_eq!(Allegiance::PlayerPilots, player_pilots);
let frontline: Allegiance =
serde_json::from_str(r#""FrontlineSolutions""#).unwrap();
assert_eq!(Allegiance::FrontlineSolutions, frontline);
assert!(Allegiance::None != Allegiance::None);
assert!(serde_json::from_str::<Allegiance>(r#""None""#).unwrap().is_null());
assert!(serde_json::from_str::<Allegiance>(r#""""#).unwrap().is_null());
}