1
- import { hebrew2abs , abs2hebrew , isLeapYear , months , monthsInYear ,
2
- shortKislev , longCheshvan , SimpleHebrewDate } from './hdate' ;
1
+ import {
2
+ hebrew2abs ,
3
+ abs2hebrew ,
4
+ isLeapYear ,
5
+ months ,
6
+ monthsInYear ,
7
+ shortKislev ,
8
+ longCheshvan ,
9
+ SimpleHebrewDate ,
10
+ } from './hdate' ;
3
11
import { greg } from './greg' ;
4
12
5
13
const NISAN = months . NISAN ;
@@ -11,21 +19,26 @@ const ADAR_I = months.ADAR_I;
11
19
const ADAR_II = months . ADAR_II ;
12
20
13
21
/**
14
- * Returns true if the object is a Javascript Date
22
+ * Returns true if the object is a SimpleHebrewDate
15
23
* @private
16
24
* @param {Object } obj
17
25
*/
18
26
function isSimpleHebrewDate ( obj : any ) : boolean {
19
- return typeof obj === 'object' && obj !== null &&
27
+ return (
28
+ typeof obj === 'object' &&
29
+ obj !== null &&
20
30
typeof obj . yy === 'number' &&
21
31
typeof obj . mm === 'number' &&
22
- typeof obj . dd === 'number' ;
32
+ typeof obj . dd === 'number'
33
+ ) ;
23
34
}
24
35
25
36
/**
26
37
* @private
27
38
*/
28
- function toSimpleHebrewDate ( obj : Date | SimpleHebrewDate | number ) : SimpleHebrewDate {
39
+ function toSimpleHebrewDate (
40
+ obj : Date | SimpleHebrewDate | number
41
+ ) : SimpleHebrewDate {
29
42
if ( isSimpleHebrewDate ( obj ) ) {
30
43
return obj as SimpleHebrewDate ;
31
44
} else if ( typeof obj === 'number' ) {
@@ -71,33 +84,47 @@ function toSimpleHebrewDate(obj: Date | SimpleHebrewDate | number): SimpleHebrew
71
84
* @param {Date | SimpleHebrewDate | number } date Gregorian or Hebrew date of death
72
85
* @return {Date } anniversary occurring in `hyear`
73
86
*/
74
- export function getYahrzeit ( hyear : number , date : Date | SimpleHebrewDate | number ) : Date | undefined {
87
+ export function getYahrzeit (
88
+ hyear : number ,
89
+ date : Date | SimpleHebrewDate | number
90
+ ) : Date | undefined {
75
91
const hd = getYahrzeitHD ( hyear , date ) ;
76
92
if ( typeof hd === 'undefined' ) {
77
93
return hd ;
78
94
}
79
95
return greg . abs2greg ( hebrew2abs ( hd . yy , hd . mm , hd . dd ) ) ;
80
96
}
81
97
82
- export function getYahrzeitHD ( hyear : number , date : Date | SimpleHebrewDate | number ) : SimpleHebrewDate | undefined {
98
+ export function getYahrzeitHD (
99
+ hyear : number ,
100
+ date : Date | SimpleHebrewDate | number
101
+ ) : SimpleHebrewDate | undefined {
83
102
let hDeath = toSimpleHebrewDate ( date ) ;
84
103
if ( hyear <= hDeath . yy ) {
85
104
// Hebrew year ${hyear} occurs on or before original date in ${hDeath.yy}
86
105
return undefined ;
87
106
}
88
107
89
- if ( hDeath . mm == CHESHVAN && hDeath . dd == 30 && ! longCheshvan ( hDeath . yy + 1 ) ) {
108
+ if (
109
+ hDeath . mm === CHESHVAN &&
110
+ hDeath . dd === 30 &&
111
+ ! longCheshvan ( hDeath . yy + 1 )
112
+ ) {
90
113
// If it's Heshvan 30 it depends on the first anniversary;
91
114
// if that was not Heshvan 30, use the day before Kislev 1.
92
115
hDeath = abs2hebrew ( hebrew2abs ( hyear , KISLEV , 1 ) - 1 ) ;
93
- } else if ( hDeath . mm == KISLEV && hDeath . dd == 30 && shortKislev ( hDeath . yy + 1 ) ) {
116
+ } else if (
117
+ hDeath . mm === KISLEV &&
118
+ hDeath . dd === 30 &&
119
+ shortKislev ( hDeath . yy + 1 )
120
+ ) {
94
121
// If it's Kislev 30 it depends on the first anniversary;
95
122
// if that was not Kislev 30, use the day before Teveth 1.
96
123
hDeath = abs2hebrew ( hebrew2abs ( hyear , TEVET , 1 ) - 1 ) ;
97
- } else if ( hDeath . mm == ADAR_II ) {
124
+ } else if ( hDeath . mm === ADAR_II ) {
98
125
// If it's Adar II, use the same day in last month of year (Adar or Adar II).
99
126
hDeath . mm = monthsInYear ( hyear ) ;
100
- } else if ( hDeath . mm == ADAR_I && hDeath . dd == 30 && ! isLeapYear ( hyear ) ) {
127
+ } else if ( hDeath . mm === ADAR_I && hDeath . dd = == 30 && ! isLeapYear ( hyear ) ) {
101
128
// If it's the 30th in Adar I and year is not a leap year
102
129
// (so Adar has only 29 days), use the last day in Shevat.
103
130
hDeath . dd = 30 ;
@@ -106,10 +133,10 @@ export function getYahrzeitHD(hyear: number, date: Date | SimpleHebrewDate | num
106
133
// In all other cases, use the normal anniversary of the date of death.
107
134
108
135
// advance day to rosh chodesh if needed
109
- if ( hDeath . mm == CHESHVAN && hDeath . dd == 30 && ! longCheshvan ( hyear ) ) {
136
+ if ( hDeath . mm === CHESHVAN && hDeath . dd = == 30 && ! longCheshvan ( hyear ) ) {
110
137
hDeath . mm = KISLEV ;
111
138
hDeath . dd = 1 ;
112
- } else if ( hDeath . mm == KISLEV && hDeath . dd == 30 && shortKislev ( hyear ) ) {
139
+ } else if ( hDeath . mm === KISLEV && hDeath . dd = == 30 && shortKislev ( hyear ) ) {
113
140
hDeath . mm = TEVET ;
114
141
hDeath . dd = 1 ;
115
142
}
@@ -143,15 +170,21 @@ export function getYahrzeitHD(hyear: number, date: Date | SimpleHebrewDate | num
143
170
* @param {Date | SimpleHebrewDate | number } date Gregorian or Hebrew date of event
144
171
* @return {Date } anniversary occurring in `hyear`
145
172
*/
146
- export function getBirthdayOrAnniversary ( hyear : number , date : Date | SimpleHebrewDate ) : Date | undefined {
173
+ export function getBirthdayOrAnniversary (
174
+ hyear : number ,
175
+ date : Date | SimpleHebrewDate
176
+ ) : Date | undefined {
147
177
const hd = getBirthdayHD ( hyear , date ) ;
148
178
if ( typeof hd === 'undefined' ) {
149
179
return hd ;
150
180
}
151
181
return greg . abs2greg ( hebrew2abs ( hd . yy , hd . mm , hd . dd ) ) ;
152
182
}
153
183
154
- export function getBirthdayHD ( hyear : number , date : Date | SimpleHebrewDate ) : SimpleHebrewDate | undefined {
184
+ export function getBirthdayHD (
185
+ hyear : number ,
186
+ date : Date | SimpleHebrewDate
187
+ ) : SimpleHebrewDate | undefined {
155
188
const orig = toSimpleHebrewDate ( date ) ;
156
189
const origYear = orig . yy ;
157
190
if ( hyear === origYear ) {
@@ -164,15 +197,20 @@ export function getBirthdayHD(hyear: number, date: Date | SimpleHebrewDate): Sim
164
197
let month = orig . mm ;
165
198
let day = orig . dd ;
166
199
167
- if ( ( month == ADAR_I && ! isOrigLeap ) || ( month == ADAR_II && isOrigLeap ) ) {
200
+ if ( ( month === ADAR_I && ! isOrigLeap ) || ( month = == ADAR_II && isOrigLeap ) ) {
168
201
month = monthsInYear ( hyear ) ;
169
- } else if ( month == CHESHVAN && day == 30 && ! longCheshvan ( hyear ) ) {
202
+ } else if ( month === CHESHVAN && day = == 30 && ! longCheshvan ( hyear ) ) {
170
203
month = KISLEV ;
171
204
day = 1 ;
172
- } else if ( month == KISLEV && day == 30 && shortKislev ( hyear ) ) {
205
+ } else if ( month === KISLEV && day = == 30 && shortKislev ( hyear ) ) {
173
206
month = TEVET ;
174
207
day = 1 ;
175
- } else if ( month == ADAR_I && day == 30 && isOrigLeap && ! isLeapYear ( hyear ) ) {
208
+ } else if (
209
+ month === ADAR_I &&
210
+ day === 30 &&
211
+ isOrigLeap &&
212
+ ! isLeapYear ( hyear )
213
+ ) {
176
214
month = NISAN ;
177
215
day = 1 ;
178
216
}
0 commit comments