use wasm_bindgen::prelude::*;
use serde::{Serialize, Deserialize};
use alloc::string::ToString;
pub const VARA_NAMES: [&str; 7] = [
"Ravivara", "Somavara", "Mangalavara", "Budhavara", "Guruvara", "Shukravara", "Shanivara", ];
pub const VARA_LORDS: [&str; 7] = [
"Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn"
];
#[derive(Debug, Clone, Serialize, Deserialize)]
#[wasm_bindgen(getter_with_clone)]
pub struct VaraInfo {
pub index: u8,
pub name: alloc::string::String,
pub lord: alloc::string::String,
}
#[wasm_bindgen]
pub fn calculate_vara(jd: f64) -> VaraInfo {
let day_num = ((jd + 1.5).floor() as i64 % 7) as u8;
VaraInfo {
index: day_num,
name: VARA_NAMES[day_num as usize].to_string(),
lord: VARA_LORDS[day_num as usize].to_string(),
}
}
pub fn calculate_vedic_vara(jd: f64, sunrise_jd: f64) -> VaraInfo {
let effective_jd = if jd < sunrise_jd {
jd - 1.0 } else {
jd
};
calculate_vara(effective_jd)
}