zmanim 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +22 -0
- data/lib/zmanim.rb +3 -4
- data/lib/zmanim/hebrew_calendar/jewish_calendar.rb +4 -0
- data/lib/zmanim/limudim/calculators/daf_yomi_yerushalmi.rb +2 -6
- data/lib/zmanim/limudim/calculators/pirkei_avos.rb +54 -0
- data/lib/zmanim/limudim/limud_calculator.rb +11 -5
- data/lib/zmanim/limudim/limudim_formatter.rb +6 -0
- data/lib/zmanim/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f1cc976587acbbfd1df9ee5cd4fa5fda1a87e79
|
4
|
+
data.tar.gz: 3769e3712e2161dc0298a4c4d2be922854b97d31
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e5e8c962d601071f4f9fed2fe5d83129ef1fc06738e47a25805869874fc1bd2bc538531551d3cac703f246bca3ad4fa42b1d9fb47a64eeeb4365d028a4fed42
|
7
|
+
data.tar.gz: a39894be370c65758d39925861bcf19c2b108efe9c640001a80d771411692af9ec40b49f9e59006cf31be5aedbfe018d9c73aa9f409bb9e7edc95bf0555ba84c
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# Changelog
|
2
|
+
All notable changes to this project will be documented in this file.
|
3
|
+
|
4
|
+
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
5
|
+
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
6
|
+
|
7
|
+
## [0.2.0] - 2018-04-22
|
8
|
+
### Added
|
9
|
+
- Pirkei Avos limudim calculation
|
10
|
+
- Support for explicit skip_unit (used by DafYomiYerushalmi)
|
11
|
+
- CHANGELOG (this file :) )
|
12
|
+
### Changed
|
13
|
+
- Refactored skip_interval to generic limud detection
|
14
|
+
### Fixed
|
15
|
+
- Cycle detection falsely identifies dates between cycle windows as belonging to a prior cycle
|
16
|
+
- Load sequence can't find Zmanim module when loaded externally
|
17
|
+
|
18
|
+
## [0.1.0] - 2018-01-09 (Original release)
|
19
|
+
### Added
|
20
|
+
- Port of KosherJava/zmanim library, primary functionality
|
21
|
+
- Limudim calculation framework
|
22
|
+
- Weekly Parsha, Tehillim (Month cycle), Mishna Yomis limudim calculation
|
data/lib/zmanim.rb
CHANGED
@@ -143,6 +143,10 @@ module Zmanim::HebrewCalendar
|
|
143
143
|
Zmanim::Limudim::Calculators::MishnaYomis.new.limud(self)
|
144
144
|
end
|
145
145
|
|
146
|
+
def pirkei_avos
|
147
|
+
Zmanim::Limudim::Calculators::PirkeiAvos.new(in_israel: in_israel).limud(self)
|
148
|
+
end
|
149
|
+
|
146
150
|
def tefilah_additions(walled_city: false, nusach: :ashkenaz)
|
147
151
|
additions = []
|
148
152
|
if mashiv_haruach_starts?
|
@@ -33,12 +33,8 @@ module Zmanim::Limudim::Calculators
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
def
|
37
|
-
|
38
|
-
Zmanim::Limudim::Unit.new('no_daf_today')
|
39
|
-
else
|
40
|
-
super
|
41
|
-
end
|
36
|
+
def skip_unit
|
37
|
+
Zmanim::Limudim::Unit.new('no_daf_today')
|
42
38
|
end
|
43
39
|
|
44
40
|
def skip_interval?(interval)
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'zmanim/limudim/limud_calculator'
|
2
|
+
|
3
|
+
module Zmanim::Limudim::Calculators
|
4
|
+
class PirkeiAvos
|
5
|
+
include Zmanim::Limudim::LimudCalculator
|
6
|
+
|
7
|
+
attr_reader :in_israel
|
8
|
+
|
9
|
+
def initialize(in_israel:false)
|
10
|
+
@in_israel = in_israel
|
11
|
+
end
|
12
|
+
|
13
|
+
def tiered_units?
|
14
|
+
false
|
15
|
+
end
|
16
|
+
|
17
|
+
def perpetual_cycle_anchor
|
18
|
+
Zmanim::Limudim::Anchor::DayOfYearAnchor.new(1, in_israel ? 22 : 23) # Day after Pesach
|
19
|
+
end
|
20
|
+
|
21
|
+
def default_units
|
22
|
+
@default_units ||= (1..6).to_a * 4 # 4 sub-cycles of 6 perakim, with the last sub-cycle being compressed as needed
|
23
|
+
end
|
24
|
+
|
25
|
+
def cycle_end_calculation
|
26
|
+
->(start_date, _iteration) do
|
27
|
+
rosh_hashana = Zmanim::HebrewCalendar::JewishDate.new(start_date.jewish_year + 1, 7, 1)
|
28
|
+
rosh_hashana - rosh_hashana.day_of_week # last Shabbos before Rosh Hashanah
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def interval_end_calculation
|
33
|
+
->(cycle, start_date) do
|
34
|
+
start_date + (7 - start_date.day_of_week)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def skip_interval?(interval)
|
39
|
+
!in_israel && [interval.end_date.jewish_month, interval.end_date.jewish_day] == [3,7]
|
40
|
+
end
|
41
|
+
|
42
|
+
def cycle_units_calculation
|
43
|
+
->(cycle) do
|
44
|
+
cycle_weeks = ((cycle.end_date - cycle.start_date + 1) / 7.0).ceil
|
45
|
+
# If the cycle starts on a Friday, outside of israel the 2nd day of Shavuos will fall on Shabbos
|
46
|
+
# and we lose one week in the pirkei avos cycle
|
47
|
+
cycle_weeks -=1 if !in_israel && cycle.start_date.day_of_week == 6
|
48
|
+
unit_count = default_units.length
|
49
|
+
compress_weeks = (unit_count - cycle_weeks) * 2
|
50
|
+
default_units.first(unit_count - compress_weeks) + default_units.last(compress_weeks).each_slice(2).to_a
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -5,14 +5,15 @@ module Zmanim::Limudim
|
|
5
5
|
def limud(date)
|
6
6
|
jewish_date = jewish_date(date)
|
7
7
|
cycle = find_cycle(jewish_date)
|
8
|
-
return nil unless cycle
|
8
|
+
return nil unless cycle && cycle.end_date >= date
|
9
9
|
units = cycle_units_calculation.(cycle)
|
10
10
|
interval = cycle.first_interval(interval_end_calculation)
|
11
11
|
while !jewish_date.between?(interval.start_date, interval.end_date) do
|
12
|
-
interval = interval
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
interval = if skip_interval?(interval)
|
13
|
+
interval.skip(interval_end_calculation)
|
14
|
+
else
|
15
|
+
interval.next(interval_end_calculation)
|
16
|
+
end
|
16
17
|
end
|
17
18
|
unit = unit_for_interval(units, interval)
|
18
19
|
Zmanim::Limudim::Limud.new(interval, unit)
|
@@ -79,10 +80,15 @@ module Zmanim::Limudim
|
|
79
80
|
end
|
80
81
|
|
81
82
|
def unit_for_interval(units, interval)
|
83
|
+
return skip_unit if skip_interval?(interval)
|
82
84
|
return tiered_units_for_interval(units, interval) if tiered_units?
|
83
85
|
Unit.new(*units[interval.iteration-1])
|
84
86
|
end
|
85
87
|
|
88
|
+
def skip_unit
|
89
|
+
nil
|
90
|
+
end
|
91
|
+
|
86
92
|
def skip_interval?(interval)
|
87
93
|
false
|
88
94
|
end
|
@@ -159,6 +159,12 @@ module Zmanim::Limudim
|
|
159
159
|
prefix + limud.unit.render {|e| format_number(e) }
|
160
160
|
end
|
161
161
|
|
162
|
+
def format_avos(limud)
|
163
|
+
return '' unless unit = (limud && limud.unit)
|
164
|
+
prefix = hebrew_format ? 'פרקי אבות ' : 'Pirkei Avos '
|
165
|
+
prefix + unit.render {|e| format_number(e) }
|
166
|
+
end
|
167
|
+
|
162
168
|
private
|
163
169
|
|
164
170
|
def format_number(number)
|
data/lib/zmanim/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zmanim
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pinny Markowitz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tzinfo
|
@@ -90,6 +90,7 @@ extra_rdoc_files: []
|
|
90
90
|
files:
|
91
91
|
- ".gitignore"
|
92
92
|
- ".rspec"
|
93
|
+
- CHANGELOG.md
|
93
94
|
- Gemfile
|
94
95
|
- LICENSE
|
95
96
|
- README.md
|
@@ -108,6 +109,7 @@ files:
|
|
108
109
|
- lib/zmanim/limudim/calculators/daf_yomi_yerushalmi.rb
|
109
110
|
- lib/zmanim/limudim/calculators/mishna_yomis.rb
|
110
111
|
- lib/zmanim/limudim/calculators/parsha.rb
|
112
|
+
- lib/zmanim/limudim/calculators/pirkei_avos.rb
|
111
113
|
- lib/zmanim/limudim/calculators/tehillim_monthly.rb
|
112
114
|
- lib/zmanim/limudim/cycle.rb
|
113
115
|
- lib/zmanim/limudim/interval.rb
|