vague-time
Version:
A tiny library that formats precise time differences as a vague/fuzzy time.
1 lines • 1.22 kB
JavaScript
!function(e){"use strict";var d,n;function m(e){throw new Error("Invalid "+e)}function p(e,n,t){return void 0===e?t:("string"==typeof e&&(e=parseInt(e,10)),r=e,("[object Date]"!==Object.prototype.toString.call(r)||isNaN(r.getTime()))&&("number"!=typeof(o=e)||isNaN(o))&&m("time"),"number"==typeof e&&"s"===n&&(e*=1e3),e);var o,r}function l(e,n){return e+" "+n+" ago"}function v(e,n){return"in "+e+" "+n}function h(e){return"hour"===e?"an":"a"}function g(e,n,t){return{v:e===l?-n:n,u:t}}d={year:315576e5,month:26298e5,week:6048e5,day:864e5,hour:36e5,minute:6e4},n={get:function(e){var n,t,o,r,i,u,f,a,s;n=Date.now(),c=e.units,t=void 0===c?"ms":"s"===c||"ms"===c?c:void m("units"),o=p(e.from,t,n)-p(e.to,t,n),s="s",0<=o?r=l:(o=-o,r=v);var c;for(i in d)if(d.hasOwnProperty(i)){if(f=d[i],o<(a=f/4))continue;if(o<f-a){if("hour"!==i)continue;f="half "+h(i),u=.5,s=""}else switch(f=u=Math.round(o/f)){case 1:f=h(i),s="";break;case 2:f="a couple of"}return e.raw?g(r,u,i):r(f,i+s)}if(e.raw)return g(r,0,null);return r.f}},"function"==typeof define&&define.amd?define("vagueTime",["exports"],function(e){e.get=n.get}):"undefined"!=typeof module&&module&&module.exports?module.exports=n:e.vagueTime=n,l.f="just now",v.f="soon"}(this);