monthDays method

Iterable<List> monthDays({
  1. bool geezDay = false,
  2. bool weekDayName = false,
})
override

Returns Iterable object of List which looks like:

[year, month, day, weekday]

Where: all are integer values representing year, month, day and weekday respectively. The weekday can be returned in day name or just index of the day, assuming ሰኞ as the first day of the week with index of 0.

// const List<String> _weekdays = ["ሰኞ", "ማግሰኞ", "ረቡዕ", "ሐሙስ", "አርብ", "ቅዳሜ", "እሁድ"];

etc.monthDays(weekDayName: true); // => [2011, 13, 1, አርብ]

The day number in Geez can also be returned by passing geezDay parameter.

// Days of ጷጉሜን in 2011
// ["፩", "፪", "፫", "፬", "፭", "፮"]
// [2011, 13, ፮, ረቡዕ]

etc.monthDays(geezDay: true, weekDayName: true); // => [2011, 13, ፮, ረቡዕ]

Implementation

Iterable<List<dynamic>> monthDays(
    {bool geezDay = false, bool weekDayName = false}) sync* {
  int monthBeginning = _monthRange()[0];
  int daysInMonth = _monthRange()[1];
  for (int i = 0; i < daysInMonth; i++) {
    if (geezDay) {
      yield [
        _date.year,
        _date.month,
        _dayNumbers[i],
        weekDayName ? _weekdays[monthBeginning] : monthBeginning
      ];
    } else
      yield [
        _date.year,
        _date.month,
        i + 1,
        weekDayName ? _weekdays[monthBeginning] : monthBeginning
      ];
    monthBeginning = (monthBeginning + 1) % 7;
  }
}