@sasjs/lint 5.3.1 → 5.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -0
- package/format/adjustLineLength.d.ts +34 -0
- package/format/adjustLineLength.js +159 -0
- package/format/adjustLineLength.js.map +1 -0
- package/format/formatFile.d.ts +3 -1
- package/format/formatFile.js +4 -4
- package/format/formatFile.js.map +1 -1
- package/format/formatFolder.d.ts +3 -1
- package/format/formatFolder.js +38 -7
- package/format/formatFolder.js.map +1 -1
- package/format/formatProject.d.ts +2 -1
- package/format/formatProject.js +2 -2
- package/format/formatProject.js.map +1 -1
- package/format/formatText.d.ts +19 -1
- package/format/formatText.js +23 -3
- package/format/formatText.js.map +1 -1
- package/format/longLines.d.ts +60 -0
- package/format/longLines.js +90 -0
- package/format/longLines.js.map +1 -0
- package/format/reflowComments.d.ts +28 -0
- package/format/reflowComments.js +305 -0
- package/format/reflowComments.js.map +1 -0
- package/format/rewrapText.d.ts +38 -0
- package/format/rewrapText.js +389 -0
- package/format/rewrapText.js.map +1 -0
- package/format/shared.js +34 -5
- package/format/shared.js.map +1 -1
- package/format/splitTrailingComments.d.ts +22 -0
- package/format/splitTrailingComments.js +68 -0
- package/format/splitTrailingComments.js.map +1 -0
- package/package.json +11 -24
- package/sasjslint-schema.json +10 -1
- package/types/FormatOptions.d.ts +29 -0
- package/types/FormatOptions.js +3 -0
- package/types/FormatOptions.js.map +1 -0
- package/types/KeywordCase.d.ts +10 -0
- package/types/KeywordCase.js +13 -0
- package/types/KeywordCase.js.map +1 -0
- package/types/LintConfig.d.ts +10 -0
- package/types/LintConfig.js +17 -0
- package/types/LintConfig.js.map +1 -1
- package/types/index.d.ts +2 -0
- package/types/index.js +2 -0
- package/types/index.js.map +1 -1
- package/utils/getDataSectionsDetail.d.ts +14 -0
- package/utils/getDataSectionsDetail.js +29 -13
- package/utils/getDataSectionsDetail.js.map +1 -1
- package/utils/getLintConfig.d.ts +1 -0
- package/utils/getLintConfig.js +1 -0
- package/utils/getLintConfig.js.map +1 -1
- package/utils/scanLine.d.ts +59 -0
- package/utils/scanLine.js +115 -0
- package/utils/scanLine.js.map +1 -0
package/sasjslint-schema.json
CHANGED
|
@@ -40,7 +40,8 @@
|
|
|
40
40
|
"noXcmd": true,
|
|
41
41
|
"requiredMacroOptions": [],
|
|
42
42
|
"severityLevel": {},
|
|
43
|
-
"strictMacroDefinition": true
|
|
43
|
+
"strictMacroDefinition": true,
|
|
44
|
+
"keywordCase": "preserve"
|
|
44
45
|
},
|
|
45
46
|
"examples": [
|
|
46
47
|
{
|
|
@@ -183,6 +184,14 @@
|
|
|
183
184
|
"default": 2,
|
|
184
185
|
"examples": [2, 3, 4]
|
|
185
186
|
},
|
|
187
|
+
"keywordCase": {
|
|
188
|
+
"$id": "#/properties/keywordCase",
|
|
189
|
+
"type": "string",
|
|
190
|
+
"title": "keywordCase",
|
|
191
|
+
"description": "The case the formatter gives SAS keywords, once it is given a layout engine (see formatText). Applied by that engine's lexer: strings and comments are left alone, but a name it cannot tell from a keyword - a DATA step variable called label - is cased with it. Defaults to preserve.",
|
|
192
|
+
"enum": ["upper", "lower", "preserve"],
|
|
193
|
+
"default": "preserve"
|
|
194
|
+
},
|
|
186
195
|
"lowerCaseFileNames": {
|
|
187
196
|
"$id": "#/properties/lowerCaseFileNames",
|
|
188
197
|
"type": "boolean",
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { KeywordCase } from './KeywordCase';
|
|
2
|
+
/**
|
|
3
|
+
* How a caller supplies the layout engine to the formatter.
|
|
4
|
+
*
|
|
5
|
+
* `@sasjs/lint` owns the rules - the header, line length, trailing spaces, the
|
|
6
|
+
* casing setting - and knows nothing about SAS syntax. The layout pass is a
|
|
7
|
+
* printer over a SAS AST, which is a much larger dependency than a linter should
|
|
8
|
+
* carry, so it arrives from the caller. The extension and the server already
|
|
9
|
+
* depend on `@sasjs/sas-language`; the CLI does not, and follows once this option
|
|
10
|
+
* is threaded through the command that formats projects. A project that only
|
|
11
|
+
* lints installs none of it either way.
|
|
12
|
+
*
|
|
13
|
+
* Without an engine the formatter applies the rules to the text as it stands,
|
|
14
|
+
* which is what it has always done. With one, the reprint happens first and the
|
|
15
|
+
* rules run over the result, so line wrapping applies to the final layout rather
|
|
16
|
+
* than to the original.
|
|
17
|
+
*/
|
|
18
|
+
export interface FormatOptions {
|
|
19
|
+
/**
|
|
20
|
+
* Reprints a SAS program, in the style of `formatText` from
|
|
21
|
+
* `@sasjs/sas-language`. Receives the `keywordCase` from the configuration,
|
|
22
|
+
* because the words are identified by its lexer - a rule here could only guess
|
|
23
|
+
* from a list of statement names, and no such list carries `else` or the
|
|
24
|
+
* statements inside a procedure.
|
|
25
|
+
*/
|
|
26
|
+
reprint?: (text: string, options: {
|
|
27
|
+
keywordCase: KeywordCase;
|
|
28
|
+
}) => Promise<string>;
|
|
29
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormatOptions.js","sourceRoot":"","sources":["../../src/types/FormatOptions.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The case the formatter gives SAS keywords.
|
|
3
|
+
*
|
|
4
|
+
* One declaration, because the value travels from the `.sasjslint` setting into
|
|
5
|
+
* the engine's options: spelled out in both places, a fourth value could be added
|
|
6
|
+
* to one and silently rejected by the other. The JSON schema keeps its own copy -
|
|
7
|
+
* it is not TypeScript - and the suite asserts the three agree.
|
|
8
|
+
*/
|
|
9
|
+
export declare const KEYWORD_CASES: readonly ["upper", "lower", "preserve"];
|
|
10
|
+
export type KeywordCase = (typeof KEYWORD_CASES)[number];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KEYWORD_CASES = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* The case the formatter gives SAS keywords.
|
|
6
|
+
*
|
|
7
|
+
* One declaration, because the value travels from the `.sasjslint` setting into
|
|
8
|
+
* the engine's options: spelled out in both places, a fourth value could be added
|
|
9
|
+
* to one and silently rejected by the other. The JSON schema keeps its own copy -
|
|
10
|
+
* it is not TypeScript - and the suite asserts the three agree.
|
|
11
|
+
*/
|
|
12
|
+
exports.KEYWORD_CASES = ['upper', 'lower', 'preserve'];
|
|
13
|
+
//# sourceMappingURL=KeywordCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeywordCase.js","sourceRoot":"","sources":["../../src/types/KeywordCase.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACU,QAAA,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAU,CAAA"}
|
package/types/LintConfig.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { LineEndings } from './LineEndings';
|
|
2
|
+
import { KeywordCase } from './KeywordCase';
|
|
2
3
|
import { FileLintRule, LineLintRule, PathLintRule } from './LintRule';
|
|
3
4
|
import { Severity } from './Severity';
|
|
4
5
|
/**
|
|
@@ -37,6 +38,15 @@ export declare class LintConfig {
|
|
|
37
38
|
readonly ignoredLibnames: string[];
|
|
38
39
|
readonly ignoredMacros: string[];
|
|
39
40
|
readonly bannedStrings: string[];
|
|
41
|
+
/**
|
|
42
|
+
* Case the formatter gives keywords, when a reprint engine is supplied.
|
|
43
|
+
*
|
|
44
|
+
* The setting lives here because that is where a house style is decided; the
|
|
45
|
+
* words themselves come from the engine's lexer. It is not a lint rule: casing
|
|
46
|
+
* is a formatting choice, and reporting it on every line would drown the rules
|
|
47
|
+
* that describe defects.
|
|
48
|
+
*/
|
|
49
|
+
readonly keywordCase: KeywordCase;
|
|
40
50
|
constructor(json?: any);
|
|
41
51
|
/**
|
|
42
52
|
* Returns a new configuration with an override merged over this one, so a
|
package/types/LintConfig.js
CHANGED
|
@@ -5,6 +5,7 @@ const file_1 = require("../rules/file");
|
|
|
5
5
|
const line_1 = require("../rules/line");
|
|
6
6
|
const path_1 = require("../rules/path");
|
|
7
7
|
const LineEndings_1 = require("./LineEndings");
|
|
8
|
+
const KeywordCase_1 = require("./KeywordCase");
|
|
8
9
|
const utils_1 = require("../utils");
|
|
9
10
|
const mergeLintConfig_1 = require("../utils/mergeLintConfig");
|
|
10
11
|
const Severity_1 = require("./Severity");
|
|
@@ -34,6 +35,15 @@ class LintConfig {
|
|
|
34
35
|
this.ignoredLibnames = [];
|
|
35
36
|
this.ignoredMacros = [];
|
|
36
37
|
this.bannedStrings = [];
|
|
38
|
+
/**
|
|
39
|
+
* Case the formatter gives keywords, when a reprint engine is supplied.
|
|
40
|
+
*
|
|
41
|
+
* The setting lives here because that is where a house style is decided; the
|
|
42
|
+
* words themselves come from the engine's lexer. It is not a lint rule: casing
|
|
43
|
+
* is a formatting choice, and reporting it on every line would drown the rules
|
|
44
|
+
* that describe defects.
|
|
45
|
+
*/
|
|
46
|
+
this.keywordCase = 'preserve';
|
|
37
47
|
this.source = json !== null && json !== void 0 ? json : {};
|
|
38
48
|
if (json === null || json === void 0 ? void 0 : json.ignoreList) {
|
|
39
49
|
if (Array.isArray(json.ignoreList)) {
|
|
@@ -66,6 +76,13 @@ class LintConfig {
|
|
|
66
76
|
}
|
|
67
77
|
});
|
|
68
78
|
}
|
|
79
|
+
if ((json === null || json === void 0 ? void 0 : json.keywordCase) !== undefined) {
|
|
80
|
+
const value = json.keywordCase;
|
|
81
|
+
if (!KeywordCase_1.KEYWORD_CASES.includes(value)) {
|
|
82
|
+
throw new Error(`Property "keywordCase" can only be "upper", "lower" or "preserve".`);
|
|
83
|
+
}
|
|
84
|
+
this.keywordCase = value;
|
|
85
|
+
}
|
|
69
86
|
if ((json === null || json === void 0 ? void 0 : json.noTrailingSpaces) !== false) {
|
|
70
87
|
this.lineLintRules.push(line_1.noTrailingSpaces);
|
|
71
88
|
}
|
package/types/LintConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LintConfig.js","sourceRoot":"","sources":["../../src/types/LintConfig.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LintConfig.js","sourceRoot":"","sources":["../../src/types/LintConfig.ts"],"names":[],"mappings":"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"}
|
package/types/index.d.ts
CHANGED
package/types/index.js
CHANGED
|
@@ -16,6 +16,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./Diagnostic"), exports);
|
|
18
18
|
__exportStar(require("./FormatResult"), exports);
|
|
19
|
+
__exportStar(require("./FormatOptions"), exports);
|
|
20
|
+
__exportStar(require("./KeywordCase"), exports);
|
|
19
21
|
__exportStar(require("./LintConfig"), exports);
|
|
20
22
|
__exportStar(require("./LintRule"), exports);
|
|
21
23
|
__exportStar(require("./LintRuleType"), exports);
|
package/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,iDAA8B;AAC9B,+CAA4B;AAC5B,6CAA0B;AAC1B,iDAA8B;AAC9B,6CAA0B;AAC1B,0CAAuB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,iDAA8B;AAC9B,kDAA+B;AAC/B,gDAA6B;AAC7B,+CAA4B;AAC5B,6CAA0B;AAC1B,iDAA8B;AAC9B,6CAA0B;AAC1B,0CAAuB"}
|
|
@@ -3,6 +3,20 @@ interface DataSectionsDetail {
|
|
|
3
3
|
start: number;
|
|
4
4
|
end: number;
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* A data section: the statement that opens it, and the record list it holds.
|
|
8
|
+
*
|
|
9
|
+
* The opener is matched against the line's CODE, with literals and comments
|
|
10
|
+
* blanked, so a `;cards;` inside a quoted string or a comment opens nothing -
|
|
11
|
+
* and against statement boundaries rather than the line start, so
|
|
12
|
+
* `input a b; cards;` on one line still opens one. The records themselves are
|
|
13
|
+
* not code: a quote in a record is data, so the scan state is reset at the
|
|
14
|
+
* opener and the records are matched as plain lines.
|
|
15
|
+
*
|
|
16
|
+
* @param {string} text - the text to read.
|
|
17
|
+
* @param {LintConfig} config - the configuration in force.
|
|
18
|
+
* @returns {DataSectionsDetail[]} the line ranges each section covers.
|
|
19
|
+
*/
|
|
6
20
|
export declare const getDataSectionsDetail: (text: string, config: LintConfig) => DataSectionsDetail[];
|
|
7
21
|
export declare const checkIsDataLine: (dataSections: DataSectionsDetail[], lineIndex: number) => boolean;
|
|
8
22
|
export {};
|
|
@@ -1,14 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.checkIsDataLine = exports.getDataSectionsDetail = void 0;
|
|
4
|
+
const scanLine_1 = require("./scanLine");
|
|
4
5
|
const splitText_1 = require("./splitText");
|
|
6
|
+
/**
|
|
7
|
+
* A data section: the statement that opens it, and the record list it holds.
|
|
8
|
+
*
|
|
9
|
+
* The opener is matched against the line's CODE, with literals and comments
|
|
10
|
+
* blanked, so a `;cards;` inside a quoted string or a comment opens nothing -
|
|
11
|
+
* and against statement boundaries rather than the line start, so
|
|
12
|
+
* `input a b; cards;` on one line still opens one. The records themselves are
|
|
13
|
+
* not code: a quote in a record is data, so the scan state is reset at the
|
|
14
|
+
* opener and the records are matched as plain lines.
|
|
15
|
+
*
|
|
16
|
+
* @param {string} text - the text to read.
|
|
17
|
+
* @param {LintConfig} config - the configuration in force.
|
|
18
|
+
* @returns {DataSectionsDetail[]} the line ranges each section covers.
|
|
19
|
+
*/
|
|
5
20
|
const getDataSectionsDetail = (text, config) => {
|
|
6
21
|
const dataSections = [];
|
|
7
22
|
const lines = (0, splitText_1.splitText)(text, config);
|
|
8
|
-
const
|
|
23
|
+
const opener = /(?:^|;)\s*(datalines|cards|parmcards)(4?);/i;
|
|
9
24
|
const dataSectionEndRegex1 = new RegExp(';');
|
|
10
|
-
const dataSectionStartRegex2 = new RegExp('^(datalines4;)|(cards4;)|(parmcards4;)');
|
|
11
25
|
const dataSectionEndRegex2 = new RegExp(';;;;');
|
|
26
|
+
let state = (0, scanLine_1.cleanState)();
|
|
12
27
|
let dataSectionStarted = false;
|
|
13
28
|
let dataSectionStartIndex = -1;
|
|
14
29
|
let dataSectionEndRegex = dataSectionEndRegex1;
|
|
@@ -17,19 +32,20 @@ const getDataSectionsDetail = (text, config) => {
|
|
|
17
32
|
if (dataSectionEndRegex.test(line)) {
|
|
18
33
|
dataSections.push({ start: dataSectionStartIndex, end: index });
|
|
19
34
|
dataSectionStarted = false;
|
|
35
|
+
state = (0, scanLine_1.cleanState)();
|
|
20
36
|
}
|
|
37
|
+
return;
|
|
21
38
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
39
|
+
const scanned = (0, scanLine_1.scanLine)(line, state);
|
|
40
|
+
state = scanned.endState;
|
|
41
|
+
const match = opener.exec(scanned.code);
|
|
42
|
+
if (match) {
|
|
43
|
+
dataSectionStarted = true;
|
|
44
|
+
dataSectionStartIndex = index;
|
|
45
|
+
dataSectionEndRegex = match[2]
|
|
46
|
+
? dataSectionEndRegex2
|
|
47
|
+
: dataSectionEndRegex1;
|
|
48
|
+
state = (0, scanLine_1.cleanState)();
|
|
33
49
|
}
|
|
34
50
|
});
|
|
35
51
|
return dataSections;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDataSectionsDetail.js","sourceRoot":"","sources":["../../src/utils/getDataSectionsDetail.ts"],"names":[],"mappings":";;;AACA,2CAAuC;
|
|
1
|
+
{"version":3,"file":"getDataSectionsDetail.js","sourceRoot":"","sources":["../../src/utils/getDataSectionsDetail.ts"],"names":[],"mappings":";;;AACA,yCAAiD;AACjD,2CAAuC;AAOvC;;;;;;;;;;;;;GAaG;AACI,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,MAAkB,EAAE,EAAE;IACxE,MAAM,YAAY,GAAyB,EAAE,CAAA;IAC7C,MAAM,KAAK,GAAG,IAAA,qBAAS,EAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAErC,MAAM,MAAM,GAAG,6CAA6C,CAAA;IAC5D,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;IAC5C,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAA;IAE/C,IAAI,KAAK,GAAG,IAAA,qBAAU,GAAE,CAAA;IACxB,IAAI,kBAAkB,GAAG,KAAK,CAAA;IAC9B,IAAI,qBAAqB,GAAG,CAAC,CAAC,CAAA;IAC9B,IAAI,mBAAmB,GAAG,oBAAoB,CAAA;IAE9C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,IAAI,kBAAkB,EAAE,CAAC;YACvB,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC/D,kBAAkB,GAAG,KAAK,CAAA;gBAC1B,KAAK,GAAG,IAAA,qBAAU,GAAE,CAAA;YACtB,CAAC;YACD,OAAM;QACR,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,mBAAQ,EAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACrC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAA;QAExB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAEvC,IAAI,KAAK,EAAE,CAAC;YACV,kBAAkB,GAAG,IAAI,CAAA;YACzB,qBAAqB,GAAG,KAAK,CAAA;YAC7B,mBAAmB,GAAG,KAAK,CAAC,CAAC,CAAC;gBAC5B,CAAC,CAAC,oBAAoB;gBACtB,CAAC,CAAC,oBAAoB,CAAA;YACxB,KAAK,GAAG,IAAA,qBAAU,GAAE,CAAA;QACtB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAvCY,QAAA,qBAAqB,yBAuCjC;AAEM,MAAM,eAAe,GAAG,CAC7B,YAAkC,EAClC,SAAiB,EACjB,EAAE;IACF,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,SAAS,IAAI,WAAW,CAAC,KAAK,IAAI,SAAS,IAAI,WAAW,CAAC,GAAG;YAChE,OAAO,IAAI,CAAA;IACf,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAVY,QAAA,eAAe,mBAU3B"}
|
package/utils/getLintConfig.d.ts
CHANGED
package/utils/getLintConfig.js
CHANGED
|
@@ -44,6 +44,7 @@ exports.DefaultLintConfiguration = {
|
|
|
44
44
|
ignoredLibnames: [],
|
|
45
45
|
ignoredMacros: [...defaultIgnoredMacros_1.defaultIgnoredMacros],
|
|
46
46
|
indentationMultiple: 2,
|
|
47
|
+
keywordCase: 'preserve',
|
|
47
48
|
lineEndings: LineEndings_1.LineEndings.OFF,
|
|
48
49
|
lowerCaseFileNames: true,
|
|
49
50
|
lowerCaseMacroNames: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLintConfig.js","sourceRoot":"","sources":["../../src/utils/getLintConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"getLintConfig.js","sourceRoot":"","sources":["../../src/utils/getLintConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads one line of a SAS program, carrying the state a break decision needs
|
|
3
|
+
* from one physical line to the next.
|
|
4
|
+
*
|
|
5
|
+
* A quoted literal, a block comment and a masking macro's argument text all
|
|
6
|
+
* continue onto the next line, so a caller that decides where a line may be
|
|
7
|
+
* broken - or where a statement really ends - needs to know which of them is
|
|
8
|
+
* open. The scan is one pass with those three states, because each affects the
|
|
9
|
+
* reading of the others: `%str(%')` is an apostrophe, and a scanner that read it
|
|
10
|
+
* as the start of a literal would carry a phantom string into every line below.
|
|
11
|
+
*/
|
|
12
|
+
export interface ScanState {
|
|
13
|
+
/** The quote character a literal is still open with, or `''`. */
|
|
14
|
+
quote: string;
|
|
15
|
+
/** Whether a block comment is still open. */
|
|
16
|
+
inComment: boolean;
|
|
17
|
+
/** Depth of the masking call the scan is inside. */
|
|
18
|
+
maskedDepth: number;
|
|
19
|
+
}
|
|
20
|
+
export declare const cleanState: () => ScanState;
|
|
21
|
+
/** A block comment's span on one line, as absolute column indices. */
|
|
22
|
+
export interface CommentSpan {
|
|
23
|
+
/** The column at which the comment opens. */
|
|
24
|
+
start: number;
|
|
25
|
+
/** The column of the closing marker's asterisk, or the line length. */
|
|
26
|
+
end: number;
|
|
27
|
+
}
|
|
28
|
+
/** A physical line, as the scanner reads it. */
|
|
29
|
+
export interface ScannedLine {
|
|
30
|
+
/**
|
|
31
|
+
* The columns at which a newline may be inserted: every space that is not
|
|
32
|
+
* inside a quoted literal, inside a masking macro's parentheses, or inside a
|
|
33
|
+
* block comment.
|
|
34
|
+
*/
|
|
35
|
+
positions: number[];
|
|
36
|
+
/** The line with every literal and comment character blanked to a space. */
|
|
37
|
+
code: string;
|
|
38
|
+
/** Whether the line carries any block comment, open or closed. */
|
|
39
|
+
hasComment: boolean;
|
|
40
|
+
/** Each block comment the line opens, with the span it covers. */
|
|
41
|
+
comments: CommentSpan[];
|
|
42
|
+
endState: ScanState;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The scan of a line that is not code, and so opens and closes nothing.
|
|
46
|
+
*
|
|
47
|
+
* A `datalines` record is data: a comment marker or an apostrophe in one is a
|
|
48
|
+
* character in a value, not the start of a comment or a literal. Reading such a
|
|
49
|
+
* line with the code scanner would carry that state into every line below it.
|
|
50
|
+
*/
|
|
51
|
+
export declare const noScan: () => ScannedLine;
|
|
52
|
+
/**
|
|
53
|
+
* Reads one line, starting from the state the previous line ended in.
|
|
54
|
+
*
|
|
55
|
+
* A break is never taken inside a literal, because a SAS literal really does
|
|
56
|
+
* continue onto the next line (`"ab` / `cd"` is one value) and an inserted
|
|
57
|
+
* newline would become part of the string.
|
|
58
|
+
*/
|
|
59
|
+
export declare const scanLine: (line: string, state: ScanState) => ScannedLine;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scanLine = exports.noScan = exports.cleanState = void 0;
|
|
4
|
+
const cleanState = () => ({
|
|
5
|
+
quote: '',
|
|
6
|
+
inComment: false,
|
|
7
|
+
maskedDepth: 0
|
|
8
|
+
});
|
|
9
|
+
exports.cleanState = cleanState;
|
|
10
|
+
/**
|
|
11
|
+
* The calls whose argument text is carried as DATA rather than as tokens.
|
|
12
|
+
*
|
|
13
|
+
* The masking macros - `%str(`, `%nrstr(`, `%bquote(`, `%nrbquote(`,
|
|
14
|
+
* `%superq(`, `%nrsuperq(`, `%quote(`, `%nrquote(`, `%unquote(` - return their
|
|
15
|
+
* argument as a value, so a newline inserted inside one becomes part of it.
|
|
16
|
+
* `%sysfunc(` and `%qsysfunc(` are the same problem one level down: the argument
|
|
17
|
+
* text is handed to a DATA step function, and for the text functions the
|
|
18
|
+
* whitespace is data. Measured on a live engine, breaking inside
|
|
19
|
+
* `%sysfunc(fput(&fid,%str(&name): %str(&value)))` wrote
|
|
20
|
+
* `Content-Type: application/csv` where the macro meant one space - so no
|
|
21
|
+
* space inside either form is a break point.
|
|
22
|
+
*/
|
|
23
|
+
const maskStart = /%n?r?(?:str|bquote|superq|quote|unquote)\s*\(|%q?sysfunc\s*\(/iy;
|
|
24
|
+
/**
|
|
25
|
+
* The scan of a line that is not code, and so opens and closes nothing.
|
|
26
|
+
*
|
|
27
|
+
* A `datalines` record is data: a comment marker or an apostrophe in one is a
|
|
28
|
+
* character in a value, not the start of a comment or a literal. Reading such a
|
|
29
|
+
* line with the code scanner would carry that state into every line below it.
|
|
30
|
+
*/
|
|
31
|
+
const noScan = () => ({
|
|
32
|
+
positions: [],
|
|
33
|
+
code: '',
|
|
34
|
+
hasComment: false,
|
|
35
|
+
comments: [],
|
|
36
|
+
endState: (0, exports.cleanState)()
|
|
37
|
+
});
|
|
38
|
+
exports.noScan = noScan;
|
|
39
|
+
/**
|
|
40
|
+
* Reads one line, starting from the state the previous line ended in.
|
|
41
|
+
*
|
|
42
|
+
* A break is never taken inside a literal, because a SAS literal really does
|
|
43
|
+
* continue onto the next line (`"ab` / `cd"` is one value) and an inserted
|
|
44
|
+
* newline would become part of the string.
|
|
45
|
+
*/
|
|
46
|
+
const scanLine = (line, state) => {
|
|
47
|
+
const positions = [];
|
|
48
|
+
const code = new Array(line.length).fill(' ');
|
|
49
|
+
const comments = [];
|
|
50
|
+
let { quote, inComment, maskedDepth } = state;
|
|
51
|
+
let hasComment = inComment;
|
|
52
|
+
let commentStart = inComment ? 0 : -1;
|
|
53
|
+
for (let index = 0; index < line.length; index++) {
|
|
54
|
+
const character = line[index];
|
|
55
|
+
if (inComment) {
|
|
56
|
+
if (character === '*' && line[index + 1] === '/') {
|
|
57
|
+
inComment = false;
|
|
58
|
+
comments.push({ start: commentStart, end: index });
|
|
59
|
+
index++;
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
// A space inside a block comment is prose, not a break point: the
|
|
63
|
+
// contract above states it, and no caller wants one - the wrap refuses a
|
|
64
|
+
// comment-bearing line and `reflowComments` owns its text.
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
// Masked text is data, so it is read before anything that OPENS a literal
|
|
68
|
+
// or a comment: `%str(%')` is how a single quote is written, and reading
|
|
69
|
+
// that apostrophe as the start of a literal would carry a phantom string
|
|
70
|
+
// into every line below it.
|
|
71
|
+
if (maskedDepth) {
|
|
72
|
+
if (character === '(')
|
|
73
|
+
maskedDepth++;
|
|
74
|
+
else if (character === ')')
|
|
75
|
+
maskedDepth--;
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if (quote) {
|
|
79
|
+
if (character === quote)
|
|
80
|
+
quote = '';
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (character === "'" || character === '"') {
|
|
84
|
+
quote = character;
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
if (character === '/' && line[index + 1] === '*') {
|
|
88
|
+
inComment = true;
|
|
89
|
+
hasComment = true;
|
|
90
|
+
commentStart = index;
|
|
91
|
+
index++;
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
maskStart.lastIndex = index;
|
|
95
|
+
if (maskStart.test(line)) {
|
|
96
|
+
maskedDepth = 1;
|
|
97
|
+
index = maskStart.lastIndex - 1;
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (character === ' ')
|
|
101
|
+
positions.push(index);
|
|
102
|
+
code[index] = character;
|
|
103
|
+
}
|
|
104
|
+
if (inComment)
|
|
105
|
+
comments.push({ start: commentStart, end: line.length });
|
|
106
|
+
return {
|
|
107
|
+
positions,
|
|
108
|
+
code: code.join(''),
|
|
109
|
+
hasComment,
|
|
110
|
+
comments,
|
|
111
|
+
endState: { quote, inComment, maskedDepth }
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
exports.scanLine = scanLine;
|
|
115
|
+
//# sourceMappingURL=scanLine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanLine.js","sourceRoot":"","sources":["../../src/utils/scanLine.ts"],"names":[],"mappings":"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"}
|