private static PairFrequency CalculateDefinedDate(string content, int firstWeek, out string reducedText) { var days = PartParseHelper.GetEntries(content, new[] { DefinedDatePattern }).ToList(); if (!days.Any()) { throw new Exception("Не найдено ни одной определенной даты."); } reducedText = PartParseHelper.RemoveEntries(content, DefinedDatePattern, NumeratorPattern, DenominatorPattern); var firstDate = days.First().Groups[0].Value; var weekNumber = (GetWeekNumber(firstDate) - firstWeek) / 4; switch (weekNumber) { case 0: return(PairFrequency.Numerator1); case 1: return(PairFrequency.Denominator1); case 2: return(PairFrequency.Numerator2); default: return(PairFrequency.Denominator2); } }
private static Room GetRoom(string content) { var rooms = PartParseHelper.GetEntries(content, new [] { Pattern }).Select(ParseRoom).ToList(); if (rooms.Count != 1) { throw new Exception("Невозможно однозначно определить аудиторию."); } return(rooms.Single()); }
private static PairFrequency ParseFrequency(string content, out string reducedText) { bool isNumerator = PartParseHelper.CheckEntry(content, NumeratorPattern); bool isDenominator = PartParseHelper.CheckEntry(content, DenominatorPattern); reducedText = PartParseHelper.RemoveEntries(content, NumeratorPattern, DenominatorPattern); if (isNumerator && isDenominator) { throw new NotImplementedException("Парсинг пары с числителем и знаменателем не поддерживается."); } if (isNumerator) { return(PairFrequency.EveryNumerator); } if (isDenominator) { return(PairFrequency.EveryDenominator); } return(PairFrequency.EveryWeek); }
private static bool IsDefinedData(string content) { return(PartParseHelper.CheckEntry(content, DefinedDatePattern)); }
private static string RemoveRoom(string content) { return(PartParseHelper.RemoveEntries(content, Pattern)); }