@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.
Files changed (53) hide show
  1. package/README.md +52 -0
  2. package/format/adjustLineLength.d.ts +34 -0
  3. package/format/adjustLineLength.js +159 -0
  4. package/format/adjustLineLength.js.map +1 -0
  5. package/format/formatFile.d.ts +3 -1
  6. package/format/formatFile.js +4 -4
  7. package/format/formatFile.js.map +1 -1
  8. package/format/formatFolder.d.ts +3 -1
  9. package/format/formatFolder.js +38 -7
  10. package/format/formatFolder.js.map +1 -1
  11. package/format/formatProject.d.ts +2 -1
  12. package/format/formatProject.js +2 -2
  13. package/format/formatProject.js.map +1 -1
  14. package/format/formatText.d.ts +19 -1
  15. package/format/formatText.js +23 -3
  16. package/format/formatText.js.map +1 -1
  17. package/format/longLines.d.ts +60 -0
  18. package/format/longLines.js +90 -0
  19. package/format/longLines.js.map +1 -0
  20. package/format/reflowComments.d.ts +28 -0
  21. package/format/reflowComments.js +305 -0
  22. package/format/reflowComments.js.map +1 -0
  23. package/format/rewrapText.d.ts +38 -0
  24. package/format/rewrapText.js +389 -0
  25. package/format/rewrapText.js.map +1 -0
  26. package/format/shared.js +34 -5
  27. package/format/shared.js.map +1 -1
  28. package/format/splitTrailingComments.d.ts +22 -0
  29. package/format/splitTrailingComments.js +68 -0
  30. package/format/splitTrailingComments.js.map +1 -0
  31. package/package.json +11 -24
  32. package/sasjslint-schema.json +10 -1
  33. package/types/FormatOptions.d.ts +29 -0
  34. package/types/FormatOptions.js +3 -0
  35. package/types/FormatOptions.js.map +1 -0
  36. package/types/KeywordCase.d.ts +10 -0
  37. package/types/KeywordCase.js +13 -0
  38. package/types/KeywordCase.js.map +1 -0
  39. package/types/LintConfig.d.ts +10 -0
  40. package/types/LintConfig.js +17 -0
  41. package/types/LintConfig.js.map +1 -1
  42. package/types/index.d.ts +2 -0
  43. package/types/index.js +2 -0
  44. package/types/index.js.map +1 -1
  45. package/utils/getDataSectionsDetail.d.ts +14 -0
  46. package/utils/getDataSectionsDetail.js +29 -13
  47. package/utils/getDataSectionsDetail.js.map +1 -1
  48. package/utils/getLintConfig.d.ts +1 -0
  49. package/utils/getLintConfig.js +1 -0
  50. package/utils/getLintConfig.js.map +1 -1
  51. package/utils/scanLine.d.ts +59 -0
  52. package/utils/scanLine.js +115 -0
  53. package/utils/scanLine.js.map +1 -0
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=FormatOptions.js.map
@@ -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"}
@@ -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
@@ -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
  }
@@ -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
@@ -1,5 +1,7 @@
1
1
  export * from './Diagnostic';
2
2
  export * from './FormatResult';
3
+ export * from './FormatOptions';
4
+ export * from './KeywordCase';
3
5
  export * from './LintConfig';
4
6
  export * from './LintRule';
5
7
  export * from './LintRuleType';
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);
@@ -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 dataSectionStartRegex1 = new RegExp('^(datalines;)|(cards;)|(parmcards;)');
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
- else {
23
- if (dataSectionStartRegex1.test(line)) {
24
- dataSectionStarted = true;
25
- dataSectionStartIndex = index;
26
- dataSectionEndRegex = dataSectionEndRegex1;
27
- }
28
- else if (dataSectionStartRegex2.test(line)) {
29
- dataSectionStarted = true;
30
- dataSectionStartIndex = index;
31
- dataSectionEndRegex = dataSectionEndRegex2;
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;AAOhC,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,sBAAsB,GAAG,IAAI,MAAM,CACvC,qCAAqC,CACtC,CAAA;IACD,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;IAC5C,MAAM,sBAAsB,GAAG,IAAI,MAAM,CACvC,wCAAwC,CACzC,CAAA;IACD,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAA;IAE/C,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;YAC5B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,kBAAkB,GAAG,IAAI,CAAA;gBACzB,qBAAqB,GAAG,KAAK,CAAA;gBAC7B,mBAAmB,GAAG,oBAAoB,CAAA;YAC5C,CAAC;iBAAM,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,kBAAkB,GAAG,IAAI,CAAA;gBACzB,qBAAqB,GAAG,KAAK,CAAA;gBAC7B,mBAAmB,GAAG,oBAAoB,CAAA;YAC5C,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AArCY,QAAA,qBAAqB,yBAqCjC;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"}
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"}
@@ -21,6 +21,7 @@ export declare const DefaultLintConfiguration: {
21
21
  ignoredLibnames: never[];
22
22
  ignoredMacros: string[];
23
23
  indentationMultiple: number;
24
+ keywordCase: string;
24
25
  lineEndings: LineEndings;
25
26
  lowerCaseFileNames: boolean;
26
27
  lowerCaseMacroNames: boolean;
@@ -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":"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"}
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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"}