UNPKG

cronli5

Version:

Cron Like I'm Five: A Cron to English Utility

4 lines 4.47 kB
/** * @license MIT, Copyright (c) 2016 Andrew Broz */ !function(n){function e(n,e){return r(e),n=t(n),a(n)||h(n)||m(n)||b(n)+" "+A(n)+" "+M(n)}function r(n){n=n||{},F="boolean"==typeof n.ampm?n.ampm:!0,U=!!n.seconds,k=!!n["short"],D=!!n.years}function t(n){var e=n instanceof Array;if(!n||e&&0===n.length)throw new Error("`cronli5` expects a non-empty cron pattern as the first argument.");if(e)return o(n);if("object"==typeof n)return i(n);if("string"==typeof n)return u(n);throw new Error("`cronli5` was passed an unexpected type.")}function o(n){var e=D?7:6;if(n.length>e)throw new Error("`cronli5` was passed a cron pattern with more than "+J(e)+" fields.");return!U&&n.length<e&&n.unshift("0"),{second:n[0]||"0",minute:n[1]||"*",hour:n[2]||"*",date:n[3]||"*",month:n[4]||"*",weekday:n[5]||"*",year:n[6]||"*"}}function i(n){if(!n.second&&!n.minute&&!n.hour)throw new Error("`cronli5` expects that any object being interpreted as a cron pattern have at least one of the following properties: `second`, `minute`, or `hour`");var e=n.second?"*":"0",r=n.second||n.minute?"*":"0";return{second:n.second||"0",minute:n.minute||e,hour:n.hour||r,date:n.date||"*",month:n.month||"*",weekday:n.weekday||"*",year:n.year||"*"}}function u(n){var e=n.split(/\s+/);return o(e)}function a(n){var e=n.second;return s(e)||c(e)||f(e)||d(e)}function s(n){if(O(n,"-")){var e="every second between ";n=n.split("-");var r=n[0],t=n[1];return t>1?e+=J(t)+" seconds":1!=t&&0!=t||(e+="second"),"*"!==r&&"0"!==r&&(e+=" past second "+J(r)),e}}function c(n){if(O(n,"/")){var e="every ";n=n.split("/");var r=n[0],t=n[1];return t>1?e+=J(t)+" seconds":1!=t&&0!=t||(e+="second"),"*"!==r&&"0"!==r&&(e+=" past second "+J(r)),e}}function f(n){return O(n,",")?"on seconds "+n.slice(0,-1).map(J).join(", ")+" and "+J(n.slice(-1)[0]):void 0}function d(n){return"*"===n?"every second":"0"===n?"":"on second "+J(n)}function h(n){return p(n.minute)||y(n.minute)||l(n.minute)}function p(n){return O(n,",")?(n=n.split(","),"on minutes "+n.slice(0,-1).map(J).join(", ")+" and "+J(n.slice(-1)[0])):void 0}function y(n){if(O(n,"/")){var e="every ";n=n.split("/");var r=n[0],t=n[1];return t>1?e+=J(t)+" minutes":1!=t&&0!=t||(e+="minute"),"*"!==r&&"0"!==r&&(e+=" past minute "+J(r)),e}}function l(n){return"*"===n?"every minute":"0"===n?"":"on minute "+J(n)}function m(n){return v(n)||w(n)||g(n)}function v(n){var e=n.hour;if(O(e,","))return e=e.split(","),"on hours "+e.slice(0,-1).map(J).join(", ")+" and "+J(e.slice(-1)[0])}function w(n){var e=n.hour;if(O(e,"/")){e=e.split("/");var r=e[1],t="every ";r>1?t+=J(r)+" hours":1!=r&&0!=r||(t+="hour");var o=e[0];return"*"!==o&&"0"!==o&&(t+=" past hour "+J(o)),t}}function g(n){if("*"===n.hour)return"every hour";var e=M(n)||"";return e&&(e="every "+e+" "),e+"at "+E(n.hour)}function b(n){return S(n)}function A(n){return j(n.month)}function M(n){var e=n.weekday;return O(e,"-")?e.split("-").map(x).join("-"):O(e,",")?(e=e.split(",").map(x),e.slice(0,-1).join(", ")+", and "+e[e.length-1]):x(n.weekday)}function E(n){if(!F)return N(n)+":00";if(n>=12)return(n-12||n)+":00 PM";if(n>=0)return(+n||12)+":00 AM";throw new Error('Tried to interpret "'+JSON.stringify(n)+'" as an hour and failed.')}function J(n){return k?n:P[n]||n}function S(n){return k?T(n):R[n]||T(n)}function T(n){var e=Math.abs(n),r=W[e];return r||(e=(e%100-20)%10,r=W[e]||W[0]),n+r}function j(n){var e=C[n]||B[n];return e&&e[k?1:0]}function x(n){var e=z[n]||G[n];return e&&e[k?1:0]}function N(n){return n=""+n,n.length<2&&(n="0"+n),n}function O(n,e){return n+="",-1!==n.indexOf(e)}var F=!0,U=!1,k=!1,D=!1,P=["zero","one","two","three","four","five","six","seven","eight","nine","ten"],R=[null,"first","second","third","fourth","fifth","sixth","seventh","eighth","ninth","tenth"],W=["th","st","nd","rd"],C=[null,["January","Jan"],["February","Feb"],["March","Mar"],["April","Apr"],["May","May"],["June","Jun"],["July","Jul"],["August","Aug"],["September","Sep"],["October","Oct"],["November","Nov"],["December","Dec"]],z=[["Sunday","Sun"],["Monday","Mon"],["Tuesday","Tue"],["Wednesday","Wed"],["Thursday","Thu"],["Friday","Fri"],["Saturday","Sat"]],B={"*":["month","month"],JAN:C[1],FEB:C[2],MAR:C[3],APR:C[4],MAY:C[5],JUN:C[6],JUL:C[7],AUG:C[8],SEP:C[9],OCT:C[10],NOV:C[11],DEC:C[12]},G={"*":["day","day"],SUN:z[0],MON:z[1],TUE:z[2],WED:z[3],THU:z[4],FRI:z[5],SAT:z[6]};"function"==typeof define&&define.amd?define([],function(){return e}):"object"==typeof exports?module.exports=e:n.cronli5=e}(this);