UNPKG

compromise

Version:
63 lines (58 loc) 1.25 kB
'use strict'; // const isHour = (num) => { if (num && num > 0 && num < 25) { return true; } return false; }; const isMinute = (num) => { if (num && num > 0 && num < 60) { return true; } return false; }; const parseTime = (r) => { let result = { logic: null, hour: null, minute: null, second: null, timezone: null }; let logic = r.match('(by|before|for|during|at|until|after) #Time').firstTerm(); if (logic.found) { result.logic = logic.normal(); } let time = r.match('#Time'); time.forEachTerms((t) => { //3pm let m = t.text.match(/([12]?[0-9]) ?(am|pm)/i); if (m) { result.hour = parseInt(m[1], 10); if (m[2] === 'pm') { result.hour += 12; } if (!isHour(result.hour)) { result.hour = null; } } //3:15 m = t.text.match(/([12]?[0-9]):([0-9][0-9]) ?(am|pm)?/i); if (m) { result.hour = parseInt(m[1], 10); result.minute = parseInt(m[2], 10); if (!isMinute(result.minute)) { result.minute = null; } if (m[3] === 'pm') { result.hour += 12; } if (!isHour(result.hour)) { result.hour = null; } } }); return result; }; module.exports = parseTime;