@heknon/node-webtop
Version:
A Backend for an unofficial WebTop (SmartSchool - Israel) API.
116 lines (115 loc) • 3.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const moment = require("moment");
/**
* wrapper for for loop
* @param from from what number
* @param to to what number (-1)
* @param callback function to be called on each `i`
*/
exports.forloop = (from, to, callback) => {
for (let i = from; i < to; i++) {
callback(i);
}
};
exports.dayNumberToString = (dayNum) => {
switch (dayNum) {
case 1:
return 'Sunday';
case 2:
return 'Monday';
case 3:
return 'Tuesday';
case 4:
return 'Wednesday';
case 5:
return 'Thursday';
case 6:
return 'Friday';
default:
return 'Saturday';
}
};
exports.isStringNumber = (str) => {
return !Number.isNaN(Number.parseInt(str));
};
exports.inboxSenderTypeFromString = (str) => {
switch (str) {
case 'מורה':
return 'MessageSenderType.Teacher';
case 'מנהלת בית הספר':
return 'MessageSenderType.Principal';
case 'תלמיד':
return 'MessageSenderType.Pupil';
default:
return 'N/A';
}
};
exports.constructTime = (time) => {
const extractedTime = time.match(/(\d{1,2}):(\d{1,2}?\d)/);
return {
hour: Number.parseInt(extractedTime[1]),
minute: Number.parseInt(extractedTime[2])
};
};
exports.extractDateFromString = (str) => {
const date = str.match(/(\d{2})\/(\d{2})\/(\d{2,4})/);
return moment({ year: Number.parseInt(date[3]), month: Number.parseInt(date[2]), day: Number.parseInt(date[1]) });
};
exports.constructSchoolHour = (from, to) => {
return {
from: exports.constructTime(from),
to: exports.constructTime(to)
};
};
exports.extractSchoolHoursFromString = (str) => {
const extractedTimes = str.match(/(\d{1,2}):(\d{1,2}?\d)/g);
if (extractedTimes === null)
return 'כל היום';
const hours = Array();
let currHour = {};
for (let index = 0; index < extractedTimes.length; index++) {
const extractedTime = extractedTimes[index];
const time = exports.constructTime(extractedTime);
if ((index & 1) === 0) {
currHour.from = time;
}
else {
currHour.to = time;
hours.push(currHour);
currHour = {};
}
}
return hours;
};
exports.extractClassFromString = (str, level) => {
const matches = str.match(/([^ ]{1,2})' (\d)/);
const a = {
grade: exports.classToNumber(matches[1]),
number: Number.parseInt(matches[2]),
};
if (level !== -1)
a.level = level;
return a;
};
exports.extractClassesFromString = (str) => {
const studyGroups = str.match(/([^ ]{1,2})' (\d)/g);
const level = str.match(/\([^\d]*(\d+)[^\d]*\)/);
const arr = Array();
for (let index = 0; index < studyGroups.length; index++) {
const element = studyGroups[index];
arr.push(exports.extractClassFromString(element, level !== null ? Number.parseInt(level[1]) : -1));
}
return arr;
};
exports.stripHTML = (html) => html.replace(/(<([^>]+)>)/ig, '');
exports.classToNumber = (str) => {
if (str.length < 2)
return str.charCodeAt(0) - 1487;
switch (str) {
case 'יא':
return 11;
case 'יב':
return 12;
}
};