mirror of
https://github.com/gchq/CyberChef.git
synced 2024-09-16 16:41:32 +02:00
73 lines
1.6 KiB
JavaScript
73 lines
1.6 KiB
JavaScript
/**
|
|
* @author n1474335 [n1474335@gmail.com]
|
|
* @copyright Crown Copyright 2016
|
|
* @license Apache-2.0
|
|
*/
|
|
|
|
import Operation from "../Operation.mjs";
|
|
import Utils from "../Utils.mjs";
|
|
|
|
/**
|
|
* Strip HTML tags operation
|
|
*/
|
|
class StripHTMLTags extends Operation {
|
|
|
|
/**
|
|
* StripHTMLTags constructor
|
|
*/
|
|
constructor() {
|
|
super();
|
|
|
|
this.name = "Strip HTML tags";
|
|
this.module = "Default";
|
|
this.description = "Removes all HTML tags from the input.";
|
|
this.inputType = "string";
|
|
this.outputType = "string";
|
|
this.args = [
|
|
{
|
|
"name": "Remove indentation",
|
|
"type": "boolean",
|
|
"value": true
|
|
},
|
|
{
|
|
"name": "Remove excess line breaks",
|
|
"type": "boolean",
|
|
"value": true
|
|
}
|
|
];
|
|
this.checks = [
|
|
{
|
|
pattern: "(</html>|</div>|</body>)",
|
|
flags: "i",
|
|
args: [true, true]
|
|
}
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @param {string} input
|
|
* @param {Object[]} args
|
|
* @returns {string}
|
|
*/
|
|
run(input, args) {
|
|
const [removeIndentation, removeLineBreaks] = args;
|
|
|
|
input = Utils.stripHtmlTags(input);
|
|
|
|
if (removeIndentation) {
|
|
input = input.replace(/\n[ \f\t]+/g, "\n");
|
|
}
|
|
|
|
if (removeLineBreaks) {
|
|
input = input
|
|
.replace(/^\s*\n/, "") // first line
|
|
.replace(/(\n\s*){2,}/g, "\n"); // all others
|
|
}
|
|
|
|
return input;
|
|
}
|
|
|
|
}
|
|
|
|
export default StripHTMLTags;
|