public string BuildText(IRRuleTokenContainer tokenContainer) { var resultString = BuildFrequency(tokenContainer); var freqValue = (FreqToken.FreqValue)tokenContainer.GetFreq().GetValue(); if (freqValue == FreqToken.FreqValue.WEEKLY) { resultString += " " + BuildWeeklyDays(tokenContainer); } else if (freqValue == FreqToken.FreqValue.MONTHLY && tokenContainer.GetByMontDay() != null) { resultString += " " + BuildMonthlyOnDay(tokenContainer); } else if (freqValue == FreqToken.FreqValue.MONTHLY && tokenContainer.GetBySetPos() != null && tokenContainer.GetByDay() != null) { resultString += " " + BuildMonthlyOnNumberedDay(tokenContainer); } else if (freqValue == FreqToken.FreqValue.YEARLY && tokenContainer.GetByMonth() != null && tokenContainer.GetByMontDay() != null) { resultString += " " + BuildYearlyOnDay(tokenContainer); } else if (freqValue == FreqToken.FreqValue.YEARLY && tokenContainer.GetByDay() != null && tokenContainer.GetBySetPos() != null && tokenContainer.GetByMonth() != null) { resultString += " " + BuildYearlyOnNumbered(tokenContainer); } if (tokenContainer.GetStart() != null) { var ending = _buildStartDate(tokenContainer); if (ending != null) { resultString += ", " + ending; } } // Endings if (tokenContainer.GetUntil() != null) { var ending = _buildUntilDateEnding(tokenContainer); if (ending != null) { resultString += ", " + ending; } } else if (tokenContainer.GetCount() != null) { var ending = BuildCountEnding(tokenContainer); if (ending != null) { resultString += ", " + ending; } } return(CapitalizeFirstLetter(resultString.Trim())); }
public void testByMonthDay() { IRRuleTokenContainer tokenContainer = tokenizer.Tokenize("FREQ=DAILY;BYMONTHDAY=2"); Assert.AreEqual(2, tokenContainer.RuleCount()); Assert.NotNull(tokenContainer.GetByMontDay()); Assert.AreEqual(2, (int)tokenContainer.GetByMontDay().GetValue()); }
public void TestMergeSimple() { IRRuleTokenContainer firstPart = tokenizer.Tokenize("FREQ=WEEKLY;INTERVAL=1"); IRRuleTokenContainer secondPart = tokenizer.Tokenize("FREQ=YEARLY;INTERVAL=1;BYMONTHDAY=1;BYSETPOS=1"); // Merge secondPart into firstPart firstPart.Merge(secondPart); Assert.NotNull(firstPart.GetFreq()); Assert.NotNull(firstPart.GetByMontDay()); Assert.NotNull(firstPart.GetBySetPos()); Assert.NotNull(firstPart.GetByMontDay()); Assert.AreEqual(secondPart.GetByMontDay(), firstPart.GetByMontDay()); Assert.AreEqual(secondPart.GetBySetPos(), firstPart.GetBySetPos()); }
public void Merge(IRRuleTokenContainer tokenContainer) { if (tokenContainer.GetFreq() != null && GetFreq() == null) { AddOrUpdateToken(tokenContainer.GetFreq()); } if (tokenContainer.GetUntil() != null && GetUntil() == null) { AddOrUpdateToken(tokenContainer.GetUntil()); } if (tokenContainer.GetCount() != null && GetCount() == null) { AddOrUpdateToken(tokenContainer.GetCount()); } if (tokenContainer.GetInterval() != null && GetInterval() == null) { AddOrUpdateToken(tokenContainer.GetInterval()); } if (tokenContainer.GetByDay() != null && GetByDay() == null) { AddOrUpdateToken(tokenContainer.GetByDay()); } if (tokenContainer.GetByMontDay() != null && GetByMontDay() == null) { AddOrUpdateToken(tokenContainer.GetByMontDay()); } if (tokenContainer.GetByMonth() != null && GetByMonth() == null) { AddOrUpdateToken(tokenContainer.GetByMonth()); } if (tokenContainer.GetBySetPos() != null && GetBySetPos() == null) { AddOrUpdateToken(tokenContainer.GetBySetPos()); } }
/* ---- MONTHLY ---- */ private string BuildMonthlyOnDay(IRRuleTokenContainer tokenContainer) { var byMonthDay = tokenContainer.GetByMontDay(); if (byMonthDay == null) { return(""); } return(_fragmentTranslator.GetTranslatedFragment(ETranslationFragment.ON) + " " + _fragmentTranslator.GetTranslatedFragment(ETranslationFragment.DAY) + " " + byMonthDay.GetValue()); }
/* ---- YEARLY ---- */ private string BuildYearlyOnDay(IRRuleTokenContainer tokenContainer) { var byMonthToken = tokenContainer.GetByMonth(); var byMonthDayToken = tokenContainer.GetByMontDay(); if (byMonthDayToken == null || byMonthToken == null) { return(""); } var result = _fragmentTranslator.GetTranslatedFragment(ETranslationFragment.ON); result += " " + _dateFormatting.FormatMonthDay(new DateTime(DateTime.Now.Year, (int)byMonthToken.GetValue(), (int)byMonthDayToken.GetValue())); return(result); }