santali_calendar 2.1.0
santali_calendar: ^2.1.0 copied to clipboard
A lunisolar calendar for Santali people based on astronomical calculations.
2.1.0 #
Seasons #
- Added
SantaliSeasonenum inlib/constants/seasons.dart(shishira,basanta,grishma,barsha,sarata,hemanta) - Added
SantaliSeasonDefinitioninlib/models/santali_season.dartwithid,name(Ol Chiki),roman,english,months(0-based month indices),description?, andcontainsMonth() - Added the
santaliSeasonsdefinitions list (6 entries, year order), plusgetSeasonDefinition(season),seasonOfMonthIndex(monthIndex), and the derivedmonthSeasonsmap - Added
getSeason([monthIndex]),getSeasons(),seasonDefinition(season),getSeasonFromDate(date), andgetSeasonMonths(year, season)toSantaliCalendar - Added
seasontoSantaliCalendarMonthandSantaliDate, andseasonstoSantaliCalendarYear - Documented seasons in the README (names, month coverage, and API)
Bug Fixes #
- Fixed Ol Chiki name typo for Thursday (
ᱥᱟᱹᱨᱤ→ᱥᱟᱹᱨᱫᱤ)
2.0.4 #
Features #
- Added
isFirstMoonDayfield toSantaliDateandSantaliCalendarDay(true when day == 1) - Added
FixedSantaliFestivalRuleandFixedSantaliRulefor festivals on fixed days in Santali months - Added Veer Birsha Munda Janam Maha festival (November 15, Gregorian)
Bug Fixes #
- Fixed
isAmavasyadetection: now determined by last day of month (day == month.totalDays) instead of new moon date matching - Fixed Mag Bonga rule: changed from moon-relative to fixed Santali day (day 5 of Mag)
- Fixed Ol Chiki name typo in Guru Gomke Gur Maha
2.0.2 #
Bug Fixes #
- Fixed
SantaliCalendarDay.weekDaylabels shifted one day back (weekDays[date.weekday - 1]→weekDays[date.weekday % 7], matching the Sunday-firstweekDaysorder)
2.0.1 #
Documentation #
- Added dartdoc comments to the full
SantaliCalendarpublic API - Added runnable
example/santali_calendar_example.dart
2.0.0 #
Astronomical Calendar Engine #
SantaliCalendarnow usesSantaliMoonCalendarfor accurate moon-phase-based month calculations- Month start/end dates are determined by Chandradarshan (first visible crescent) instead of fixed 29/30-day arithmetic
- Santali days start at 17:00 IST (11:30 UTC)
getDate()uses raw timestamps with proportional day division (floor((targetMs - startMs) / dayDuration) + 1), matching the reference implementation- Added
isPurnima,isAmavasya,isLeapMonthfields toSantaliDate - Added
weekDayfield toSantaliDate(int,DateTime.weekday: Monday = 1 ... Sunday = 7) - Added
fullMoonDate,newMoonDate,isLeapMonthfields toSantaliMonth - Month results are cached per year (
buildMonths)
Month Identity #
- Added
SantaliMonthIdenum (mag,fagun,chaat,baisak,jhent,ashal,saan,bhador,dasany,sohray,aghan,push,sarcha) - Added required
idfield toSantaliMonth,SantaliMonthDefinition, andSantaliCalendarMonth
Festivals #
- Added festival system in
lib/src/festivals/(types.dart,data.dart,festivals.dart) - Added
SantaliFestivalRule(sealed),FixedGregorianFestivalRule,MoonRelativeFestivalRule,MoonPhase,SantaliFestivalType,SantaliFestivalDefinition,SantaliFestival - Added
SantaliCalendar.getFestivals(year)resolving 18 festivals (moon-relative and fixed Gregorian), sorted by date
New SantaliCalendar Methods #
getCalendarToday()— Santali date of today's calendar-grid cell (evaluates the day starting 17:00 IST on today's Gregorian date)isLeapYear(year)— Metonic-cycle leap year checkgetDaysInMonth(year, monthIndex)— days in a Santali monthgetMonthIndex(date)— Santali month index for a Gregorian instantgetCalendarMonthIndex(date)— Santali month index for a Gregorian calendar cellgetMonthFromDate(date)— calendar month for any Gregorian date
Model Restructure #
- Moved
SantaliMonth,SantaliDate,SantaliMonthDefinitiontolib/src/models/ astronomy/moon.dartnow contains onlySantaliMoonCalendarandMonthAstronomy- Removed
lib/src/constants/months.dart(definitions now in models)
Breaking Changes #
SantaliMonth.englishrenamed toSantaliMonth.romanSantaliDate.gregorianDaterenamed toSantaliDate.date(now the raw UTC timestamp of the queried instant)SantaliMonthnow requiresid(SantaliMonthId)SantaliDate.monthEnglish/monthStartDate/monthEndDateremoved — usedate.month.roman,date.month.startDate,date.month.endDateSantaliDate.weekDayisint(DateTime.weekday), notSantaliWeekDaySantaliCalendarconstructor takes no arguments (anchorDatefixed,anchorYearremoved)SantaliCalendarMonthextends astronomySantaliMonthwith all its fields
1.0.4 #
- Added
weekDay as SantaliWeekDayfield toSantaliCalendarDayfor direct weekday access
1.0.3 #
- Simplified
SantaliCalendarMonthto a standalone class (no longer extendsSantaliMonth) - Replaced
Map<SantaliWeekDay, List<SantaliCalendarDay?>> calendarwith flatList<SantaliCalendarDay?> days - Added
weekDayfield toSantaliCalendarDayfor direct weekday access - Added
weekDayslist constant for ordered weekday access - Removed empty
build_calendar_month.dartutility file
Breaking Changes #
SantaliCalendarMonthno longer extendsSantaliMonth— use.name,.english,.startDate,.endDatedirectlySantaliCalendarMonth.calendarmap removed — iterate.dayslist instead and usecell.weekDayfor weekday info
1.0.2 #
- Fixed calendar grid rendering issue
1.0.1 #
- Added
SantaliCalendarMonthmodel with calendar grid for UI rendering - Added
SantaliCalendarDaymodel withday,date,isToday,isCurrentMonth - Added
getMonthByDate()to get calendar month for any Gregorian date - Added
getCurrentMonth()to get current month with calendar grid - Added
buildCalendarMonth()to build calendar grid for a month - Added
currentMonthIndexfield toSantaliCalendarYear
Breaking Changes #
getMonth()now returnsSantaliCalendarMonthinstead ofSantaliMonthSantaliCalendarYear.monthsis nowList<SantaliCalendarMonth>instead ofList<SantaliMonth>SantaliCalendarYearrequires newcurrentMonthIndexfield
1.0.0 #
- Initial version.