Class: Zmanim::Limudim::Calculators::Parsha

Inherits:
Object
  • Object
show all
Includes:
LimudCalculator
Defined in:
lib/zmanim/limudim/calculators/parsha.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from LimudCalculator

#default_starting_page, #find_cycle, #find_offset_units, #fractional_units, #initial_cycle_date, #limud, #skip_interval?, #starting_page, #tiered_units_for_interval, #unit_for_interval, #unit_step

Constructor Details

#initialize(in_israel: false) ⇒ Parsha

Returns a new instance of Parsha.



9
10
11
# File 'lib/zmanim/limudim/calculators/parsha.rb', line 9

def initialize(in_israel:false)
  @in_israel = in_israel
end

Instance Attribute Details

#in_israelObject (readonly)

Returns the value of attribute in_israel.



7
8
9
# File 'lib/zmanim/limudim/calculators/parsha.rb', line 7

def in_israel
  @in_israel
end

Instance Method Details

#cycle_end_calculationObject



29
30
31
32
33
# File 'lib/zmanim/limudim/calculators/parsha.rb', line 29

def cycle_end_calculation
  ->(start_date, iteration) do
    perpetual_cycle_anchor.next_occurrence(start_date) - 1
  end
end

#cycle_units_calculationObject



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/zmanim/limudim/calculators/parsha.rb', line 48

def cycle_units_calculation
  ->(cycle) do
    kviah = Zmanim::HebrewCalendar::HebrewDateFormatter.new.format_kviah(cycle.start_date.jewish_year)
    modifications = in_israel ?
                     {
                         'בחה' => [%i(matos masei), %i(nitzavim vayeilech)],
                         'בשז' => [],
                         'גכז' => [],
                         'החא' => [],
                         'השג' => [%i(nitzavim vayeilech)],
                         'זחג' => [%i(matos masei), %i(nitzavim vayeilech)],
                         'זשה' => [%i(matos masei), %i(nitzavim vayeilech)],
                         'בחג' => [%i(vayakheil pikudei), %i(tazria metzora), %i(acharei kedoshim), %i(behar bechukosai), %i(matos masei), %i(nitzavim vayeilech)],
                         'בשה' => [%i(vayakheil pikudei), %i(tazria metzora), %i(acharei kedoshim), %i(behar bechukosai), %i(matos masei), %i(nitzavim vayeilech)],
                         'גכה' => [%i(vayakheil pikudei), %i(tazria metzora), %i(acharei kedoshim), %i(behar bechukosai), %i(matos masei), %i(nitzavim vayeilech)],
                         'הכז' => [%i(vayakheil pikudei), %i(tazria metzora), %i(acharei kedoshim), %i(matos masei)],
                         'השא' => [%i(tazria metzora), %i(acharei kedoshim), %i(behar bechukosai), %i(matos masei)],
                         'זחא' => [%i(vayakheil pikudei), %i(tazria metzora), %i(acharei kedoshim), %i(behar bechukosai), %i(matos masei)],
                         'זשג' => [%i(vayakheil pikudei), %i(tazria metzora), %i(acharei kedoshim), %i(behar bechukosai), %i(matos masei)],
                     }[kviah] :
                     {
                         'בחה' => [%i(chukas balak), %i(matos masei), %i(nitzavim vayeilech)],
                         'בשז' => [%i(matos masei)],
                         'גכז' => [%i(matos masei)],
                         'החא' => [],
                         'השג' => [%i(nitzavim vayeilech)],
                         'זחג' => [%i(matos masei), %i(nitzavim vayeilech)],
                         'זשה' => [%i(chukas balak), %i(matos masei), %i(nitzavim vayeilech)],
                         'בחג' => [%i(vayakheil pikudei), %i(tazria metzora), %i(acharei kedoshim), %i(behar bechukosai), %i(matos masei), %i(nitzavim vayeilech)],
                         'בשה' => [%i(vayakheil pikudei), %i(tazria metzora), %i(acharei kedoshim), %i(behar bechukosai), %i(chukas balak), %i(matos masei), %i(nitzavim vayeilech)],
                         'גכה' => [%i(vayakheil pikudei), %i(tazria metzora), %i(acharei kedoshim), %i(behar bechukosai), %i(chukas balak), %i(matos masei), %i(nitzavim vayeilech)],
                         'הכז' => [%i(vayakheil pikudei), %i(tazria metzora), %i(acharei kedoshim), %i(behar bechukosai), %i(matos masei)],
                         'השא' => [%i(tazria metzora), %i(acharei kedoshim), %i(behar bechukosai), %i(matos masei)],
                         'זחא' => [%i(vayakheil pikudei), %i(tazria metzora), %i(acharei kedoshim), %i(behar bechukosai), %i(matos masei)],
                         'זשג' => [%i(vayakheil pikudei), %i(tazria metzora), %i(acharei kedoshim), %i(behar bechukosai), %i(matos masei), %i(nitzavim vayeilech)],
                     }[kviah]
    modifications.inject(default_units) do |transitioned_units, parsha_pair|
      index = transitioned_units.index(parsha_pair.first)
      transitioned_units[0...index] + [parsha_pair] + transitioned_units[(index + 2)..-1]
    end
  end
end

#default_unitsObject



21
22
23
24
25
26
27
# File 'lib/zmanim/limudim/calculators/parsha.rb', line 21

def default_units
  %i(bereishis noach lech_lecha vayeira chayei_sarah toldos vayeitzei vayishlach vayeishev mikeitz vayigash vayechi
     shemos vaeirah bo beshalach yisro mishpatim terumah tetzaveh ki_sisa vayakheil pekudei
     vayikra tzav shemini tazria metzora acharei kedoshim emor behar bechukosai
     bamidbar naso behaalosecha shelach korach chukas balak pinchas matos masei
     devarim vaeschanan eikev reei shoftim ki_seitzei ki_savo nitzavim vayeilech haazinu vezos_haberacha)
end

#interval_end_calculationObject



35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/zmanim/limudim/calculators/parsha.rb', line 35

def interval_end_calculation
  ->(cycle, start_date) do
    skips = in_israel ?
                    [[1, (15..21)], [3, [6]], [7, [1,2,10] + (15..21).to_a]] :
                    [[1, (15..22)], [3, [6,7]], [7, [1,2,10] + (15..22).to_a]]
    end_date = start_date + (7 - start_date.day_of_week)
    while skips.detect{|month, days| month == end_date.jewish_month && days.include?(end_date.jewish_day) } do
      end_date += 7
    end
    end_date > cycle.end_date ? cycle.end_date : end_date
  end
end

#perpetual_cycle_anchorObject



17
18
19
# File 'lib/zmanim/limudim/calculators/parsha.rb', line 17

def perpetual_cycle_anchor
  Zmanim::Limudim::Anchor::DayOfYearAnchor.new(7, in_israel ? 23 : 24)
end

#tiered_units?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/zmanim/limudim/calculators/parsha.rb', line 13

def tiered_units?
  false
end