UNPKG

@heknon/node-webtop

Version:

A Backend for an unofficial WebTop (SmartSchool - Israel) API.

116 lines (115 loc) 3.54 kB
"use strict"; 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; } };