Skip to content

Commit a03cdf1

Browse files
authored
Merge pull request #35 from opensource-nepal/tests
Updated tests and some codes for edge cases
2 parents a5b0c8f + 133d8d1 commit a03cdf1

File tree

7 files changed

+346
-296
lines changed

7 files changed

+346
-296
lines changed

src/NepaliDate.ts

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -145,15 +145,6 @@ class NepaliDate {
145145
return this.timestamp
146146
}
147147

148-
/**
149-
* Parses a string representation of a Nepali calendar date and sets the NepaliDate object accordingly.
150-
*
151-
* @param {string} dateString - The string representation of the Nepali calendar date.
152-
*/
153-
parse(dateString: string) {
154-
this.set.apply(this, parse(dateString))
155-
}
156-
157148
/**
158149
* Retrieves the year of the Nepali date in the Nepali calendar.
159150
*
@@ -419,10 +410,10 @@ class NepaliDate {
419410
year: number,
420411
month: number,
421412
date: number,
422-
hour: number = 0,
423-
minute: number = 0,
424-
second: number = 0,
425-
ms: number = 0
413+
hour: number,
414+
minute: number,
415+
second: number,
416+
ms: number
426417
) {
427418
validateTime(hour, minute, second, ms)
428419
const [yearEn, month0EN, dayEn] = dateConverter.nepaliToEnglish(
@@ -495,7 +486,9 @@ class NepaliDate {
495486
}
496487
}
497488

498-
NepaliDate.minimum = () => new Date(dateConverter.enMinYear(), 0, 1)
499-
NepaliDate.maximum = () => new Date(dateConverter.enMaxYear(), 11, 31)
489+
NepaliDate.minimum = () =>
490+
NepaliDate.fromEnglishDate(dateConverter.enMinYear(), 0, 1).getDateObject()
491+
NepaliDate.maximum = () =>
492+
NepaliDate.fromEnglishDate(dateConverter.enMaxYear(), 11, 31).getDateObject()
500493

501494
export default NepaliDate

src/dateConverter/dateConverter.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,7 @@ const npMaxYear = (): number => {
9494
* @returns A boolean indicating whether the year is a leap year.
9595
*/
9696
const _isLeapYear = (year: number): boolean => {
97-
if (year % 400 === 0) return true
98-
99-
if (year % 100 === 0) return false
100-
101-
return year % 4 === 0
97+
return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)
10298
}
10399

104100
/**

src/format.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,10 @@ function millisecondNp(format: string, size: number): Formatter {
327327

328328
function amPmUpperCaseEn(format: string, size: number): Formatter {
329329
return date => {
330-
return date.hour > 12 ? 'PM' : 'AM'
330+
if (size === 1) {
331+
return date.hour > 12 ? 'PM' : 'AM'
332+
}
333+
return format.repeat(size)
331334
}
332335
}
333336

@@ -344,13 +347,16 @@ function amPmNp(format: string, size: number): Formatter {
344347
* - बेलुका
345348
* - रात
346349
*/
347-
return format
350+
return format.repeat(size)
348351
}
349352
}
350353

351354
function amPmLowerCaseEn(format: string, size: number): Formatter {
352355
return date => {
353-
return date.hour > 12 ? 'pm' : 'am'
356+
if (size === 1) {
357+
return date.hour > 12 ? 'pm' : 'am'
358+
}
359+
return format.repeat(size)
354360
}
355361
}
356362

src/parse.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,22 @@ function parseDate(dateString: string): number[] {
5353
function parseTime(timeString: string): number[] {
5454
if (!timeString) return [0, 0, 0, 0]
5555

56-
const parts: string[] = timeString.split(':', 4)
57-
const [hour = 0, minute = 0, second = 0, ms = 0] = parts.map(d => {
56+
// fetching milliseconds first
57+
const [hmsString, msString = '0'] = timeString.split('.', 2)
58+
59+
const parts: string[] = hmsString.split(':', 3)
60+
const [hour, minute = 0, second = 0] = parts.map(d => {
5861
const n = parseInt(d, 10)
5962
if (Number.isNaN(n)) {
6063
throw new Error('Invalid time')
6164
}
6265
return n
6366
})
67+
68+
// converting milliseconds into numbers
69+
let ms = parseInt(msString, 10)
70+
if (Number.isNaN(ms)) ms = 0
71+
6472
return [hour, minute, second, ms]
6573
}
6674

src/validators.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ export const validateMillisecond = (millisecond: number) => {
6969
export const validateTime = (
7070
hour: number,
7171
minute: number,
72-
second: number = 0,
73-
ms: number = 0
72+
second: number,
73+
ms: number
7474
) => {
7575
validateHour(hour)
7676
validateMinute(minute)

0 commit comments

Comments
 (0)