static void Main(string[] args) { for (var date = new HebrewDate(new DateTime(2015, 1, 1)); date.EnglishDate.Year <= 2020; date++) { var calc = new ScheduleCalculator(date); Console.WriteLine("---- " + date.EnglishDate.ToShortDateString() + " " + date.DayOfWeek + ": " + date.ToString("d") + " " + calc.CalcTitle()); foreach (var time in calc.CalcTimes().OrderBy(c => c.Time)) { Console.WriteLine((time.Name + ":").PadRight(10) + time.TimeString + (time.IsBold ? " **" : "")); } Console.WriteLine(); Console.WriteLine(); } if (!Console.IsOutputRedirected) { Console.ReadKey(); } }
public void UpdateSlide(Slide slide) { if (slide == null) throw new ArgumentNullException("slide"); DateTime englishDate; if (!DateTime.TryParseExact(slide.Name, "D", CultureInfo.InvariantCulture, DateTimeStyles.None, out englishDate)) throw new ArgumentException("Bad slide name: " + slide.Name, "slide"); var date = new HebrewDate(englishDate); if (!date.Info.Isשבת || date.Parsha == null) throw new InvalidOperationException(englishDate.ToLongDateString() + " shouldn't have announcements"); var cell = Context.GetCell(date); slide.Shapes.Title.TextFrame.TextRange.Text = "פרשת " + cell.Date.Parsha; var dateRange = slide.Shapes[2].TextFrame.TextRange; var englishDateText = englishDate.ToString("MMM d", CultureInfo.CurrentCulture); dateRange.Text = englishDateText + englishDate.Day.GetSuffix() + "\t" + date.ToString("M"); dateRange.Characters(englishDateText.Length + 1, 2).Font.Superscript = MsoBool.msoTrue; var printedPairs = from t in cell.Times group t by t.Name into g orderby g.First().Time select new { Name = g.Key, Value = g.Select(t => t.TimeString).Join(" / "), IsBold = g.Any(t => t.IsBold), }; var timesRange = slide.Shapes[3].TextFrame.TextRange; timesRange.Text = ""; var lineNumber = 0; foreach (var pair in printedPairs) { timesRange.InsertAfter(pair.Name + "\t"); var valueStart = timesRange.Length; timesRange.InsertAfter(pair.Value + "\n"); if (pair.IsBold) { var boldRange = timesRange.Characters(valueStart + 1, pair.Value.Length); boldRange.Font.Bold = MsoBool.msoTrue; boldRange.Font.Color.RGB = 255; } lineNumber++; if (lineNumber == 3) timesRange.InsertAfter("\n"); } }