aurelia-bootstrap
Version:
Bootstrap components written in Aurelia.
55 lines (43 loc) • 1.82 kB
JavaScript
/* */
define(['exports', './null-repeat-strategy', './array-repeat-strategy', './map-repeat-strategy', './set-repeat-strategy', './number-repeat-strategy'], function (exports, _nullRepeatStrategy, _arrayRepeatStrategy, _mapRepeatStrategy, _setRepeatStrategy, _numberRepeatStrategy) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.RepeatStrategyLocator = undefined;
var RepeatStrategyLocator = exports.RepeatStrategyLocator = function () {
function RepeatStrategyLocator() {
this.matchers = [];
this.strategies = [];
this.addStrategy(function (items) {
return items === null || items === undefined;
}, new _nullRepeatStrategy.NullRepeatStrategy());
this.addStrategy(function (items) {
return items instanceof Array;
}, new _arrayRepeatStrategy.ArrayRepeatStrategy());
this.addStrategy(function (items) {
return items instanceof Map;
}, new _mapRepeatStrategy.MapRepeatStrategy());
this.addStrategy(function (items) {
return items instanceof Set;
}, new _setRepeatStrategy.SetRepeatStrategy());
this.addStrategy(function (items) {
return typeof items === 'number';
}, new _numberRepeatStrategy.NumberRepeatStrategy());
}
RepeatStrategyLocator.prototype.addStrategy = function addStrategy(matcher, strategy) {
this.matchers.push(matcher);
this.strategies.push(strategy);
};
RepeatStrategyLocator.prototype.getStrategy = function getStrategy(items) {
var matchers = this.matchers;
for (var i = 0, ii = matchers.length; i < ii; ++i) {
if (matchers[i](items)) {
return this.strategies[i];
}
}
return null;
};
return RepeatStrategyLocator;
}();
});