From 3e445b8853aecfeeefa3626800c06ce0ba3f807a Mon Sep 17 00:00:00 2001 From: William Jackson Date: Thu, 22 Oct 2015 16:40:36 +0200 Subject: [PATCH] Update x-listops.js Corrected the logic of the 'allafter' filter and added a new 'move' filter. --- core/modules/filters/x-listops.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/core/modules/filters/x-listops.js b/core/modules/filters/x-listops.js index 9b61a8aef..f6fde4ee0 100644 --- a/core/modules/filters/x-listops.js +++ b/core/modules/filters/x-listops.js @@ -77,6 +77,17 @@ Extended filter operators to manipulate the current list. return results.slice(count).concat(results.slice(0, count)); }; +/* + Moves the item named in the operand a number of places forward or backward in the list + */ + exports.move = function (source, operator, options) { + var results = prepare_results(source), + index = results.indexOf(operator.operand), + count = parseInt(operator.suffix) || 1, + marker = results.splice(index, 1); + return results.slice(0, index + count).concat(marker).concat(results.slice(index + count)); + }; + /* Returns the items from the current list that are after the item named in the operand */ @@ -87,9 +98,9 @@ Extended filter operators to manipulate the current list. return []; } if (operator.suffix) { - return results.slice(index - 1); + return results.slice(index); } - return results.slice(index); + return results.slice(index + 1); }; /*