glance-selector
Version:
Glance selector library
58 lines (44 loc) • 1.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _arrayUtils = require("../utils/array-utils");
var _log = require("../log");
var _log2 = _interopRequireDefault(_log);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = {
filter: {
useDefaultFiltersIfFirst: true,
apply: function apply(_ref) {
var elements = _ref.elements,
target = _ref.target;
var resultHandler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (err, result) {
return result;
};
_log2.default.debug("Filtering by index");
var attributes = target.properties.filter(function (p) {
return !isNaN(p);
});
if (attributes.length > 0) {
return (0, _arrayUtils.reduce)(attributes, [], function (result, attribute, callback) {
var position = attribute;
_log2.default.debug("Selecting the", position, "element out of", elements.length);
if (position == null) {
return callback(null, result.concat(elements));
}
if (position <= 0) {
console.log("Positions start at 1");
return callback("Positions start at 1", result.concat([]));
}
if (elements.length < position) {
console.log("Position " + position + " out of range");
return callback("Position " + position + " out of range", result.concat([]));
}
var i = position - 1;
return callback(null, result.concat(elements[i]));
}, resultHandler);
}
return resultHandler(null, elements);
}
}
};