///<summary>Checks whether this value describes a date.</summary> ///<param name="date">The date to check.</param> ///<returns>True if this value describes the date.</returns> public bool Is(HebrewDate date) { if (date.HebrewMonth != Month) { return(false); } return(GetDate(date.HebrewYear) == date); }
protected override IEnumerable <AuctionItem> CreateItems(HebrewDate date, Func <string, bool, AuctionItem> creator) { foreach (var item in base.CreateItems(date, creator)) { yield return(item); } yield return(creator("פתיחה דגשם", None)); }
public void OmerTextנקודTest() { Assert.IsNull(new HebrewDate(5555, HebrewMonth.ניסן, 1).Info.OmerTextנקוד); for (var date = new HebrewDate(5769, HebrewMonth.ניסן, 17); date.Info.OmerDay != -1; date++) { Assert.AreEqual(date.Info.OmerText, date.Info.OmerTextנקוד.Stripנקודות()); } }
public ScheduleCalculator(HebrewDate date) { Date = date; Holiday = Date.Info.Holiday; Zmanim = Date.GetZmanim(); בדיקה = Holiday.פסח.Days.First().Date.GetDate(Date.HebrewYear) - 2; if (בדיקה.DayOfWeek == DayOfWeek.Friday) בדיקה--; }
public void GetYearTypeTest() { Assert.AreEqual(HebrewYearType.חסר, HebrewDate.GetYearType(5765)); Assert.AreEqual(HebrewYearType.כסדרן, HebrewDate.GetYearType(5766)); Assert.AreEqual(HebrewYearType.מלא, HebrewDate.GetYearType(5767)); Assert.AreEqual(HebrewYearType.חסר, HebrewDate.GetYearType(5768)); Assert.AreEqual(HebrewYearType.כסדרן, HebrewDate.GetYearType(5769)); Assert.AreEqual(HebrewYearType.מלא, HebrewDate.GetYearType(5770)); Assert.AreEqual(HebrewYearType.מלא, HebrewDate.GetYearType(5771)); }
protected override IEnumerable <AuctionItem> CreateItems(HebrewDate date, Func <string, bool, AuctionItem> creator) { yield return(creator("אתה הראית", None)); for (int a = 0; a < 5; a++) { yield return(creator(AliyahNames[a], מישברך)); } yield return(creator("הגבהה", None)); }
public void MainTest() { var start = new DateTime(1584, 1, 1); for (var d = start; d.Year < 2239; d += TimeSpan.FromDays(1)) { var hd = new HebrewDate(d); var hd2 = new HebrewDate(hd.HebrewYear, hd.HebrewMonth, hd.HebrewDay); Assert.AreEqual(hd, hd2); Assert.IsTrue(d == hd, d.ToLongDateString() + " == " + hd); } }
protected virtual IEnumerable <AuctionItem> CreateItems(HebrewDate date, Func <string, bool, AuctionItem> creator) { yield return(creator("פתיחה", None)); for (int a = 0; a < (date.Info.Isשבת ? 7 : 5); a++) { yield return(creator(AliyahNames[a], מישברך)); } yield return(creator("מפטיר", מישברך)); yield return(creator("הגבהה", None)); }
protected override IEnumerable <AuctionItem> CreateItems(HebrewDate date, Func <string, bool, AuctionItem> creator) { yield return(creator("פתיחה", None)); //יום כיפור has 6 עליות on weekdays for (int a = 0; a < (date.Info.Isשבת ? 7 : 6); a++) { yield return(creator(AliyahNames[a], מישברך)); } yield return(creator("מפטיר", מישברך)); yield return(creator("הגבהה", None)); }
///<summary>Gets this date in the given year.</summary> ///<param name="hebrewYear">The Hebrew year.</param> ///<returns>The HebrewDate of the given year and this instance's month and day.</returns> public HebrewDate GetDate(int hebrewYear) { var retVal = new HebrewDate(hebrewYear, Month, NormalDay); if (retVal.DayOfWeek != DayOfWeek.Saturday) { return(retVal); } if (Fallback < DayOfWeek.Wednesday) { return(retVal + (1 + (int)Fallback)); } return(retVal - (6 - (int)Fallback)); }
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"); } }
protected override IEnumerable <AuctionItem> CreateItems(HebrewDate date, Func <string, bool, AuctionItem> creator) { yield return(creator("פתיחה דנעילה", None)); yield return(creator("פתיחה", None)); //שלישי is מפטיר יונה for (int a = 0; a < 2; a++) { yield return(creator(AliyahNames[a], מישברך)); } yield return(creator("מפטיר יונה", מישברך)); yield return(creator("הגבהה", None)); }
public void BulkHolidayTest() { for (int hebrewYear = 5344; hebrewYear < 6000; hebrewYear++) { foreach (var holiday in Holiday.All) { if (!HebrewDate.IsHebrewLeapYear(hebrewYear) && holiday.Name.EndsWith("פורים קטן")) //GetDate for פורים קטן returns regular פורים for non-leap years because of אדר equivalency { continue; } var date = holiday.Date.GetDate(hebrewYear); Assert.AreEqual(holiday, date.Info.Holiday); Assert.IsTrue(holiday.Date.Is(date)); } } }
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 HebrewDate GetDate(int hebrewYear) { //Find ראש חודש var rc = new HebrewDate(hebrewYear, HebrewMonth.אדר2, 1); //Start at פרשת שקלים var retVal = rc.Last(DayOfWeek.Saturday); int weekIndex = 0; //Skip preceding ארבע פרשיות while (weekIndex < Index) { retVal += 7; //If the שבת we're up to isn't a gap, //move forward. if (!gaps[rc.DayOfWeek].Any(d => d.Is(retVal))) weekIndex++; } return retVal; }
public HebrewDate GetDate(int hebrewYear) { //Find ראש חודש var rc = new HebrewDate(hebrewYear, HebrewMonth.אדר2, 1); //Start at פרשת שקלים var retVal = rc.Last(DayOfWeek.Saturday); int weekIndex = 0; //Skip preceding ארבע פרשיות while (weekIndex < Index) { retVal += 7; //If the שבת we're up to isn't a gap, //move forward. if (!gaps[rc.DayOfWeek].Any(d => d.Is(retVal))) { weekIndex++; } } return(retVal); }
public void FindפרשהTest() { for (int hebrewYear = 5344; hebrewYear < 6000; hebrewYear++) { for (int parshaIndex = 0; parshaIndex < 53; parshaIndex++) { var expectedParsha = HebrewDate.Parshiyos[parshaIndex]; var date = HebrewDate.Findפרשה(hebrewYear, parshaIndex); Assert.AreEqual(DayOfWeek.Saturday, date.DayOfWeek); //We should get a שבת //Assert.AreEqual(hebrewYear, date.HebrewYear, date + " (" + expectedParsha + ")"); //We should get the year we asked for Assert.AreEqual(date, HebrewDate.Findפרשה(hebrewYear, expectedParsha)); //We should get the same date by index & by name var actualParsha = date.Parsha; Assert.IsTrue(actualParsha == expectedParsha || actualParsha.StartsWith(expectedParsha + "־") || actualParsha.EndsWith("־" + expectedParsha) ); //We should get the פרשה that we asked for. } } Assert.Inconclusive("I must figure out how to handle years without וילך."); }
protected override IEnumerable <AuctionItem> CreateItems(HebrewDate date, Func <string, bool, AuctionItem> creator) { yield return(creator("אתה הראית", None)); //Apparently, even the early מנין //gives everyone עליות. They have //fewer people, so it goes faster. //Thus, there aren't any auctions //for עליות, and both מנינים use //the same auction. //for (int a = 0; a < 5; a++) // yield return creator(AliyahNames[a], מישברך); yield return(creator("כל הנערים", מישברך)); yield return(creator("חתן תורה", מישברך)); yield return(creator("חתן בראשית", מישברך)); yield return(creator("מפטיר", מישברך)); yield return(creator("הגבהה", None)); }
public bool Is(HebrewDate date) { return date == GetDate(date.HebrewYear); }
internal HebrewDayInfo(HebrewDate date) { Date = date; }
protected virtual IEnumerable<AuctionItem> CreateItems(HebrewDate date, Func<string, bool, AuctionItem> creator) { yield return creator("פתיחה", None); for (int a = 0; a < (date.Info.Isשבת ? 7 : 5); a++) yield return creator(AliyahNames[a], מישברך); yield return creator("מפטיר", מישברך); yield return creator("הגבהה", None); }
///<summary>Checks whether this value describes a date.</summary> ///<param name="date">The date to check.</param> ///<returns>True if the date matches this instance's month and year.</returns> public bool Is(HebrewDate date) { return(date.HebrewMonth == Month && date.HebrewDay == Day); }
protected override IEnumerable<AuctionItem> CreateItems(HebrewDate date, Func<string, bool, AuctionItem> creator) { foreach (var item in base.CreateItems(date, creator)) yield return item; yield return creator("פתיחה דגשם", None); }
public bool Is(HebrewDate date) { return(date == GetDate(date.HebrewYear)); }
static TimeSpan GetDefaultערב٠שבת٠מנחה(HebrewDate date) { return (date.GetZmanim().Sunset - TimeSpan.FromMinutes(18)).RoundDown() + TimeSpan.FromMinutes(5); //Always add, even if it's already a multiple of 5. }
private bool Hasשבת٠הגדול٠דרשה(HebrewDate date) { return date > new HebrewDayOfYear(HebrewMonth.ניסן, 6) && date < new HebrewDayOfYear(HebrewMonth.ניסן, 14); }
protected override IEnumerable<AuctionItem> CreateItems(HebrewDate date, Func<string, bool, AuctionItem> creator) { yield return creator("אתה הראית", None); for (int a = 0; a < 5; a++) yield return creator(AliyahNames[a], מישברך); yield return creator("הגבהה", None); }
protected override IEnumerable<AuctionItem> CreateItems(HebrewDate date, Func<string, bool, AuctionItem> creator) { yield return creator("אתה הראית", None); //Apparently, even the early מנין //gives everyone עליות. They have //fewer people, so it goes faster. //Thus, there aren't any auctions //for עליות, and both מנינים use //the same auction. //for (int a = 0; a < 5; a++) // yield return creator(AliyahNames[a], מישברך); yield return creator("כל הנערים", מישברך); yield return creator("חתן תורה", מישברך); yield return creator("חתן בראשית", מישברך); yield return creator("מפטיר", מישברך); yield return creator("הגבהה", None); }
protected override IEnumerable<AuctionItem> CreateItems(HebrewDate date, Func<string, bool, AuctionItem> creator) { yield return creator("פתיחה דנעילה", None); yield return creator("פתיחה", None); //שלישי is מפטיר יונה for (int a = 0; a < 2; a++) yield return creator(AliyahNames[a], מישברך); yield return creator("מפטיר יונה", מישברך); yield return creator("הגבהה", None); }
protected override IEnumerable<AuctionItem> CreateItems(HebrewDate date, Func<string, bool, AuctionItem> creator) { yield return creator("פתיחה", None); //יום כיפור has 6 עליות on weekdays for (int a = 0; a < (date.Info.Isשבת ? 7 : 6); a++) yield return creator(AliyahNames[a], מישברך); yield return creator("מפטיר", מישברך); yield return creator("הגבהה", None); }
///<summary>Checks whether this value describes a date.</summary> ///<param name="date">The date to check.</param> ///<returns>True if this value describes the date.</returns> public bool Is(HebrewDate date) { return(date.DayOfWeek == DayOfWeek.Saturday && date == GetDate(date.HebrewYear)); }