From e3ec614d5669da47a3f2708caabf9ced2c4469e4 Mon Sep 17 00:00:00 2001 From: Mars073 Date: Tue, 8 Mar 2022 12:43:15 +0100 Subject: [PATCH 1/6] change some patterns and add multi-lines flag --- server/src/accessibilityPatterns.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/server/src/accessibilityPatterns.ts b/server/src/accessibilityPatterns.ts index 689972d..dbeeed8 100644 --- a/server/src/accessibilityPatterns.ts +++ b/server/src/accessibilityPatterns.ts @@ -11,18 +11,18 @@ // Order based om most common types first const patterns: string[] = [ - '|)(?:.)+?>', - '|)(?:.)+?>', + '', + '', // "id=\"(?:.)+?\"", '(?:(?:\\s|\\S)+?(?=))', - '', - '', - '(?:(?:\\s|\\S|)+?(?=))', - '|)(?:.)+?>', - 'tabindex="(?:.)+?"', - '<(?:i|)frame (?:.|)+?>', + '', + '', + '(?:(?:\\s|\\S|)+?(?=))', + '', + 'tabindex=".*"', + '', ]; -export const pattern: RegExp = new RegExp(patterns.join('|'), 'ig'); +export const pattern: RegExp = new RegExp(patterns.join('|'), 'igm'); const nonDescriptiveAlts: string[] = [ 'alt="image"', From 95be530715b7e07b5fd3b47b04067e4ab2443283 Mon Sep 17 00:00:00 2001 From: Mars073 Date: Tue, 8 Mar 2022 21:44:24 +0100 Subject: [PATCH 2/6] move function before call --- server/src/server.ts | 66 +++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/server/src/server.ts b/server/src/server.ts index 222500a..81bb779 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -85,9 +85,42 @@ async function validateTextDocument(textDocument: server.TextDocument): Promise< let m: RegExpExecArray | null; let diagnostics: server.Diagnostic[] = []; + async function _diagnostics(regEx: RegExpExecArray, diagnosticsMessage: string, severityNumber: number) { + let severity: server.DiagnosticSeverity; + + switch (severityNumber) { + case 1: + severity = server.DiagnosticSeverity.Error; + break; + case 2: + severity = server.DiagnosticSeverity.Warning; + break; + case 3: + severity = server.DiagnosticSeverity.Information; + break; + case 4: + severity = server.DiagnosticSeverity.Hint; + break; + } + + let diagnostic: server.Diagnostic = { + severity, + message: diagnosticsMessage, + range: { + start: textDocument.positionAt(regEx.index), + end: textDocument.positionAt(regEx.index + regEx[0].length), + }, + code: 0, + source: 'web accessibility', + }; + + diagnostics.push(diagnostic); + } + while ((m = pattern.pattern.exec(text)) && problems < settings.maxNumberOfProblems) { if (m != null) { - let el = m[0].slice(0, 5); + const el = m[0].slice(0, 5); + switch (true) { // ID // case (/id="/i.test(el)): @@ -188,37 +221,6 @@ async function validateTextDocument(textDocument: server.TextDocument): Promise< } } - async function _diagnostics(regEx: RegExpExecArray, diagnosticsMessage: string, severityNumber: number) { - let severity: server.DiagnosticSeverity; - - switch (severityNumber) { - case 1: - severity = server.DiagnosticSeverity.Error; - break; - case 2: - severity = server.DiagnosticSeverity.Warning; - break; - case 3: - severity = server.DiagnosticSeverity.Information; - break; - case 4: - severity = server.DiagnosticSeverity.Hint; - break; - } - - let diagnostic: server.Diagnostic = { - severity, - message: diagnosticsMessage, - range: { - start: textDocument.positionAt(regEx.index), - end: textDocument.positionAt(regEx.index + regEx[0].length), - }, - code: 0, - source: 'web accessibility', - }; - - diagnostics.push(diagnostic); - } connection.sendDiagnostics({ uri: textDocument.uri, diagnostics }); } From 3f254940f0cea8113af9654b91f6e3f58adc002b Mon Sep 17 00:00:00 2001 From: Mars073 Date: Tue, 8 Mar 2022 21:45:42 +0100 Subject: [PATCH 3/6] simplify RegExps --- server/src/accessibilityPatterns.ts | 50 ++++++++++++++--------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/server/src/accessibilityPatterns.ts b/server/src/accessibilityPatterns.ts index dbeeed8..4079790 100644 --- a/server/src/accessibilityPatterns.ts +++ b/server/src/accessibilityPatterns.ts @@ -11,16 +11,16 @@ // Order based om most common types first const patterns: string[] = [ - '', - '', + ']+)>', + ']+)>', // "id=\"(?:.)+?\"", - '(?:(?:\\s|\\S)+?(?=))', - '', - '', - '(?:(?:\\s|\\S|)+?(?=))', - '', + '([\\s\\S]*)(?=)', + ']+)>', + ']+)>', + '([\\s\\S]*)(?=)', + ']+)>', 'tabindex=".*"', - '', + ']+)>', ]; export const pattern: RegExp = new RegExp(patterns.join('|'), 'igm'); @@ -63,9 +63,9 @@ export async function validateDiv(m: RegExpExecArray) { } export async function validateSpan(m: RegExpExecArray) { - if (!/role=(?:.*?[a-z].*?)"/i.test(m[0])) { - if (!//.test(m[0])) { - if (//.test(m[0])) { + if (!/role=(?:.*[a-z].*)"/i.test(m[0])) { + if (!//.test(m[0])) { + if (//.test(m[0])) { return { meta: m, mess: 'Change the span to a