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 => {