Crate shaum

Crate shaum 

Source
Expand description

§Shaum - Islamic Fasting Rules Engine

Determines fasting status (Wajib, Sunnah, Makruh, Haram) for any date.

§Quick Start

use chrono::NaiveDate;
use shaum::prelude::*;

let date = NaiveDate::from_ymd_opt(2024, 3, 11).unwrap();

// Extension API
if date.is_wajib() { println!("Ramadhan!"); }

// Full analysis
let analysis = date.fasting_analysis();
println!("{}", analysis.explain());

§Query Engine

use chrono::NaiveDate;
use shaum::query::QueryExt;

let date = NaiveDate::from_ymd_opt(2024, 3, 1).unwrap();
let sunnah: Vec<_> = date.upcoming_fasts()
    .take(5)
    .map(|r| r.unwrap())
    .filter(|a| a.primary_status.is_sunnah())
    .collect();

§Status Priority

Haram > Wajib > SunnahMuakkadah > Sunnah > Makruh > Mubah

Re-exports§

pub use types::FastingStatus;
pub use types::FastingType;
pub use types::FastingAnalysis;
pub use types::Madhab;
pub use types::DaudStrategy;
pub use types::GeoCoordinate;
pub use types::TraceCode;
pub use rules::analyze;
pub use rules::check;
pub use calendar::ShaumError;
pub use calendar::to_hijri;
pub use rules::RuleContext;
pub use rules::MoonProvider;
pub use rules::SunsetProvider;
pub use rules::DefaultSunsetProvider;

Modules§

astronomy
calendar
constants
Constants for Hijri months and days.
extension
Extension trait for NaiveDate.
i18n
macros
prelude
Re-exports for convenience.
query
Fluent query engine for finding fasting dates.
rules
types

Macros§

shaum_context
Declaratively creates a RuleContext.

Structs§

DaudIterator
Daud fasting iterator.
DaudScheduleBuilder
Builder for Daud fasting schedule.

Functions§

analyze_date
Analyzes date with default context. Panics if analysis fails.
generate_daud_schedule
Creates Daud schedule iterator.