pomeranian-durations
Version:
An immutable duration library based on the ISO-8601 format for durations.
116 lines (100 loc) • 3.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.removeDateUnits = exports.removeTimeUnits = exports.removeYears = exports.removeMonths = exports.removeWeeks = exports.removeDays = exports.removeHours = exports.removeMinutes = exports.removeSeconds = void 0;
var _utils = require("./_utils");
var _transformations = require("./transformations");
var _constants = require("./constants");
var _validate = require("./validate");
/**
* Helpers to remove certain units from an ISO8601 string.
* @name default
*/
var removeUnits = (0, _utils.curry)(function (units, isoDuration) {
if ((0, _validate.isInvalid)(isoDuration)) {
return _constants.INVALID_DURATION;
}
return (0, _utils.pipe)(isoDuration, _transformations.toFragments, (0, _utils.except)(units), _transformations.toIso);
});
/**
* Removes seconds part from given ISO8601 duration
* @param isoDuration {string} - ISO8601 duration
* @returns isoDuration {string}
* @example
* removeSeconds('PT1M1S') // => 'PT1M'
*/
var removeSeconds = removeUnits([_constants.UNIT_NAMES.seconds]);
/**
* Removes minutes part from given ISO8601 duration
* @param isoDuration {string} - ISO8601 duration
* @returns isoDuration {string}
* @example
* removeMinutes('PT1M1S') // => 'PT1S'
*/
exports.removeSeconds = removeSeconds;
var removeMinutes = removeUnits([_constants.UNIT_NAMES.minutes]);
/**
* Removes hours part from given ISO8601 duration
* @param isoDuration {string} - ISO8601 duration
* @returns isoDuration {string}
* @example
* removeHours('PT1H1M') // => 'PT1M'
*/
exports.removeMinutes = removeMinutes;
var removeHours = removeUnits([_constants.UNIT_NAMES.hours]);
/**
* Removes days part from given ISO8601 duration
* @param isoDuration {string} - ISO8601 duration
* @returns isoDuration {string}
* @example
* removeDays('P1DT1M') // => 'PT1M'
*/
exports.removeHours = removeHours;
var removeDays = removeUnits([_constants.UNIT_NAMES.days]);
/**
* Removes weeks part from given ISO8601 duration
* @param isoDuration {string} - ISO8601 duration
* @returns isoDuration {string}
* @example
* removeWeeks('P1WT1M') // => 'PT1M'
*/
exports.removeDays = removeDays;
var removeWeeks = removeUnits([_constants.UNIT_NAMES.weeks]);
/**
* Removes months part from given ISO8601 duration
* @param isoDuration {string} - ISO8601 duration
* @returns isoDuration {string}
* @example
* removeMonths('P1MT1M') // => 'PT1M'
*/
exports.removeWeeks = removeWeeks;
var removeMonths = removeUnits([_constants.UNIT_NAMES.months]);
/**
* Removes years part from given ISO8601 duration
* @param isoDuration {string} - ISO8601 duration
* @returns isoDuration {string}
* @example
* removeYears('P1YT1M') // => 'PT1M'
*/
exports.removeMonths = removeMonths;
var removeYears = removeUnits([_constants.UNIT_NAMES.years]);
/**
* Removes all time components (seconds, minutes, hours) from given ISO8601 duration
* @param isoDuration {string} - ISO8601 duration
* @returns isoDuration {string}
* @example
* removeTimeUnits('P1DT1M') // => 'P1D'
*/
exports.removeYears = removeYears;
var removeTimeUnits = removeUnits([_constants.UNIT_NAMES.seconds, _constants.UNIT_NAMES.minutes, _constants.UNIT_NAMES.hours]);
/**
* Removes all date components (days, weeks, months, years) from given ISO8601 duration
* @param isoDuration {string} - ISO8601 duration
* @returns isoDuration {string}
* @example
* removeDateUnits('P1DT1M') // => 'PT1M'
*/
exports.removeTimeUnits = removeTimeUnits;
var removeDateUnits = removeUnits([_constants.UNIT_NAMES.days, _constants.UNIT_NAMES.weeks, _constants.UNIT_NAMES.months, _constants.UNIT_NAMES.years]);
exports.removeDateUnits = removeDateUnits;