quake_log_parser_lib 0.1.9

A Sample Lib to Parse Quake Game Log.
Documentation
use std::fmt;

use crate::config::static_config::{StaticConfigParameter, STATIC_CONFIG};

#[derive(Debug, Copy, Clone)]
pub enum DeathCauses {
    Unknown,
    Shotgun,
    Gauntlet,
    MachineGun,
    Grenade,
    GrenadeSplash,
    Rocket,
    RocketSplash,
    Plasma,
    PlasmaSplash,
    Railgun,
    Lightning,
    Bfg,
    BfgSplash,
    Water,
    Slime,
    Lava,
    Crush,
    Telefrag,
    Falling,
    Suicide,
    TargetLaser,
    TriggerHurt,
    Nail,
    Chaingun,
    ProximityMine,
    Kamikaze,
    Juiced,
    Grapple
}

impl fmt::Display for DeathCauses {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match self {
            DeathCauses::Unknown => write!(f, "MOD_UNKNOWN"),
            DeathCauses::Shotgun => write!(f, "MOD_SHOTGUN"),
            DeathCauses::Gauntlet => write!(f, "MOD_GAUNTLET"),
            DeathCauses::MachineGun => write!(f, "MOD_MACHINEGUN"),
            DeathCauses::Grenade => write!(f, "MOD_GRENADE"),
            DeathCauses::GrenadeSplash => write!(f, "MOD_GRENADE_SPLASH"),
            DeathCauses::Rocket => write!(f, "MOD_ROCKET"),
            DeathCauses::RocketSplash => write!(f, "MOD_ROCKET_SPLASH"),
            DeathCauses::Plasma => write!(f, "MOD_PLASMA"),
            DeathCauses::PlasmaSplash => write!(f, "MOD_PLASMA_SPLASH"),
            DeathCauses::Railgun => write!(f, "MOD_RAILGUN"),
            DeathCauses::Lightning => write!(f, "MOD_LIGHTNING"),
            DeathCauses::Bfg => write!(f, "MOD_BFG"),
            DeathCauses::BfgSplash => write!(f, "MOD_BFG_SPLASH"),
            DeathCauses::Water => write!(f, "MOD_WATER"),
            DeathCauses::Slime => write!(f, "MOD_SLIME"),
            DeathCauses::Lava => write!(f, "MOD_LAVA"),
            DeathCauses::Crush => write!(f, "MOD_CRUSH"),
            DeathCauses::Telefrag => write!(f, "MOD_TELEFRAG"),
            DeathCauses::Falling => write!(f, "MOD_FALLING"),
            DeathCauses::Suicide => write!(f, "MOD_SUICIDE"),
            DeathCauses::TargetLaser => write!(f, "MOD_TARGET_LASER"),
            DeathCauses::TriggerHurt => write!(f, "MOD_TRIGGER_HURT"),
            DeathCauses::Nail => write!(f, "MOD_NAIL"),
            DeathCauses::Chaingun => write!(f, "MOD_CHAINGUN"),
            DeathCauses::ProximityMine => write!(f, "MOD_PROXIMITY_MINE"),
            DeathCauses::Kamikaze => write!(f, "MOD_KAMIKAZE"),
            DeathCauses::Juiced => write!(f, "MOD_JUICED"),
            DeathCauses::Grapple => write!(f, "MOD_GRAPPLE")
        }
    }
}

impl DeathCauses {

    pub fn from_str(s: &str) -> Result<Self, String> {

        match s {
            "MOD_UNKNOWN" => Ok(DeathCauses::Unknown),
            "MOD_SHOTGUN" => Ok(DeathCauses::Shotgun),
            "MOD_GAUNTLET" => Ok(DeathCauses::Gauntlet),
            "MOD_MACHINEGUN" => Ok(DeathCauses::MachineGun),
            "MOD_GRENADE" => Ok(DeathCauses::Grenade),
            "MOD_GRENADE_SPLASH" => Ok(DeathCauses::GrenadeSplash),
            "MOD_ROCKET" => Ok(DeathCauses::Rocket),
            "MOD_ROCKET_SPLASH" => Ok(DeathCauses::RocketSplash),
            "MOD_PLASMA" => Ok(DeathCauses::Plasma),
            "MOD_PLASMA_SPLASH" => Ok(DeathCauses::PlasmaSplash),
            "MOD_RAILGUN" => Ok(DeathCauses::Railgun),
            "MOD_LIGHTNING" => Ok(DeathCauses::Lightning),
            "MOD_BFG" => Ok(DeathCauses::Bfg),
            "MOD_BFG_SPLASH" => Ok(DeathCauses::BfgSplash),
            "MOD_WATER" => Ok(DeathCauses::Water),
            "MOD_SLIME" => Ok(DeathCauses::Slime),
            "MOD_LAVA" => Ok(DeathCauses::Lava),
            "MOD_CRUSH" => Ok(DeathCauses::Crush),
            "MOD_TELEFRAG" => Ok(DeathCauses::Telefrag),
            "MOD_FALLING" => Ok(DeathCauses::Falling),
            "MOD_SUICIDE" => Ok(DeathCauses::Suicide),
            "MOD_TARGET_LASER" => Ok(DeathCauses::TargetLaser),
            "MOD_TRIGGER_HURT" => Ok(DeathCauses::TriggerHurt),
            "MOD_NAIL" => Ok(DeathCauses::Nail),
            "MOD_CHAINGUN" => Ok(DeathCauses::Chaingun),
            "MOD_PROXIMITY_MINE" => Ok(DeathCauses::ProximityMine),
            "MOD_KAMIKAZE" => Ok(DeathCauses::Kamikaze),
            "MOD_JUICED" => Ok(DeathCauses::Juiced),
            "MOD_GRAPPLE" => Ok(DeathCauses::Grapple),
            _ => Err(STATIC_CONFIG.get_parameter(StaticConfigParameter::InvalidKillMeanTokenErrMsg).to_string())
        }
    }
}