@jbouduin/holidays-lib
Version:
Get World-Wide Holidays
47 lines (46 loc) • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.HierarchyFilter = void 0;
var filtered_holiday_1 = require("./filtered-holiday");
var HierarchyFilter = /** @class */ (function () {
//#region Constructor & Co°
// eslint-disable-next-line @typescript-eslint/no-empty-function
function HierarchyFilter() {
}
//#endregion
//#region IHierarchyFilter interface methods
HierarchyFilter.prototype.filterConfigurationByHierarchy = function (configuration, hierarchy, deep) {
return this.internalFilter(configuration, hierarchy, '', deep);
};
//#endregion
//#region private methods
HierarchyFilter.prototype.internalFilter = function (configuration, hierarchy, parentFullpath, deep) {
var _this = this;
var result;
var pathElements = hierarchy.split('/');
var currentRoot = pathElements.shift();
var fullPath = parentFullpath ? parentFullpath + '/' + configuration.hierarchy : configuration.hierarchy;
if (currentRoot === configuration.hierarchy) {
result = configuration.holidays.map(function (holiday) { return new filtered_holiday_1.FilteredHoliday(configuration.hierarchy, fullPath, holiday); });
if (pathElements.length === 0) {
if (deep) {
configuration.subConfigurations.forEach(function (sub) {
return result = result.concat(_this.internalFilter(sub, sub.hierarchy, fullPath, true));
});
}
}
else {
var subConfiguration = configuration.subConfigurations.filter(function (sub) { return sub.hierarchy === pathElements[0]; });
if (subConfiguration.length > 0) {
result = result.concat(this.internalFilter(subConfiguration[0], pathElements.join('/'), fullPath, deep));
}
}
}
else {
result = new Array();
}
return result;
};
return HierarchyFilter;
}());
exports.HierarchyFilter = HierarchyFilter;