toICalString method

String toICalString()

Implementation

String toICalString() {
  final buffer = StringBuffer();
  buffer.write('RRULE:FREQ=${frequency.name}');
  if (weekStart != null) {
    buffer.write(';WKST=${weekStart!.toICalString()}');
  }
  if (interval > 1) {
    buffer.write(';INTERVAL=$interval');
  }
  if (count != null) {
    buffer.write(';COUNT=$count');
  }

  if (until != null) {
    buffer.write(
        ';UNTIL=${DateFormat('yyyyMMdd\'T\'HHmmss\'Z\'').format(until!.toUtc())}');
  }
  if (bySecond != null && bySecond!.isNotEmpty) {
    buffer.write(';BYSECOND=${bySecond!.join(',')}');
  }
  if (byMinute != null && byMinute!.isNotEmpty) {
    buffer.write(';BYMINUTE=${byMinute!.join(',')}');
  }
  if (byHour != null && byHour!.isNotEmpty) {
    buffer.write(';BYHOUR=${byHour!.join(',')}');
  }
  if (byDay != null && byDay!.isNotEmpty) {
    buffer.write(
        ';BYDAY=${byDay!.map((day) => day?.toICalString()).join(',')}');
  }
  if (byMonthDay != null && byMonthDay!.isNotEmpty) {
    buffer.write(';BYMONTHDAY=${byMonthDay!.join(',')}');
  }
  if (byYearDay != null && byYearDay!.isNotEmpty) {
    buffer.write(';BYYEARDAY=${byYearDay!.join(',')}');
  }
  if (byWeekNo != null && byWeekNo!.isNotEmpty) {
    buffer.write(';BYWEEKNO=${byWeekNo!.join(',')}');
  }
  if (byMonth != null && byMonth!.isNotEmpty) {
    buffer.write(';BYMONTH=${byMonth!.join(',')}');
  }
  if (bySetPosition != null && bySetPosition!.isNotEmpty) {
    buffer.write(';BYSETPOS=${bySetPosition!.join(',')}');
  }

  return buffer.toString();
}