diff --git a/api/tools/log-parse-tool.js b/api/tools/log-parse-tool.js index cf6e311..0a9d3dc 100644 --- a/api/tools/log-parse-tool.js +++ b/api/tools/log-parse-tool.js @@ -11,7 +11,7 @@ const VehicleClasses = Object.freeze({ UNKNOWN: 'Unbekannt', }); -const playerNameRegex = /^(.*?)\s\(/; +const playerNameRegex = /(^|,\s)(.*?)\s\(/g; const vehicleNameEndRegex = /\s\(\w+:/; @@ -279,18 +279,27 @@ const getBudgetEntry = (budg, warId, warDate) => { const getPlayerAndFractionFromString = (inputString) => { const playerNameRegexMatch = playerNameRegex.exec(inputString); const sideMatch = sideRegex.exec(inputString); - // const magazineMatch = magazineRegex.exec(inputString); - // const vehicleMatch = vehicleRegex.exec(inputString); + // SINGLE PLAYER NAME let name; if (playerNameRegexMatch && playerNameRegexMatch.length >= 2) { // NAME - name = playerNameRegexMatch[1]; + name = playerNameRegexMatch[2].trim(); + } + // ADDITIONAL PLAYER NAMES + let additionalPlayerMatch; + while ((additionalPlayerMatch = playerNameRegex.exec(inputString)) !== null) { + const addPlayer = additionalPlayerMatch[0].replace(/^,\s/, '').replace(/\s\($/, '').trim(); + if (name instanceof Array) { + name.push(addPlayer) + } else { + name = [name, addPlayer]; + } } + // PLAYER FRACTION let side; if (sideMatch && sideMatch.length >= 3) { - // SIDE side = sideMatch[2]; } else { const inputArray = inputString.split(WHITESPACE); @@ -299,6 +308,9 @@ const getPlayerAndFractionFromString = (inputString) => { } } + // const magazineMatch = magazineRegex.exec(inputString); + // const vehicleMatch = vehicleRegex.exec(inputString); + // if (magazineMatch && magazineMatch.length >= 3) { // MAGAZINE // console.log(magazineMatch[2]) @@ -320,9 +332,11 @@ const getPlayerAndFractionFromString = (inputString) => { undefined; } + console.log(name); + // do not return player for 'Error: No unit' if (name && name !== 'Error: No unit') { - return {name: name.trim(), fraction: fraction}; + return {name: name, fraction: fraction}; } };