From 54fff10f2f9c080d2ee7f239ddfdaba7d4fa0db3 Mon Sep 17 00:00:00 2001 From: Slava Leleka Date: Tue, 7 Nov 2023 16:04:56 +0200 Subject: [PATCH] refactor IfClosed() --- src/linter/rules/if-closed.ts | 54 +++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/src/linter/rules/if-closed.ts b/src/linter/rules/if-closed.ts index 5fd7ce6..bfa9785 100644 --- a/src/linter/rules/if-closed.ts +++ b/src/linter/rules/if-closed.ts @@ -38,31 +38,41 @@ export const IfClosed: LinterRule = { return; } - // Check for "if" and "endif" directives - if (rule.name.value === IF_DIRECTIVE) { - // Collect open "if" - context.storage.openIfs.push(rule); - } else if (rule.name.value === ELSE_DIRECTIVE) { - // Check if there is an open "!#if" before "!#else" - if (context.storage.openIfs.length === 0) { + const directive = rule.name.value; + switch (directive) { + case IF_DIRECTIVE: + // Collect open "if" + context.storage.openIfs.push(rule); + break; + case ELSE_DIRECTIVE: + // Check if there is an open "!#if" before "!#else" + if (context.storage.openIfs.length === 0) { + context.report({ + // eslint-disable-next-line max-len + message: `Using an "${ELSE_DIRECTIVE}" directive without an opening "${IF_DIRECTIVE}" directive`, + node: rule, + }); + } + // otherwise do nothing + break; + case ENDIF_DIRECTIVE: + if (context.storage.openIfs.length === 0) { + context.report({ + // eslint-disable-next-line max-len + message: `Using an "${ENDIF_DIRECTIVE}" directive without an opening "${IF_DIRECTIVE}" directive`, + node: rule, + }); + } else { + // Mark "if" as closed (simply delete it from collection) + context.storage.openIfs.pop(); + } + break; + default: context.report({ - // eslint-disable-next-line max-len - message: `Using an "${ELSE_DIRECTIVE}" directive without an opening "${IF_DIRECTIVE}" directive`, + message: `Unknown directive: "${directive}"`, node: rule, }); - } - // otherwise do nothing - } else if (rule.name.value === ENDIF_DIRECTIVE) { - if (context.storage.openIfs.length === 0) { - context.report({ - // eslint-disable-next-line max-len - message: `Using an "${ENDIF_DIRECTIVE}" directive without an opening "${IF_DIRECTIVE}" directive`, - node: rule, - }); - } else { - // Mark "if" as closed (simply delete it from collection) - context.storage.openIfs.pop(); - } + break; } }, onEndFilterList: (context): void => {