Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 11038x 11038x 11038x 11038x 11038x 32978x 32978x 32978x 32978x 32978x 32978x 32978x 32978x 32978x 32978x 11038x 11038x 4x 4x 11038x 11038x 10519x 10519x 11038x 11038x 244x 244x 11038x 11038x 248x 248x 11038x 11038x 331x 331x 331x 360x 360x 360x 360x 360x 4154x 4x 4x 4x 4x 4x 4x 4x 4154x 360x 331x 331x 331x 11038x | import {Issue} from "../issue";
import {Position} from "../position";
import {BasicRuleConfig} from "./_basic_rule_config";
import {EditHelper} from "../edit_helper";
import {IRule, IRuleMetadata, RuleTag} from "./_irule";
import {IRegistry} from "../_iregistry";
import {IObject} from "../objects/_iobject";
import {MIMEObject, WebMIME} from "../objects";
export class WhitespaceEndConf extends BasicRuleConfig {
}
export class WhitespaceEnd implements IRule {
private conf = new WhitespaceEndConf();
public getMetadata(): IRuleMetadata {
return {
key: "whitespace_end",
title: "Whitespace at end of line",
shortDescription: `Checks for redundant whitespace at the end of each line.`,
extendedInformation: `SMIM and W3MI files are not checked.`,
tags: [RuleTag.Whitespace, RuleTag.Quickfix, RuleTag.SingleFile],
badExample: `WRITE 'hello'. `,
goodExample: `WRITE 'hello'.`,
};
}
private getMessage(): string {
return "Remove whitespace at end of line";
}
public getConfig() {
return this.conf;
}
public setConfig(conf: WhitespaceEndConf) {
this.conf = conf;
}
public initialize(_reg: IRegistry): IRule {
return this;
}
public run(obj: IObject): readonly Issue[] {
const issues: Issue[] = [];
for (const file of obj.getFiles()) {
if (obj instanceof MIMEObject || obj instanceof WebMIME) {
continue;
}
const rows = file.getRawRows();
for (let i = 0; i < rows.length; i++) {
if (rows[i].endsWith(" ") || rows[i].endsWith(" \r")) {
const match = / +\r?$/.exec(rows[i]);
const start = new Position(i + 1, match!.index + 1);
const end = new Position(i + 1, rows[i].length + 1);
const fix = EditHelper.deleteRange(file, start, end);
const issue = Issue.atRange(file, start, end, this.getMessage(), this.getMetadata().key, this.conf.severity, fix);
issues.push(issue);
}
}
}
return issues;
}
} |