2015-05-01 18:31:25 +02:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
Object.defineProperty(exports, '__esModule', {
|
|
|
|
value: true
|
|
|
|
});
|
|
|
|
|
|
|
|
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
|
|
|
|
2015-05-05 10:05:13 +02:00
|
|
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
|
|
|
|
2015-05-01 18:31:25 +02:00
|
|
|
var Timestring = (function () {
|
|
|
|
function Timestring() {
|
|
|
|
var settings = arguments[0] === undefined ? {} : arguments[0];
|
|
|
|
|
|
|
|
_classCallCheck(this, Timestring);
|
|
|
|
|
|
|
|
var DEFAULT_SETTINGS = {
|
|
|
|
hoursPerDay: 24,
|
|
|
|
daysPerWeek: 7,
|
|
|
|
weeksPerMonth: 4,
|
|
|
|
monthsPerYear: 12
|
|
|
|
};
|
|
|
|
|
|
|
|
// merge default settings with user settings
|
|
|
|
this.settings = DEFAULT_SETTINGS;
|
|
|
|
for (var s in settings) {
|
|
|
|
this.settings[s] = settings[s];
|
|
|
|
}
|
|
|
|
|
|
|
|
// time units
|
|
|
|
this.units = {
|
|
|
|
s: ['s', 'sec', 'secs', 'second', 'seconds'],
|
|
|
|
m: ['m', 'min', 'mins', 'minute', 'minutes'],
|
|
|
|
h: ['h', 'hr', 'hrs', 'hour', 'hours'],
|
|
|
|
d: ['d', 'day', 'days'],
|
|
|
|
w: ['w', 'week', 'weeks'],
|
|
|
|
mth: ['mth', 'mths', 'month', 'months'],
|
|
|
|
y: ['y', 'yr', 'yrs', 'year', 'years']
|
|
|
|
};
|
|
|
|
|
|
|
|
// time unit seconds mappings
|
|
|
|
this.unitValues = {
|
|
|
|
s: 1,
|
|
|
|
m: 60,
|
|
|
|
h: 3600
|
|
|
|
};
|
|
|
|
|
|
|
|
// dynamic time unit seconds mappings
|
|
|
|
// these are dynamic based on the settings
|
|
|
|
this.unitValues.d = this.settings.hoursPerDay * this.unitValues.h;
|
|
|
|
this.unitValues.w = this.settings.daysPerWeek * this.unitValues.d;
|
|
|
|
this.unitValues.mth = this.settings.weeksPerMonth * this.unitValues.w;
|
|
|
|
this.unitValues.y = this.settings.monthsPerYear * this.unitValues.mth;
|
|
|
|
}
|
|
|
|
|
|
|
|
_createClass(Timestring, [{
|
|
|
|
key: 'parse',
|
|
|
|
value: function parse(string) {
|
|
|
|
var _this = this;
|
|
|
|
|
|
|
|
var returnUnit = arguments[1] === undefined ? 's' : arguments[1];
|
|
|
|
|
|
|
|
// get unit key helper
|
|
|
|
var getUnitKey = function getUnitKey(unit) {
|
|
|
|
for (var k in _this.units) {
|
|
|
|
for (var u in _this.units[k]) {
|
|
|
|
if (unit === _this.units[k][u]) {
|
|
|
|
return k;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// throw error if invalid unit was passed
|
|
|
|
throw new Error('The unit [' + unit + '] is not supported by timestring');
|
|
|
|
};
|
|
|
|
|
|
|
|
// convert a value to a specific unit
|
|
|
|
var convert = function convert(value, unit) {
|
|
|
|
var baseValue = _this.unitValues[getUnitKey(unit)];
|
|
|
|
|
|
|
|
return value / baseValue;
|
|
|
|
};
|
|
|
|
|
|
|
|
// get a value in seconds based on a specific unit
|
|
|
|
var getSeconds = function getSeconds(value, unit) {
|
|
|
|
var baseValue = _this.unitValues[getUnitKey(unit)];
|
|
|
|
|
|
|
|
return value * baseValue;
|
|
|
|
};
|
|
|
|
|
|
|
|
// seconds counter
|
|
|
|
var totalSeconds = 0;
|
|
|
|
|
|
|
|
// split string into groups and get total seconds for each group
|
|
|
|
var groups = string.toLowerCase() // convert words to lower case
|
|
|
|
.replace(/[^\.\w+-]+/g, '') // remove white space
|
|
|
|
.match(/[-+]?[0-9]+[a-z]+/g); // match time groups (digit followed by time unit - i.e 5d 15m = 2 time groups)
|
|
|
|
|
|
|
|
if (groups !== null) {
|
|
|
|
for (var group in groups) {
|
|
|
|
var g = groups[group];
|
|
|
|
var value = g.match(/[0-9]+/g)[0];
|
|
|
|
var unit = g.match(/[a-z]+/g)[0];
|
|
|
|
|
|
|
|
totalSeconds += getSeconds(value, unit);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return convert(totalSeconds, returnUnit);
|
|
|
|
}
|
|
|
|
}]);
|
|
|
|
|
|
|
|
return Timestring;
|
|
|
|
})();
|
|
|
|
|
|
|
|
exports['default'] = Timestring;
|
|
|
|
|
|
|
|
String.prototype.parseTime = function (unit, settings) {
|
|
|
|
return new Timestring(settings).parse(this, unit);
|
|
|
|
};
|
|
|
|
module.exports = exports['default'];
|
2015-05-02 23:38:39 +02:00
|
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVzdHJpbmcuanMiLCJTdHJpbmcucGFyc2VUaW1lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7SUFBQSxVQUFBO0FBQ0EsV0FEQSxVQUFBLEdBQ0E7UUFBQSxRQUFBLGdDQUFBLEVBQUE7OzBCQURBLFVBQUE7O0FBRUEsUUFBQSxnQkFBQSxHQUFBO0FBQ0EsaUJBQUEsRUFBQSxFQUFBO0FBQ0EsaUJBQUEsRUFBQSxDQUFBO0FBQ0EsbUJBQUEsRUFBQSxDQUFBO0FBQ0EsbUJBQUEsRUFBQSxFQUFBO0tBQ0EsQ0FBQTs7O0FBR0EsUUFBQSxDQUFBLFFBQUEsR0FBQSxnQkFBQSxDQUFBO0FBQ0EsU0FBQSxJQUFBLENBQUEsSUFBQSxRQUFBLEVBQUE7QUFBQSxVQUFBLENBQUEsUUFBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLFFBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtLQUFBOzs7QUFHQSxRQUFBLENBQUEsS0FBQSxHQUFBO0FBQ0EsT0FBQSxFQUFBLENBQUEsR0FBQSxFQUFBLEtBQUEsRUFBQSxNQUFBLEVBQUEsUUFBQSxFQUFBLFNBQUEsQ0FBQTtBQUNBLE9BQUEsRUFBQSxDQUFBLEdBQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxFQUFBLFFBQUEsRUFBQSxTQUFBLENBQUE7QUFDQSxPQUFBLEVBQUEsQ0FBQSxHQUFBLEVBQUEsSUFBQSxFQUFBLEtBQUEsRUFBQSxNQUFBLEVBQUEsT0FBQSxDQUFBO0FBQ0EsT0FBQSxFQUFBLENBQUEsR0FBQSxFQUFBLEtBQUEsRUFBQSxNQUFBLENBQUE7QUFDQSxPQUFBLEVBQUEsQ0FBQSxHQUFBLEVBQUEsTUFBQSxFQUFBLE9BQUEsQ0FBQTtBQUNBLFNBQUEsRUFBQSxDQUFBLEtBQUEsRUFBQSxNQUFBLEVBQUEsT0FBQSxFQUFBLFFBQUEsQ0FBQTtBQUNBLE9BQUEsRUFBQSxDQUFBLEdBQUEsRUFBQSxJQUFBLEVBQUEsS0FBQSxFQUFBLE1BQUEsRUFBQSxPQUFBLENBQUE7S0FDQSxDQUFBOzs7QUFHQSxRQUFBLENBQUEsVUFBQSxHQUFBO0FBQ0EsT0FBQSxFQUFBLENBQUE7QUFDQSxPQUFBLEVBQUEsRUFBQTtBQUNBLE9BQUEsRUFBQSxJQUFBO0tBQ0EsQ0FBQTs7OztBQUlBLFFBQUEsQ0FBQSxVQUFBLENBQUEsQ0FBQSxHQUFBLElBQUEsQ0FBQSxRQUFBLENBQUEsV0FBQSxHQUFBLElBQUEsQ0FBQSxVQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsUUFBQSxDQUFBLFVBQUEsQ0FBQSxDQUFBLEdBQUEsSUFBQSxDQUFBLFFBQUEsQ0FBQSxXQUFBLEdBQUEsSUFBQSxDQUFBLFVBQUEsQ0FBQSxDQUFBLENBQUE7QUFDQSxRQUFBLENBQUEsVUFBQSxDQUFBLEdBQUEsR0FBQSxJQUFBLENBQUEsUUFBQSxDQUFBLGFBQUEsR0FBQSxJQUFBLENBQUEsVUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNBLFFBQUEsQ0FBQSxVQUFBLENBQUEsQ0FBQSxHQUFBLElBQUEsQ0FBQSxRQUFBLENBQUEsYUFBQSxHQUFBLElBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBO0dBQ0E7O2VBckNBLFVBQUE7O1dBdUNBLGVBQUEsTUFBQSxFQUFBOzs7VUFBQSxVQUFBLGdDQUFBLEdBQUE7OztBQUVBLFVBQUEsVUFBQSxHQUFBLFNBQUEsVUFBQSxDQUFBLElBQUEsRUFBQTtBQUNBLGFBQUEsSUFBQSxDQUFBLElBQUEsTUFBQSxLQUFBLEVBQUE7QUFDQSxlQUFBLElBQUEsQ0FBQSxJQUFBLE1BQUEsS0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBO0FBQ0EsZ0JBQUEsSUFBQSxLQUFBLE1BQUEsS0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxFQUFBO0FBQ0EscUJBQUEsQ0FBQSxDQUFBO2FBQ0E7V0FDQTtTQUNBOzs7QUFHQSxjQUFBLElBQUEsS0FBQSxDQUFBLFlBQUEsR0FBQSxJQUFBLEdBQUEsa0NBQUEsQ0FBQSxDQUFBO09BQ0EsQ0FBQTs7O0FBR0EsVUFBQSxPQUFBLEdBQUEsU0FBQSxPQUFBLENBQUEsS0FBQSxFQUFBLElBQUEsRUFBQTtBQUNBLFlBQUEsU0FBQSxHQUFBLE1BQUEsVUFBQSxDQUFBLFVBQUEsQ0FBQSxJQUFBLENBQUEsQ0FBQSxDQUFBOztBQUVBLGVBQUEsS0FBQSxHQUFBLFNBQUEsQ0FBQTtPQUNBLENBQUE7OztBQUdBLFVBQUEsVUFBQSxHQUFBLFNBQUEsVUFBQSxDQUFBLEtBQUEsRUFBQSxJQUFBLEVBQUE7QUFDQSxZQUFBLFNBQUEsR0FBQSxNQUFBLFVBQUEsQ0FBQSxVQUFBLENBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxlQUFBLEtBQUEsR0FBQSxTQUFBLENBQUE7T0FDQSxDQUFBOzs7QUFHQSxVQUFBLFlBQUEsR0FBQSxDQUFBLENBQUE7OztBQUdBLFVBQUEsTUFBQSxHQUFBLE1BQUEsQ0FDQSxXQUFBLEVBQUE7T0FDQSxPQUFBLENBQUEsYUFBQSxFQUFBLEVBQUEsQ0FBQTtPQUNBLEtBQUEsQ0FBQSxvQkFBQSxDQUFBLENBQUE7O0FBRUEsVUFBQSxNQUFBLEtBQUEsSUFBQSxFQUFBO0FBQ0EsYUFBQSxJQUFBLEtBQUEsSUFBQSxNQUFBLEVBQUE7QUFDQSxjQUFBLENBQUEsR0FBQSxNQUFBLENBQUEsS0FBQSxDQUFBLENBQUE7QUFDQSxjQUFBLEtBQUEsR0FBQSxDQUFBLENBQUEsS0FBQSxDQUFBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0EsY0FBQSxJQUFBLEdBQUEsQ0FBQSxDQUFBLEtBQUEsQ0FBQSxTQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7QUFFQSxzQkFBQSxJQUFBLFVBQUEsQ0FBQSxLQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7U0FDQTtPQUNBOztBQUVBLGFBQUEsT0FBQSxDQUFBLFlBQUEsRUFBQSxVQUFBLENBQUEsQ0FBQTtLQUNBOzs7U0F4RkEsVUFBQTs7O3FCQUFBLFVBQUE7O0FDQUEsTUFBQSxDQUFBLFNBQUEsQ0FBQSxTQUFBLEdBQUEsVUFBQSxJQUFBLEVBQUEsUUFBQSxFQUFBO0FBQ0EsU0FBQSxJQUFBLFVBQUEsQ0FBQSxRQUFBLENBQUEsQ0FBQSxLQUFBLENBQUEsSUFBQSxFQUFBLElBQUEsQ0FBQSxDQUFBO0NBQ0EsQ0FBQSIsImZpbGUiOiJ0aW1lc3RyaW5nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGltZXN0cmluZyB7XG4gIGNvbnN0cnVjdG9yKHNldHRpbmdzID0ge30pIHtcbiAgICBjb25zdCBERUZBVUxUX1NFVFRJTkdTID0ge1xuICAgICAgaG91cnNQZXJEYXk6IDI0LFxuICAgICAgZGF5c1BlcldlZWs6IDcsXG4gICAgICB3ZWVrc1Blck1vbnRoOiA0LFxuICAgICAgbW9udGhzUGVyWWVhcjogMTJcbiAgICB9O1xuXG4gICAgLy8gbWVyZ2UgZGVmYXVsdCBzZXR0aW5nc
|