diff --git a/src/rules/hasMacroNameInMend.ts b/src/rules/hasMacroNameInMend.ts index 1a7c829..e88f8f5 100644 --- a/src/rules/hasMacroNameInMend.ts +++ b/src/rules/hasMacroNameInMend.ts @@ -3,7 +3,6 @@ import { FileLintRule } from '../types/LintRule' import { LintRuleType } from '../types/LintRuleType' import { Severity } from '../types/Severity' import { trimComments } from '../utils/trimComments' -import { getLineNumber } from '../utils/getLineNumber' import { getColumnNumber } from '../utils/getColumnNumber' const name = 'hasMacroNameInMend' @@ -17,7 +16,7 @@ const test = (value: string) => { const declaredMacros: { name: string; lineNumber: number }[] = [] let isCommentStarted = false - lines.forEach((line, index) => { + lines.forEach((line, lineIndex) => { const { statement: trimmedLine, commentStarted } = trimComments( line, isCommentStarted @@ -39,7 +38,7 @@ const test = (value: string) => { .split('(')[0] declaredMacros.push({ name: macroName, - lineNumber: getLineNumber(lines, index + 1) + lineNumber: lineIndex + 1 }) } else if (trimmedStatement.startsWith('%mend')) { const declaredMacro = declaredMacros.pop() @@ -52,7 +51,7 @@ const test = (value: string) => { message: `%mend statement is missing macro name - ${ declaredMacro!.name }`, - lineNumber: getLineNumber(lines, index + 1), + lineNumber: lineIndex + 1, startColumnNumber: getColumnNumber(line, '%mend'), endColumnNumber: getColumnNumber(line, '%mend') + 6, severity: Severity.Warning @@ -62,7 +61,7 @@ const test = (value: string) => { message: `%mend statement has mismatched macro name, it should be '${ declaredMacro!.name }'`, - lineNumber: getLineNumber(lines, index + 1), + lineNumber: lineIndex + 1, startColumnNumber: getColumnNumber(line, macroName), endColumnNumber: getColumnNumber(line, macroName) + macroName.length - 1, diff --git a/src/rules/hasMacroParentheses.ts b/src/rules/hasMacroParentheses.ts index 6e67340..5053ca0 100644 --- a/src/rules/hasMacroParentheses.ts +++ b/src/rules/hasMacroParentheses.ts @@ -3,7 +3,6 @@ import { FileLintRule } from '../types/LintRule' import { LintRuleType } from '../types/LintRuleType' import { Severity } from '../types/Severity' import { trimComments } from '../utils/trimComments' -import { getLineNumber } from '../utils/getLineNumber' import { getColumnNumber } from '../utils/getColumnNumber' const name = 'hasMacroParentheses' @@ -14,7 +13,7 @@ const test = (value: string) => { const lines: string[] = value ? value.split('\n') : [] let isCommentStarted = false - lines.forEach((line, index) => { + lines.forEach((line, lineIndex) => { const { statement: trimmedLine, commentStarted } = trimComments( line, isCommentStarted @@ -40,7 +39,7 @@ const test = (value: string) => { if (!macroName) diagnostics.push({ message: 'Macro definition contains space(s)', - lineNumber: getLineNumber(lines, index + 1), + lineNumber: lineIndex + 1, startColumnNumber: getColumnNumber(line, '%macro'), endColumnNumber: getColumnNumber(line, '%macro') + trimmedStatement.length, @@ -49,7 +48,7 @@ const test = (value: string) => { else if (macroNameDefinitionParts.length === 1) diagnostics.push({ message, - lineNumber: getLineNumber(lines, index + 1), + lineNumber: lineIndex + 1, startColumnNumber: getColumnNumber(line, macroNameDefinition), endColumnNumber: getColumnNumber(line, macroNameDefinition) + @@ -60,7 +59,7 @@ const test = (value: string) => { else if (macroName !== macroName.trim()) diagnostics.push({ message: 'Macro definition contains space(s)', - lineNumber: getLineNumber(lines, index + 1), + lineNumber: lineIndex + 1, startColumnNumber: getColumnNumber(line, macroNameDefinition), endColumnNumber: getColumnNumber(line, macroNameDefinition) + diff --git a/src/rules/noNestedMacros.ts b/src/rules/noNestedMacros.ts index a8cec22..69568a7 100644 --- a/src/rules/noNestedMacros.ts +++ b/src/rules/noNestedMacros.ts @@ -3,7 +3,6 @@ import { FileLintRule } from '../types/LintRule' import { LintRuleType } from '../types/LintRuleType' import { Severity } from '../types/Severity' import { trimComments } from '../utils/trimComments' -import { getLineNumber } from '../utils/getLineNumber' import { getColumnNumber } from '../utils/getColumnNumber' const name = 'noNestedMacros' @@ -15,7 +14,7 @@ const test = (value: string) => { const lines: string[] = value ? value.split('\n') : [] let isCommentStarted = false - lines.forEach((line, index) => { + lines.forEach((line, lineIndex) => { const { statement: trimmedLine, commentStarted } = trimComments( line, isCommentStarted @@ -41,7 +40,7 @@ const test = (value: string) => { message: message .replace('{macro}', macroName) .replace('{parent}', parentMacro!), - lineNumber: getLineNumber(lines, index + 1), + lineNumber: lineIndex + 1, startColumnNumber: getColumnNumber(line, '%macro'), endColumnNumber: getColumnNumber(line, '%macro') + trimmedStatement.length - 1, diff --git a/src/utils/getColumnNumber.spec.ts b/src/utils/getColumnNumber.spec.ts index 7a4e405..85a0c1a 100644 --- a/src/utils/getColumnNumber.spec.ts +++ b/src/utils/getColumnNumber.spec.ts @@ -7,7 +7,7 @@ describe('getColumnNumber', () => { it('should throw an error when the specified string is not found within the text', () => { expect(() => getColumnNumber('foo bar', 'baz')).toThrowError( - "String 'baz' was not found in statement 'foo bar'" + "String 'baz' was not found in line 'foo bar'" ) }) }) diff --git a/src/utils/getColumnNumber.ts b/src/utils/getColumnNumber.ts index 8d42dfd..1361c5a 100644 --- a/src/utils/getColumnNumber.ts +++ b/src/utils/getColumnNumber.ts @@ -1,9 +1,7 @@ -export const getColumnNumber = (statement: string, text: string): number => { - const index = (statement.split('\n').pop() as string).indexOf(text) +export const getColumnNumber = (line: string, text: string): number => { + const index = (line.split('\n').pop() as string).indexOf(text) if (index < 0) { - throw new Error( - `String '${text}' was not found in statement '${statement}'` - ) + throw new Error(`String '${text}' was not found in line '${line}'`) } - return (statement.split('\n').pop() as string).indexOf(text) + 1 + return (line.split('\n').pop() as string).indexOf(text) + 1 } diff --git a/src/utils/getLineNumber.ts b/src/utils/getLineNumber.ts deleted file mode 100644 index 7d988e7..0000000 --- a/src/utils/getLineNumber.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const getLineNumber = (lines: string[], index: number): number => { - const combinedCode = lines.slice(0, index).join('\n') - return (combinedCode.match(/\n/g) || []).length + 1 -}