praytimes 1.1.0

Muslim prayer times calculation
Documentation
use crate::types::{
    AsrFactor, CalculationUnit, Degrees, HighLatsMethod, MidnightMethod, Minutes, Parameters,
};

pub const MUSLIM_WORLD_LEAGUE: Parameters = Parameters {
    imsak: CalculationUnit::Minutes(Minutes { minutes: 10.0 }),
    dhuhr: Minutes { minutes: 0.0 },
    asr: AsrFactor { factor: 1.0 },
    high_latitudes: HighLatsMethod::NightMiddle,
    fajr: (Degrees { degree: 18.0 }),
    isha: CalculationUnit::Degrees(Degrees { degree: 17.0 }),
    midnight: MidnightMethod::Standard,
    maghrib: CalculationUnit::Minutes(Minutes { minutes: 0.0 }),
};

pub const ISLAMIC_SOCIETY_OF_NORTH_AMERICA: Parameters = Parameters {
    imsak: CalculationUnit::Minutes(Minutes { minutes: 15.0 }),
    dhuhr: Minutes { minutes: 0.0 },
    asr: AsrFactor { factor: 1.0 },
    high_latitudes: HighLatsMethod::NightMiddle,
    fajr: (Degrees { degree: 15.0 }),
    isha: CalculationUnit::Degrees(Degrees { degree: 15.0 }),
    midnight: MidnightMethod::Standard,
    maghrib: CalculationUnit::Minutes(Minutes { minutes: 0.0 }),
};

pub const EGYPTIAN_GENERAL_AUTHORITY_OF_SURVEY: Parameters = Parameters {
    imsak: CalculationUnit::Minutes(Minutes { minutes: 10.0 }),
    dhuhr: Minutes { minutes: 0.0 },
    asr: AsrFactor { factor: 1.0 },
    high_latitudes: HighLatsMethod::NightMiddle,
    fajr: (Degrees { degree: 19.5 }),
    isha: CalculationUnit::Degrees(Degrees { degree: 17.5 }),
    midnight: MidnightMethod::Standard,
    maghrib: CalculationUnit::Minutes(Minutes { minutes: 0.0 }),
};

pub const UMM_AL_QURA_UNIVERSITY_MAKKAH: Parameters = Parameters {
    imsak: CalculationUnit::Minutes(Minutes { minutes: 10.0 }),
    dhuhr: Minutes { minutes: 0.0 },
    asr: AsrFactor { factor: 1.0 },
    high_latitudes: HighLatsMethod::NightMiddle,
    fajr: (Degrees { degree: 18.5 }),
    isha: CalculationUnit::Minutes(Minutes { minutes: 90.0 }),
    midnight: MidnightMethod::Standard,
    maghrib: CalculationUnit::Minutes(Minutes { minutes: 0.0 }),
};

pub const UNIVERSITY_OF_ISLAMIC_SCIENCES_KARACHI: Parameters = Parameters {
    imsak: CalculationUnit::Minutes(Minutes { minutes: 10.0 }),
    dhuhr: Minutes { minutes: 0.0 },
    asr: AsrFactor { factor: 1.0 },
    high_latitudes: HighLatsMethod::NightMiddle,
    fajr: (Degrees { degree: 18.0 }),
    isha: CalculationUnit::Degrees(Degrees { degree: 18.0 }),
    midnight: MidnightMethod::Standard,
    maghrib: CalculationUnit::Minutes(Minutes { minutes: 0.0 }),
};

pub const INSTITUTE_OF_GEOPHYSICS_UNIVERSITY_OF_TEHRAN: Parameters = Parameters {
    imsak: CalculationUnit::Minutes(Minutes { minutes: 10.0 }),
    dhuhr: Minutes { minutes: 0.0 },
    asr: AsrFactor { factor: 1.0 },
    high_latitudes: HighLatsMethod::NightMiddle,
    fajr: (Degrees { degree: 17.7 }),
    isha: CalculationUnit::Degrees(Degrees { degree: 14.0 }),
    midnight: MidnightMethod::Jafari,
    maghrib: CalculationUnit::Degrees(Degrees { degree: 4.5 }),
};

pub const SHIA_ITHNA_ASHARI_LEVA_INSTITUTE_QUM: Parameters = Parameters {
    imsak: CalculationUnit::Minutes(Minutes { minutes: 10.0 }),
    dhuhr: Minutes { minutes: 0.0 },
    asr: AsrFactor { factor: 1.0 },
    high_latitudes: HighLatsMethod::NightMiddle,
    fajr: (Degrees { degree: 16.0 }),
    isha: CalculationUnit::Degrees(Degrees { degree: 14.0 }),
    midnight: MidnightMethod::Jafari,
    maghrib: CalculationUnit::Degrees(Degrees { degree: 4.0 }),
};

pub fn get_method_by_name(name: &str) -> Option<Parameters> {
    match name {
        "MUSLIM_WORLD_LEAGUE" | "MWL" => Some(MUSLIM_WORLD_LEAGUE),
        "ISLAMIC_SOCIETY_OF_NORTH_AMERICA" | "ISNA" => Some(ISLAMIC_SOCIETY_OF_NORTH_AMERICA),
        "EGYPTIAN_GENERAL_AUTHORITY_OF_SURVEY" | "Egypt" => {
            Some(EGYPTIAN_GENERAL_AUTHORITY_OF_SURVEY)
        }
        "UMM_AL_QURA_UNIVERSITY_MAKKAH" | "Makkah" => Some(UMM_AL_QURA_UNIVERSITY_MAKKAH),
        "UNIVERSITY_OF_ISLAMIC_SCIENCES_KARACHI" | "Karachi" => {
            Some(UNIVERSITY_OF_ISLAMIC_SCIENCES_KARACHI)
        }
        "INSTITUTE_OF_GEOPHYSICS_UNIVERSITY_OF_TEHRAN" | "Tehran" => {
            Some(INSTITUTE_OF_GEOPHYSICS_UNIVERSITY_OF_TEHRAN)
        }
        "SHIA_ITHNA_ASHARI_LEVA_INSTITUTE_QUM" | "Jafari" => {
            Some(SHIA_ITHNA_ASHARI_LEVA_INSTITUTE_QUM)
        }
        _ => None,
    }
}