@darkeyedevelopers/natural-cron.js
Version:
Pure JavaScript library for converting natural English phrases into Cron expressions
115 lines (108 loc) • 3.51 kB
JavaScript
;
//regexString json
var regexString = {
every : {
"regextest" : "^(every|each|all|entire)$"
},
clockTime : {
//https://regexr.com/3qqbn
"regextest" : "^([0-9]+:)?[0-9]+ *(AM|PM)$|^([0-9]+:[0-9]+)$|(noon|midnight)",
//https://regexr.com/3qqbt
"regexexec" : [
"^[0-9]+",
":[0-9]+",
"pm",
"am",
"(noon|midnight)"
]
},
year : {
"regextest" : "((years|year)|([0-9]{4}[0-9]*(( ?and)?,? ?))+)",
"regexexec" : [
"^(years|year)$",
"[0-9]*",
"^[0-9]{4}$"
]
},
frequencyWith : {
"regextest" : "^[0-9]+(th|nd|rd|st)$"
},
frequencyOnly : {
"regextest" : "^[0-9]+$",
"regexexec" : "^[0-9]+"
},
minute : {
"regextest" : "(minutes|minute|mins|min)",
"regexexec" : [
"^(minutes|minute|mins|min)$"
]
},
hour : {
"regextest" : "(hour|hrs|hours)",
"regexexec" : [
"^(hour|hrs|hours)$"
]
},
day : {
//https://regexr.com/3qqc3
"regextest" : "^((days|day)|(((monday|tuesday|wednesday|thursday|friday|saturday|sunday|WEEKEND|MON|TUE|WED|THU|FRI|SAT|SUN)( ?and)?,? ?)+))$",
"regexexec" : [
"^(day|days)$",
"(MON|TUE|WED|THU|FRI|SAT|SUN|WEEKEND)"
]
},
month : {
//https://regexr.com/3r1na
"regextest" : "^((months|month)|(((january|february|march|april|may|june|july|august|september|october|november|december|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEPT|OCT|NOV|DEC)( ?and)?,? ?)+))$",
"regexexec" : [
"^(month|months)$",
"(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEPT|OCT|NOV|DEC)"
]
},
rangeStart : {
"regextest" : "(between|starting|start)" ,
},
rangeEnd : {
"regextest" : "(to|through|ending|end|and)" ,
},
tokenising : {
"regexexec" : "(hour|hrs|hours)|(minutes|minute|mins|min)|((months|month)|(((january|february|march|april|may|june|july|august|september|october|november|december|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEPT|OCT|NOV|DEC)( ?and)?,? ?)+))|[0-9]+(th|nd|rd|st)|(([0-9]+:)?[0-9]+( +)?(AM|PM))|([0-9]+:[0-9]+)|(noon|midnight)|((days|day)|(((monday|tuesday|wednesday|thursday|friday|saturday|sunday|WEEKEND|MON|TUE|WED|THU|FRI|SAT|SUN)( ?and)?,? ?)+))|(([0-9]{4}[0-9]*(( ?and)?,? ?))+)|([0-9]+)|(to|through|ending|end|and)|(between|starting|start)"
}
}
var defaultFlags = {
"isRangeForDay" : false,
"isRangeForMonth" : false,
"isRangeForYear" : false,
"isRangeForHour" : false,
"isRangeForMin" : false
};
var defaultResultCron = {
"min" : "*",
"hour" : "*",
"day_of_month" : "*",
"month" : "*",
"day_of_week" : "?",
"year" : "*"
};
var flags = {
"isRangeForDay" : defaultFlags.isRangeForDay,
"isRangeForMonth" : defaultFlags.isRangeForMonth,
"isRangeForYear" : defaultFlags.isRangeForYear,
"isRangeForHour" : defaultFlags.isRangeForHour,
"isRangeForMin" : defaultFlags.isRangeForMin
};
var resultCron = {
"min" : defaultResultCron.min,
"hour" : defaultResultCron.hour,
"day_of_month" : defaultResultCron.day_of_month,
"month" : defaultResultCron.month,
"day_of_week" : defaultResultCron.day_of_week,
"year" : defaultResultCron.year
};
module.exports = {
regexString,
defaultFlags,
defaultResultCron,
flags,
resultCron
}