Merge pull request #46 from Mikescher/feature_filter

Added operation 'Filter' to split input by regex
feature-extract-files
n1474335 2016-12-23 14:24:39 +00:00 committed by GitHub
commit ca87d54aa2
3 changed files with 50 additions and 0 deletions

View File

@ -149,6 +149,7 @@ const Categories = [
"Sort",
"Unique",
"Split",
"Filter",
"Count occurrences",
"Expand alphabet range",
"Parse escaped string",

View File

@ -1764,6 +1764,29 @@ const OperationConfig = {
}
]
},
"Filter": {
description: "Filter the string with an regular expression",
run: StrUtils.run_filter,
input_type: "string",
output_type: "string",
args: [
{
name: "Delimiter",
type: "option",
value: StrUtils.DELIMITER_OPTIONS
},
{
name: "Regex",
type: "string",
value: ""
},
{
name: "Invert condition",
type: "boolean",
value: SeqUtils.SORT_REVERSE
},
]
},
"Strings": {
description: "Extracts all strings from the input.",
run: Extract.run_strings,

View File

@ -261,6 +261,32 @@ var StrUtils = {
return sections.join(join_delim);
},
/**
* Filter by regex operation.
*
* @author Mikescher (https://github.com/Mikescher | https://mikescher.com)
*
* @param {string} input
* @param {Object[]} args
* @returns {string}
*/
run_filter: function(input, args) {
var delim = Utils.char_rep[args[0]];
var reverse = args[2];
try {
var regex = new RegExp(args[1]);
} catch (err) {
return "Invalid regex. Details: " + err.message;
}
const regex_filter = function(value) {
return reverse ^ regex.test(value);
}
return input.split(delim).filter(regex_filter).join(delim);
},
/**