UNPKG

@jbouduin/holidays-lib

Version:
47 lines (46 loc) 2.15 kB
"use strict"; 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;