From ea947df50a7032bfff55d89d9fb103150f2f60b1 Mon Sep 17 00:00:00 2001 From: Alain Nussbaumer Date: Fri, 26 Apr 2024 22:54:32 +0200 Subject: [PATCH] [web] Use named capture groups --- web-src/eslint.config.js | 1 - web-src/src/components/LyricsPane.vue | 14 ++++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/web-src/eslint.config.js b/web-src/eslint.config.js index 31c88d04..a4fd5d87 100644 --- a/web-src/eslint.config.js +++ b/web-src/eslint.config.js @@ -32,7 +32,6 @@ export default [ 'no-undef': 'off', 'no-unused-vars': ['error', { args: 'none', caughtErrors: 'none' }], 'one-var': 'off', - 'prefer-named-capture-group': 'off', 'sort-keys': 'off', 'vue/html-self-closing': 'off', 'vue/max-attributes-per-line': 'off', diff --git a/web-src/src/components/LyricsPane.vue b/web-src/src/components/LyricsPane.vue index 68dc90a5..de468317 100644 --- a/web-src/src/components/LyricsPane.vue +++ b/web-src/src/components/LyricsPane.vue @@ -55,13 +55,15 @@ export default { const parsed = [] if (raw) { // Parse the lyrics - const regex = /(\[(\d+):(\d+)(?:\.\d+)?\] ?)?(.*)/u - raw.split('\n').forEach((item, index) => { - const matches = regex.exec(item) - if (matches && matches[4]) { + const regex = + /\[(?\d+):(?\d+)(?:\.(?\d+))?\] ?(?.*)/u + raw.split('\n').forEach((item) => { + const { text, minutes, seconds, hundredths } = regex.exec(line).groups + if (text) { const verse = { - text: matches[4], - time: matches[2] * 60 + Number(matches[3]) + text, + time: + minutes * 60 + Number(seconds) + Number(`.${hundredths || 0}`) } parsed.push(verse) }