mirror of
https://github.com/gchq/CyberChef.git
synced 2025-04-20 14:56:19 -04: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:
parent
dea214bd2e
commit
d081ff745d
3 changed files with 62 additions and 69 deletions
|
@ -162,6 +162,8 @@ const Categories = [
|
||||||
"Unique",
|
"Unique",
|
||||||
"Split",
|
"Split",
|
||||||
"Filter",
|
"Filter",
|
||||||
|
"Head",
|
||||||
|
"Tail",
|
||||||
"Count occurrences",
|
"Count occurrences",
|
||||||
"Expand alphabet range",
|
"Expand alphabet range",
|
||||||
"Parse escaped string",
|
"Parse escaped string",
|
||||||
|
|
|
@ -3201,9 +3201,9 @@ const OperationConfig = {
|
||||||
description: [
|
description: [
|
||||||
"Like the UNIX head utility.",
|
"Like the UNIX head utility.",
|
||||||
"<br>",
|
"<br>",
|
||||||
"Gets the first $Number of lines.",
|
"Gets the first n lines.",
|
||||||
"<br>",
|
"<br>",
|
||||||
"Optionally you can select all but the last $Number of lines.",
|
"You can select all but the last n lines by entering a negative value for n.",
|
||||||
"<br>",
|
"<br>",
|
||||||
"The delimiter can be changed so that instead of lines, fields (i.e. commas) are selected instead.",
|
"The delimiter can be changed so that instead of lines, fields (i.e. commas) are selected instead.",
|
||||||
].join("\n"),
|
].join("\n"),
|
||||||
|
@ -3221,20 +3221,15 @@ const OperationConfig = {
|
||||||
type: "number",
|
type: "number",
|
||||||
value: 10,
|
value: 10,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: "All but last $Number of lines",
|
|
||||||
type: "boolean",
|
|
||||||
value: false,
|
|
||||||
},
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"Tail": {
|
"Tail": {
|
||||||
description: [
|
description: [
|
||||||
"Like the UNIX tail utility.",
|
"Like the UNIX tail utility.",
|
||||||
"<br>",
|
"<br>",
|
||||||
"Gets the last $Number of lines.",
|
"Gets the last n lines.",
|
||||||
"<br>",
|
"<br>",
|
||||||
"Optionally you can select all lines after line $Number.",
|
"Optionally you can select all lines after line n by entering a negative value for n.",
|
||||||
"<br>",
|
"<br>",
|
||||||
"The delimiter can be changed so that instead of lines, fields (i.e. commas) are selected instead.",
|
"The delimiter can be changed so that instead of lines, fields (i.e. commas) are selected instead.",
|
||||||
].join("\n"),
|
].join("\n"),
|
||||||
|
@ -3252,11 +3247,6 @@ const OperationConfig = {
|
||||||
type: "number",
|
type: "number",
|
||||||
value: 10,
|
value: 10,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: "Start from line $Number",
|
|
||||||
type: "boolean",
|
|
||||||
value: false,
|
|
||||||
},
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -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.
|
* Adds HTML highlights to matches within a string.
|
||||||
*
|
*
|
||||||
|
@ -537,61 +593,6 @@ const StrUtils = {
|
||||||
return output;
|
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;
|
export default StrUtils;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue