Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 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 90 91 92 93 94 95 96 97 98 99 | 3x 3x 3x 3x 3x 3x | const findMovableGurpurab = require( './findMovableGurpurab' )
const getDateFromNanakshahi = require( './getDateFromNanakshahi' )
const getNanakshahiDate = require( './getNanakshahiDate' )
const { gurpurabs, months } = require( './consts' )
const { leapYear, toGurmukhiNum } = require( './utils' )
/**
* Returns all Gurpurabs for a Nanakshahi Month
* @param {!number} month Nanakshahi Month, 1-12
* @param {!number} [year] Nanakshahi Year. Default is current Nanakshahi Year.
* @return {Object} Gurpurabs for the month with Date and name in English and Punjabi
* @example getGurpurabsForMonth( 1 )
*/
function getGurpurabsForMonth( month, year = getNanakshahiDate().englishDate.year ) {
// Get Fesitval dates for specific Nanakshahi Month
const calendarDates = gurpurabs[ month ]
// Go though list and add dates
const gurpurabsList = []
calendarDates.forEach( value => {
const nanakshahiDate = getDateFromNanakshahi( year, month, value.date )
gurpurabsList.push( {
date: {
gregorianDate: nanakshahiDate.gregorianDate,
nanakshahiDate: {
englishDate: {
date: nanakshahiDate.englishDate.date,
day: nanakshahiDate.englishDate.day,
},
punjabiDate: {
date: nanakshahiDate.punjabiDate.date,
day: nanakshahiDate.punjabiDate.day,
},
},
},
gurpurabs: value.gurpurabs,
} )
} )
// Length of Nanakshahi Months
const monthLength = [
31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30,
leapYear( year + 1468 ) ? 31 : 30, // Phagun Leap Check
]
// Check all moveable gurpurabs fall in Nanakshahi month
const startMonth = getDateFromNanakshahi( year, month, 1 ).gregorianDate
const movableGurpurabs = [ 'ravidaas', 'holla', 'kabeer', 'bandichhorr', 'naamdev', 'gurunanak' ]
movableGurpurabs.forEach( value => {
const { gregorianDate, name } = findMovableGurpurab( value, startMonth.getFullYear() )
const diffDays = ( gregorianDate.getTime() - startMonth.getTime() ) / ( 1000 * 60 * 60 * 24 )
if ( diffDays < monthLength[ month - 1 ] && diffDays >= 0 ) {
const { englishDate, punjabiDate } = getNanakshahiDate( gregorianDate )
gurpurabsList.push( {
date: {
gregorianDate,
nanakshahiDate: {
englishDate: {
date: englishDate.date,
day: englishDate.day,
},
punjabiDate: {
date: punjabiDate.date,
day: punjabiDate.day,
},
},
},
gurpurabs: [ name ],
} )
}
} )
// Sort gurpurabs based on Nanakshahi Date
gurpurabsList.sort( ( a, b ) => (
a.date.nanakshahiDate.englishDate.date - b.date.nanakshahiDate.englishDate.date
) )
// Add month metadata
const nanakshahiMonth = {
englishMonth: {
month,
monthName: months[ month - 1 ].en,
year,
},
punjabiMonth: {
month: toGurmukhiNum( month ),
monthName: months[ month - 1 ].pa,
year: toGurmukhiNum( year ),
},
}
return {
nanakshahiMonth,
gurpurabs: gurpurabsList,
}
}
module.exports = getGurpurabsForMonth
|