2
0
mirror of https://github.com/gchq/CyberChef synced 2025-12-05 23:53:27 +00:00

Added Head and Tail to Utils category and replaced 'AllBut' argument functionality with support for negative values of n.

This commit is contained in:
n1474335
2017-04-23 18:05:00 +01:00
parent dea214bd2e
commit d081ff745d
3 changed files with 62 additions and 69 deletions

View File

@@ -460,6 +460,62 @@ const StrUtils = {
},
/**
* Head lines operation.
*
* @param {string} input
* @param {Object[]} args
* @returns {string}
*/
runHead: function(input, args) {
let delimiter = args[0],
number = args[1];
delimiter = Utils.charRep[delimiter];
let splitInput = input.split(delimiter);
return splitInput
.filter((line, lineIndex) => {
lineIndex += 1;
if (number < 0) {
return lineIndex <= splitInput.length + number;
} else {
return lineIndex <= number;
}
})
.join(delimiter);
},
/**
* Tail lines operation.
*
* @param {string} input
* @param {Object[]} args
* @returns {string}
*/
runTail: function(input, args) {
let delimiter = args[0],
number = args[1];
delimiter = Utils.charRep[delimiter];
let splitInput = input.split(delimiter);
return splitInput
.filter((line, lineIndex) => {
lineIndex += 1;
if (number < 0) {
return lineIndex > -number;
} else {
return lineIndex > splitInput.length - number;
}
})
.join(delimiter);
},
/**
* Adds HTML highlights to matches within a string.
*
@@ -537,61 +593,6 @@ const StrUtils = {
return output;
},
/**
* Head lines operation.
*
* @param {string} input
* @param {Object[]} args
* @returns {string}
*/
runHead: function(input, args) {
let delimiter = args[0],
number = args[1],
allBut = args[2];
delimiter = Utils.charRep[delimiter];
let splitInput = input.split(delimiter);
return splitInput
.filter((line, lineIndex) => {
lineIndex += 1;
if (allBut) {
return lineIndex <= splitInput.length - number;
} else {
return lineIndex <= number;
}
})
.join(delimiter);
},
/**
* Tail lines operation.
*
* @param {string} input
* @param {Object[]} args
* @returns {string}
*/
runTail: function(input, args) {
let delimiter = args[0],
number = args[1],
allBut = args[2];
delimiter = Utils.charRep[delimiter];
let splitInput = input.split(delimiter);
return splitInput
.filter((line, lineIndex) => {
lineIndex += 1;
if (allBut) {
return lineIndex >= number;
} else {
return lineIndex > splitInput.length - number;
}
})
.join(delimiter);
},
};
export default StrUtils;