snow-forecast-sfr
Version:
An NPM module that scrapes snow-forecast for the relevant resort and returns its information.
52 lines (51 loc) • 2.09 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const TimeUtil = {
times: ['AM', 'PM', 'night'],
days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
currentDayOffset: 0,
MIN_DAY_STRING_LEN: 4,
MAX_INDEX_CNT: 17,
getTime(timePeriodIndex, startDay, index) {
const timeDiff = (timePeriodIndex + index) % this.times.length;
const dayDiff = this.getDayOffset(startDay, timePeriodIndex, index);
if (index === this.MAX_INDEX_CNT) {
this.currentDayOffset = 0;
}
return this.days[dayDiff] + ' ' + this.times[timeDiff];
},
getTimeOffset(startTime) {
return this.times.indexOf(startTime);
},
getDayOffset(startDay, timePeriodIndex, index) {
const firstDayPos = this.days.indexOf(this.getCorrectDay(startDay));
if (((timePeriodIndex + index) / this.times.length) % 1 === 0 && timePeriodIndex + index !== 0) {
this.currentDayOffset++;
}
return (firstDayPos + this.currentDayOffset) % this.days.length;
},
getDay(lastUpdateDate, timePeriodIndex, index) {
const offset = Math.floor((timePeriodIndex + index) / this.times.length);
const date = new Date(lastUpdateDate.trim());
if (offset > 0) {
date.setDate(date.getDate() + offset);
}
return date.toDateString();
},
getCorrectDay(day) {
if (day.length > this.MIN_DAY_STRING_LEN) {
return day.split(' ')[0].trim();
}
return this.days.find((currentDay) => currentDay.includes(day));
},
fixIssueDateFormat(issuedDate) {
const tmpDateArray = issuedDate.split(' ');
const tmpDate = tmpDateArray.join('').match(/(\d+|[^\d]+)/g);
return tmpDate[0] + tmpDate[1].trim() + ' ' + tmpDate[2] + ' ' + tmpDate[3].trim() + ' ' + tmpDate[4];
},
getPrevDay(startDay) {
const index = this.days.indexOf(startDay);
return index === 0 ? this.days[6] : this.days[index - 1];
},
};
exports.default = TimeUtil;