use crate::core::pattern::model::PatternFamily;
use crate::core::{Chart, HoroscopeChart, Scope};
#[derive(Clone, Debug)]
pub struct PatternContext<'a> {
pub chart: &'a Chart,
pub horoscope: Option<&'a HoroscopeChart>,
pub active_scopes: Vec<Scope>,
}
impl<'a> PatternContext<'a> {
pub fn natal(chart: &'a Chart) -> Self {
Self {
chart,
horoscope: None,
active_scopes: vec![Scope::Natal],
}
}
pub fn horoscope(chart: &'a HoroscopeChart, active_scopes: Vec<Scope>) -> Self {
Self {
chart: chart.natal(),
horoscope: Some(chart),
active_scopes,
}
}
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct PatternDetectionRequest {
pub scopes: Vec<Scope>,
pub include_partial: bool,
pub include_weakened: bool,
pub include_broken: bool,
pub families: Vec<PatternFamily>,
}
impl Default for PatternDetectionRequest {
fn default() -> Self {
Self {
scopes: vec![Scope::Natal],
include_partial: false,
include_weakened: true,
include_broken: true,
families: Vec::new(),
}
}
}