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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 14685x 14685x 14685x 14685x 14685x 114604x 114604x 114604x 114604x 114604x 114604x 114604x 114604x 14685x 14685x 14120x 14120x 14685x 14685x 264x 264x 14685x 14685x 268x 268x 14685x 14685x 365x 365x 268x 268x 97x 97x 97x 14685x 14685x 97x 97x 97x 97x 14685x | import {EditHelper} from "../edit_helper";
import {IFile} from "../files/_ifile";
import {Issue} from "../issue";
import {IObject} from "../objects/_iobject";
import {Position} from "../position";
import {IRegistry} from "../_iregistry";
import {BasicRuleConfig} from "./_basic_rule_config";
import {IRule, IRuleMetadata, RuleTag} from "./_irule";
export class XMLBOMConf extends BasicRuleConfig {
}
export class XMLBOM implements IRule {
private conf = new XMLBOMConf();
public getMetadata(): IRuleMetadata {
return {
key: "xml_bom",
title: "XML UTF-8 byte order mark",
shortDescription: "Checks that XML files start with a UTF-8 byte order mark",
extendedInformation: "Checks that each XML file has a UTF-8 byte order mark (BOM) at its beginning.",
tags: [RuleTag.Syntax, RuleTag.Quickfix],
};
}
public getConfig() {
return this.conf;
}
public setConfig(conf: XMLBOMConf) {
this.conf = conf;
}
public initialize(_reg: IRegistry) {
return this;
}
public run(obj: IObject): Issue[] {
const file = obj.getXMLFile();
if (file === undefined || file.getRaw().startsWith("\uFEFF")) {
return [];
}
return [this.createIssue(file)];
}
private createIssue(file: IFile): Issue {
const start = new Position(1, 1);
const fix = EditHelper.insertAt(file, start, "\uFEFF");
return Issue.atRange(file, start, start, "XML file must start with a UTF-8 byte order mark", this.getMetadata().key, this.conf.severity, fix);
}
}
|