Add Head and Tail operations

This commit is contained in:
toby
2017-04-21 23:10:34 -04:00
parent 07bb095e73
commit dea214bd2e
3 changed files with 338 additions and 1 deletions
+55
View File
@@ -537,6 +537,61 @@ 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;