UNPKG

@sasjs/lint

Version:

Linting and formatting for SAS code

51 lines 2.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hasMacroParentheses = void 0; const LintRuleType_1 = require("../../types/LintRuleType"); const Severity_1 = require("../../types/Severity"); const getColumnNumber_1 = require("../../utils/getColumnNumber"); const parseMacros_1 = require("../../utils/parseMacros"); const name = 'hasMacroParentheses'; const description = 'Enforces the presence of parentheses in macro definitions.'; const message = 'Macro definition missing parentheses'; const test = (value, config) => { const diagnostics = []; const macros = (0, parseMacros_1.parseMacros)(value, config); const severity = (config === null || config === void 0 ? void 0 : config.severityLevel[name]) || Severity_1.Severity.Warning; macros.forEach((macro) => { if (!macro.name) { diagnostics.push({ message: 'Macro definition missing name', lineNumber: macro.startLineNumbers[0], startColumnNumber: (0, getColumnNumber_1.getColumnNumber)(macro.declarationLines[0], '%macro'), endColumnNumber: (0, getColumnNumber_1.getColumnNumber)(macro.declarationLines[0], '%macro') + macro.declaration.length, severity }); } else if (!macro.declarationLines.find((dl) => dl.includes('('))) { const macroNameLineIndex = macro.declarationLines.findIndex((dl) => dl.includes(macro.name)); diagnostics.push({ message, lineNumber: macro.startLineNumbers[macroNameLineIndex], startColumnNumber: (0, getColumnNumber_1.getColumnNumber)(macro.declarationLines[macroNameLineIndex], macro.name), endColumnNumber: (0, getColumnNumber_1.getColumnNumber)(macro.declarationLines[macroNameLineIndex], macro.name) + macro.name.length - 1, severity }); } }); return diagnostics; }; /** * Lint rule that enforces the presence of parentheses in macro definitions.. */ exports.hasMacroParentheses = { type: LintRuleType_1.LintRuleType.File, name, description, message, test }; //# sourceMappingURL=hasMacroParentheses.js.map