예제 #1
0
        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);
            }
        }
예제 #2
0
        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());
        }
예제 #3
0
        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);
        }
예제 #4
0
 private static bool IsDefinedData(string content)
 {
     return(PartParseHelper.CheckEntry(content, DefinedDatePattern));
 }
예제 #5
0
 private static string RemoveRoom(string content)
 {
     return(PartParseHelper.RemoveEntries(content, Pattern));
 }