@sasjs/lint 5.0.1 → 5.1.1
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 +34 -4
- package/package.json +1 -1
- package/rules/file/hasDoxygenHeader.js +113 -32
- package/rules/file/hasDoxygenHeader.js.map +1 -1
- package/rules/file/hasMacroNameInMend.js +2 -1
- package/rules/file/hasMacroNameInMend.js.map +1 -1
- package/rules/file/hasMacroParentheses.js +2 -1
- package/rules/file/hasMacroParentheses.js.map +1 -1
- package/rules/file/hasRequiredMacroOptions.js +2 -1
- package/rules/file/hasRequiredMacroOptions.js.map +1 -1
- package/rules/file/lineEndings.js +2 -1
- package/rules/file/lineEndings.js.map +1 -1
- package/rules/file/lowerCaseMacroNames.js +2 -1
- package/rules/file/lowerCaseMacroNames.js.map +1 -1
- package/rules/file/minMacroNameLength.js +2 -1
- package/rules/file/minMacroNameLength.js.map +1 -1
- package/rules/file/noMacroIfInOpenCode.js +2 -1
- package/rules/file/noMacroIfInOpenCode.js.map +1 -1
- package/rules/file/noNestedCommentsInHeader.js +2 -1
- package/rules/file/noNestedCommentsInHeader.js.map +1 -1
- package/rules/file/noNestedMacros.js +2 -1
- package/rules/file/noNestedMacros.js.map +1 -1
- package/rules/file/noSingleAsteriskComments.js +2 -1
- package/rules/file/noSingleAsteriskComments.js.map +1 -1
- package/rules/file/noUndeclaredMacros.js +20 -10
- package/rules/file/noUndeclaredMacros.js.map +1 -1
- package/rules/file/noUnusedLibnames.js +2 -1
- package/rules/file/noUnusedLibnames.js.map +1 -1
- package/rules/file/noUnusedMacros.js +2 -1
- package/rules/file/noUnusedMacros.js.map +1 -1
- package/rules/file/noXcmd.js +2 -1
- package/rules/file/noXcmd.js.map +1 -1
- package/rules/file/strictMacroDefinition.js +3 -2
- package/rules/file/strictMacroDefinition.js.map +1 -1
- package/rules/line/indentationMultiple.js +2 -1
- package/rules/line/indentationMultiple.js.map +1 -1
- package/rules/line/maxLineLength.js +2 -1
- package/rules/line/maxLineLength.js.map +1 -1
- package/rules/line/noBannedStrings.js +2 -1
- package/rules/line/noBannedStrings.js.map +1 -1
- package/rules/line/noEncodedPasswords.js +2 -1
- package/rules/line/noEncodedPasswords.js.map +1 -1
- package/rules/line/noGremlins.js +2 -1
- package/rules/line/noGremlins.js.map +1 -1
- package/rules/line/noTabs.js +4 -3
- package/rules/line/noTabs.js.map +1 -1
- package/rules/line/noTrailingSpaces.js +2 -1
- package/rules/line/noTrailingSpaces.js.map +1 -1
- package/rules/path/lowerCaseFileNames.js +2 -1
- package/rules/path/lowerCaseFileNames.js.map +1 -1
- package/rules/path/noSpacesInFileNames.js +2 -1
- package/rules/path/noSpacesInFileNames.js.map +1 -1
- package/sasjslint-schema.json +13 -3
- package/types/LintConfig.d.ts +7 -0
- package/types/LintConfig.js +12 -0
- package/types/LintConfig.js.map +1 -1
- package/utils/getSeverity.d.ts +17 -0
- package/utils/getSeverity.js +20 -0
- package/utils/getSeverity.js.map +1 -0
- package/utils/index.d.ts +2 -0
- package/utils/index.js +2 -0
- package/utils/index.js.map +1 -1
- package/utils/isDoxygenHeader.d.ts +17 -0
- package/utils/isDoxygenHeader.js +58 -0
- package/utils/isDoxygenHeader.js.map +1 -0
|
@@ -7,11 +7,12 @@ exports.noSpacesInFileNames = void 0;
|
|
|
7
7
|
const LintRuleType_1 = require("../../types/LintRuleType");
|
|
8
8
|
const Severity_1 = require("../../types/Severity");
|
|
9
9
|
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const getSeverity_1 = require("../../utils/getSeverity");
|
|
10
11
|
const name = 'noSpacesInFileNames';
|
|
11
12
|
const description = 'Enforce the absence of spaces within file names.';
|
|
12
13
|
const message = 'File name contains spaces';
|
|
13
14
|
const test = (value, config) => {
|
|
14
|
-
const severity = (
|
|
15
|
+
const severity = (0, getSeverity_1.getSeverity)(config, name, Severity_1.Severity.Warning);
|
|
15
16
|
const fileName = path_1.default.basename(value);
|
|
16
17
|
if (fileName.includes(' ')) {
|
|
17
18
|
return [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noSpacesInFileNames.js","sourceRoot":"","sources":["../../../src/rules/path/noSpacesInFileNames.ts"],"names":[],"mappings":";;;;;;AACA,2DAAuD;AACvD,mDAA+C;AAC/C,gDAAuB;
|
|
1
|
+
{"version":3,"file":"noSpacesInFileNames.js","sourceRoot":"","sources":["../../../src/rules/path/noSpacesInFileNames.ts"],"names":[],"mappings":";;;;;;AACA,2DAAuD;AACvD,mDAA+C;AAC/C,gDAAuB;AAEvB,yDAAqD;AAErD,MAAM,IAAI,GAAG,qBAAqB,CAAA;AAClC,MAAM,WAAW,GAAG,kDAAkD,CAAA;AACtE,MAAM,OAAO,GAAG,2BAA2B,CAAA;AAE3C,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,MAAmB,EAAE,EAAE;IAClD,MAAM,QAAQ,GAAG,IAAA,yBAAW,EAAC,MAAM,EAAE,IAAI,EAAE,mBAAQ,CAAC,OAAO,CAAC,CAAA;IAC5D,MAAM,QAAQ,GAAG,cAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAErC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL;gBACE,OAAO;gBACP,UAAU,EAAE,CAAC;gBACb,iBAAiB,EAAE,CAAC;gBACpB,eAAe,EAAE,CAAC;gBAClB,QAAQ;aACT;SACF,CAAA;IACH,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,mBAAmB,GAAiB;IAC/C,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI;IACJ,WAAW;IACX,OAAO;IACP,IAAI;CACL,CAAA"}
|
package/sasjslint-schema.json
CHANGED
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"$id": "#/properties/hasDoxygenHeader",
|
|
95
95
|
"type": "boolean",
|
|
96
96
|
"title": "hasDoxygenHeader",
|
|
97
|
-
"description": "Enforces
|
|
97
|
+
"description": "Enforces a Doxygen header at the start of each SAS file: a comment block that opens with `/**` and closes with a line holding nothing but `**/`. Shows a warning when the header is absent, when it opens or closes with a single asterisk, when the close shares its line with the header content, and when the block is never closed. The fix widens a single-asterisk marker and moves a close onto a line of its own; an unclosed block is left for the author.",
|
|
98
98
|
"default": true,
|
|
99
99
|
"examples": [true, false]
|
|
100
100
|
},
|
|
@@ -274,7 +274,7 @@
|
|
|
274
274
|
"$id": "#/properties/noUndeclaredMacros",
|
|
275
275
|
"type": "boolean",
|
|
276
276
|
"title": "noUndeclaredMacros",
|
|
277
|
-
"description": "Reports a warning for each macro a file invokes without declaring it in the `<h4> SAS Macros </h4>` section of the header - the only header list `sasjs compile` reads. Macros that ship with SAS are always considered declared, and so are the macros listed in `ignoredMacros` (`webout` by default). The formatter resolves the warning by adding the macro names to the header, sorted alphabetically. A file with no header is not reported: it has no `<h4> SAS Macros </h4>` section, and the fix cannot write into one, so `hasDoxygenHeader` reports the missing header instead.",
|
|
277
|
+
"description": "Reports a warning for each macro a file invokes without declaring it in the `<h4> SAS Macros </h4>` section of the header - the only header list `sasjs compile` reads. Macros that ship with SAS are always considered declared, and so are the macros listed in `ignoredMacros` (`webout` by default). The formatter resolves the warning by adding the macro names to the header, sorted alphabetically. A file with no Doxygen header is not reported: it has no `<h4> SAS Macros </h4>` section, and the fix cannot write into one, so `hasDoxygenHeader` reports the missing header instead. The same skip covers a leading comment that is not a header - one that fits on one line, one opened with a single asterisk, or a `/**` block whose close is not a line of its own - because `hasDoxygenHeader` reports each of those shapes and its fixes put the header into the form this rule can write into.",
|
|
278
278
|
"default": true,
|
|
279
279
|
"examples": [true, false]
|
|
280
280
|
},
|
|
@@ -366,7 +366,7 @@
|
|
|
366
366
|
"$id": "#/properties/severityLevel",
|
|
367
367
|
"type": "object",
|
|
368
368
|
"title": "severityLevel",
|
|
369
|
-
"description": "An object which specifies the severity level of each rule.",
|
|
369
|
+
"description": "An object which specifies the severity level of each rule. A `default` entry sets the level for every rule that has no entry of its own, including rules added in future versions.",
|
|
370
370
|
"default": {},
|
|
371
371
|
"examples": [
|
|
372
372
|
{
|
|
@@ -378,9 +378,19 @@
|
|
|
378
378
|
"hasDoxygenHeader": "warn",
|
|
379
379
|
"maxLineLength": "error",
|
|
380
380
|
"noTrailingSpaces": "error"
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"default": "error"
|
|
381
384
|
}
|
|
382
385
|
],
|
|
383
386
|
"properties": {
|
|
387
|
+
"default": {
|
|
388
|
+
"$id": "#/properties/severityLevel/default",
|
|
389
|
+
"title": "default",
|
|
390
|
+
"description": "Severity of every rule that has no entry of its own in this object. Rules added in later versions are covered without being listed.",
|
|
391
|
+
"type": "string",
|
|
392
|
+
"enum": ["error", "warn"]
|
|
393
|
+
},
|
|
384
394
|
"noBannedStrings": {
|
|
385
395
|
"$id": "#/properties/severityLevel/noBannedStrings",
|
|
386
396
|
"title": "noBannedStrings",
|
package/types/LintConfig.d.ts
CHANGED
|
@@ -26,6 +26,13 @@ export declare class LintConfig {
|
|
|
26
26
|
readonly severityLevel: {
|
|
27
27
|
[key: string]: Severity;
|
|
28
28
|
};
|
|
29
|
+
/**
|
|
30
|
+
* The severity every rule reports at unless it has its own entry in
|
|
31
|
+
* `severityLevel`, read from the `default` key of that object. This is what
|
|
32
|
+
* lets a project fail on every warning without naming each rule, and keeps
|
|
33
|
+
* covering the rules added in later versions.
|
|
34
|
+
*/
|
|
35
|
+
readonly defaultSeverity?: Severity;
|
|
29
36
|
readonly requiredMacroOptions: string[];
|
|
30
37
|
readonly ignoredLibnames: string[];
|
|
31
38
|
readonly ignoredMacros: string[];
|
package/types/LintConfig.js
CHANGED
|
@@ -241,7 +241,19 @@ class LintConfig {
|
|
|
241
241
|
}
|
|
242
242
|
}
|
|
243
243
|
if (json === null || json === void 0 ? void 0 : json.severityLevel) {
|
|
244
|
+
const defaultSeverity = json.severityLevel.default;
|
|
245
|
+
if (defaultSeverity !== undefined) {
|
|
246
|
+
if (defaultSeverity === 'warn')
|
|
247
|
+
this.defaultSeverity = Severity_1.Severity.Warning;
|
|
248
|
+
else if (defaultSeverity === 'error')
|
|
249
|
+
this.defaultSeverity = Severity_1.Severity.Error;
|
|
250
|
+
else
|
|
251
|
+
throw new Error(`Property "severityLevel.default" can only be "warn" or "error"`);
|
|
252
|
+
}
|
|
244
253
|
for (const [rule, severity] of Object.entries(json.severityLevel)) {
|
|
254
|
+
// `default` is the fallback rather than a rule of its own.
|
|
255
|
+
if (rule === 'default')
|
|
256
|
+
continue;
|
|
245
257
|
if (severity === 'warn')
|
|
246
258
|
this.severityLevel[rule] = Severity_1.Severity.Warning;
|
|
247
259
|
if (severity === 'error')
|
package/types/LintConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LintConfig.js","sourceRoot":"","sources":["../../src/types/LintConfig.ts"],"names":[],"mappings":";;;AAAA,wCAiBsB;AACtB,wCAQsB;AACtB,wCAAuE;AACvE,+CAA2C;AAE3C,oCAIiB;AACjB,8DAA0D;AAC1D,yCAAqC;AAErC;;;;;;GAMG;AACH,MAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"LintConfig.js","sourceRoot":"","sources":["../../src/types/LintConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { LintConfig } from '../types/LintConfig';
|
|
2
|
+
import { Severity } from '../types/Severity';
|
|
3
|
+
/**
|
|
4
|
+
* Resolves the severity a rule reports a violation at.
|
|
5
|
+
*
|
|
6
|
+
* The precedence is the rule's own `severityLevel` entry, then the `default`
|
|
7
|
+
* entry in that object, then the severity built into the rule. The `default`
|
|
8
|
+
* entry exists so that a project can raise (or lower) every rule - including
|
|
9
|
+
* the rules that do not exist yet - with a single line, instead of listing
|
|
10
|
+
* each rule name and revisiting the list whenever a rule is added.
|
|
11
|
+
*
|
|
12
|
+
* @param {LintConfig} config - the configuration in force, if any
|
|
13
|
+
* @param {string} rule - the name of the rule
|
|
14
|
+
* @param {Severity} fallback - the severity the rule uses when nothing is configured
|
|
15
|
+
* @returns {Severity} the severity to report at
|
|
16
|
+
*/
|
|
17
|
+
export declare const getSeverity: (config: LintConfig | undefined, rule: string, fallback: Severity) => Severity;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSeverity = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Resolves the severity a rule reports a violation at.
|
|
6
|
+
*
|
|
7
|
+
* The precedence is the rule's own `severityLevel` entry, then the `default`
|
|
8
|
+
* entry in that object, then the severity built into the rule. The `default`
|
|
9
|
+
* entry exists so that a project can raise (or lower) every rule - including
|
|
10
|
+
* the rules that do not exist yet - with a single line, instead of listing
|
|
11
|
+
* each rule name and revisiting the list whenever a rule is added.
|
|
12
|
+
*
|
|
13
|
+
* @param {LintConfig} config - the configuration in force, if any
|
|
14
|
+
* @param {string} rule - the name of the rule
|
|
15
|
+
* @param {Severity} fallback - the severity the rule uses when nothing is configured
|
|
16
|
+
* @returns {Severity} the severity to report at
|
|
17
|
+
*/
|
|
18
|
+
const getSeverity = (config, rule, fallback) => { var _a, _b; return (_b = (_a = config === null || config === void 0 ? void 0 : config.severityLevel[rule]) !== null && _a !== void 0 ? _a : config === null || config === void 0 ? void 0 : config.defaultSeverity) !== null && _b !== void 0 ? _b : fallback; };
|
|
19
|
+
exports.getSeverity = getSeverity;
|
|
20
|
+
//# sourceMappingURL=getSeverity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSeverity.js","sourceRoot":"","sources":["../../src/utils/getSeverity.ts"],"names":[],"mappings":";;;AAGA;;;;;;;;;;;;;GAaG;AACI,MAAM,WAAW,GAAG,CACzB,MAA8B,EAC9B,IAAY,EACZ,QAAkB,EACR,EAAE,eACZ,OAAA,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,mCAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,mCAAI,QAAQ,CAAA,EAAA,CAAA;AALvD,QAAA,WAAW,eAK4C"}
|
package/utils/index.d.ts
CHANGED
|
@@ -9,10 +9,12 @@ export * from './getPosition';
|
|
|
9
9
|
export * from './splitLines';
|
|
10
10
|
export * from './getIndicesOf';
|
|
11
11
|
export * from './getHeaderLinesCount';
|
|
12
|
+
export * from './isDoxygenHeader';
|
|
12
13
|
export * from './getDataSectionsDetail';
|
|
13
14
|
export * from './defaultBannedStrings';
|
|
14
15
|
export * from './defaultIgnoredMacros';
|
|
15
16
|
export * from './escapeRegExp';
|
|
17
|
+
export * from './getSeverity';
|
|
16
18
|
export * from './headerMacros';
|
|
17
19
|
export * from './mergeLintConfig';
|
|
18
20
|
export * from './parseLibnames';
|
package/utils/index.js
CHANGED
|
@@ -25,10 +25,12 @@ __exportStar(require("./getPosition"), exports);
|
|
|
25
25
|
__exportStar(require("./splitLines"), exports);
|
|
26
26
|
__exportStar(require("./getIndicesOf"), exports);
|
|
27
27
|
__exportStar(require("./getHeaderLinesCount"), exports);
|
|
28
|
+
__exportStar(require("./isDoxygenHeader"), exports);
|
|
28
29
|
__exportStar(require("./getDataSectionsDetail"), exports);
|
|
29
30
|
__exportStar(require("./defaultBannedStrings"), exports);
|
|
30
31
|
__exportStar(require("./defaultIgnoredMacros"), exports);
|
|
31
32
|
__exportStar(require("./escapeRegExp"), exports);
|
|
33
|
+
__exportStar(require("./getSeverity"), exports);
|
|
32
34
|
__exportStar(require("./headerMacros"), exports);
|
|
33
35
|
__exportStar(require("./mergeLintConfig"), exports);
|
|
34
36
|
__exportStar(require("./parseLibnames"), exports);
|
package/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAC9B,kDAA+B;AAC/B,mDAAgC;AAChC,sDAAmC;AACnC,8CAA2B;AAC3B,iDAA8B;AAC9B,8CAA2B;AAC3B,gDAA6B;AAC7B,+CAA4B;AAC5B,iDAA8B;AAC9B,wDAAqC;AACrC,0DAAuC;AACvC,yDAAsC;AACtC,yDAAsC;AACtC,iDAA8B;AAC9B,iDAA8B;AAC9B,oDAAiC;AACjC,kDAA+B;AAC/B,sDAAmC;AACnC,oDAAiC;AACjC,8CAA2B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAC9B,kDAA+B;AAC/B,mDAAgC;AAChC,sDAAmC;AACnC,8CAA2B;AAC3B,iDAA8B;AAC9B,8CAA2B;AAC3B,gDAA6B;AAC7B,+CAA4B;AAC5B,iDAA8B;AAC9B,wDAAqC;AACrC,oDAAiC;AACjC,0DAAuC;AACvC,yDAAsC;AACtC,yDAAsC;AACtC,iDAA8B;AAC9B,gDAA6B;AAC7B,iDAA8B;AAC9B,oDAAiC;AACjC,kDAA+B;AAC/B,sDAAmC;AACnC,oDAAiC;AACjC,8CAA2B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a file opens with a Doxygen header - a block comment that opens with
|
|
3
|
+
* two asterisks as the first non-whitespace text in the file, and closes with a
|
|
4
|
+
* line that holds nothing but the close marker.
|
|
5
|
+
*
|
|
6
|
+
* The close is what tells a header from a plain comment. A comment that fits on
|
|
7
|
+
* one line, a block opened with a single asterisk, and a block opened with two
|
|
8
|
+
* that is never closed all fail here; `hasDoxygenHeader` reports each of those
|
|
9
|
+
* shapes, and its fix puts the close on a line of its own.
|
|
10
|
+
*
|
|
11
|
+
* The opener is the first non-whitespace text, so a header that follows a
|
|
12
|
+
* statement is not one, and the first close marker ends the block - a close
|
|
13
|
+
* line below a block that already closed belongs to something else.
|
|
14
|
+
*
|
|
15
|
+
* @param {string} text - the text content of the file.
|
|
16
|
+
*/
|
|
17
|
+
export declare const isDoxygenHeader: (text: string) => boolean;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isDoxygenHeader = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* The close of a Doxygen header: a line that holds nothing but the marker (two
|
|
6
|
+
* asterisks and a slash), so both the rules and `sasjs compile` can locate the
|
|
7
|
+
* header's end. Leading whitespace is allowed; anything else on the line is
|
|
8
|
+
* not.
|
|
9
|
+
*/
|
|
10
|
+
const doxygenHeaderClose = '**/';
|
|
11
|
+
/**
|
|
12
|
+
* Whether a file opens with a Doxygen header - a block comment that opens with
|
|
13
|
+
* two asterisks as the first non-whitespace text in the file, and closes with a
|
|
14
|
+
* line that holds nothing but the close marker.
|
|
15
|
+
*
|
|
16
|
+
* The close is what tells a header from a plain comment. A comment that fits on
|
|
17
|
+
* one line, a block opened with a single asterisk, and a block opened with two
|
|
18
|
+
* that is never closed all fail here; `hasDoxygenHeader` reports each of those
|
|
19
|
+
* shapes, and its fix puts the close on a line of its own.
|
|
20
|
+
*
|
|
21
|
+
* The opener is the first non-whitespace text, so a header that follows a
|
|
22
|
+
* statement is not one, and the first close marker ends the block - a close
|
|
23
|
+
* line below a block that already closed belongs to something else.
|
|
24
|
+
*
|
|
25
|
+
* @param {string} text - the text content of the file.
|
|
26
|
+
*/
|
|
27
|
+
const isDoxygenHeader = (text) => {
|
|
28
|
+
if (!text)
|
|
29
|
+
return false;
|
|
30
|
+
const lines = text.split(/\r\n|\n/);
|
|
31
|
+
let first = -1;
|
|
32
|
+
for (let index = 0; index < lines.length; index++) {
|
|
33
|
+
if (lines[index].trim() !== '') {
|
|
34
|
+
first = index;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (first === -1)
|
|
39
|
+
return false;
|
|
40
|
+
const opener = lines[first].trimStart();
|
|
41
|
+
if (!opener.startsWith('/**'))
|
|
42
|
+
return false;
|
|
43
|
+
// A close on the opener's own line is not a close of its own: the block ends
|
|
44
|
+
// there, so no later line can close it.
|
|
45
|
+
if (opener.includes('*/'))
|
|
46
|
+
return false;
|
|
47
|
+
for (let index = first + 1; index < lines.length; index++) {
|
|
48
|
+
const line = lines[index];
|
|
49
|
+
if (line.trim() === doxygenHeaderClose)
|
|
50
|
+
return true;
|
|
51
|
+
// The block closed earlier, on a line that is not a close of its own.
|
|
52
|
+
if (line.includes('*/'))
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
};
|
|
57
|
+
exports.isDoxygenHeader = isDoxygenHeader;
|
|
58
|
+
//# sourceMappingURL=isDoxygenHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isDoxygenHeader.js","sourceRoot":"","sources":["../../src/utils/isDoxygenHeader.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,KAAK,CAAA;AAEhC;;;;;;;;;;;;;;;GAeG;AACI,MAAM,eAAe,GAAG,CAAC,IAAY,EAAW,EAAE;IACvD,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAA;IAEvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IACnC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAA;IAEd,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC/B,KAAK,GAAG,KAAK,CAAA;YACb,MAAK;QACP,CAAC;IACH,CAAC;IAED,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAE9B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAA;IACvC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAE3C,6EAA6E;IAC7E,wCAAwC;IACxC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IAEvC,KAAK,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QAEzB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,kBAAkB;YAAE,OAAO,IAAI,CAAA;QAEnD,sEAAsE;QACtE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAA;IACvC,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAhCY,QAAA,eAAe,mBAgC3B"}
|