Example #1
0
 ///<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);
 }
Example #2
0
 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));
 }
Example #3
0
        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)
                בדיקה--;
        }
Example #5
0
 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));
 }
Example #6
0
            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));
            }
Example #7
0
        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);
            }
        }
Example #8
0
        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));
        }
Example #9
0
            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));
            }
Example #10
0
        ///<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");
            }
        }
Example #12
0
            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));
            }
Example #13
0
        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));
                }
            }
        }
Example #14
0
 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;
        }
Example #16
0
        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);
        }
Example #17
0
        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 וילך.");
        }
Example #18
0
            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);
 }
Example #20
0
 internal HebrewDayInfo(HebrewDate date)
 {
     Date = date;
 }
        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נקודות());
            }
        }
Example #22
0
 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);
        }
Example #24
0
 ///<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);
 }
Example #26
0
 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);
            }
Example #33
0
 ///<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));
 }