refactor(transcription): extract rewriteBlockText from propagation loop
Some checks failed
CI / Unit & Component Tests (push) Failing after 4m2s
CI / OCR Service Tests (push) Successful in 47s
CI / Backend Unit Tests (push) Failing after 3m16s
CI / Unit & Component Tests (pull_request) Failing after 3m16s
CI / OCR Service Tests (pull_request) Successful in 40s
CI / Backend Unit Tests (pull_request) Failing after 3m6s
Some checks failed
CI / Unit & Component Tests (push) Failing after 4m2s
CI / OCR Service Tests (push) Successful in 47s
CI / Backend Unit Tests (push) Failing after 3m16s
CI / Unit & Component Tests (pull_request) Failing after 3m16s
CI / OCR Service Tests (pull_request) Successful in 40s
CI / Backend Unit Tests (pull_request) Failing after 3m6s
Extracts the Pattern+Matcher+replaceAll block into a private helper so the loop body reads as three lines: rewrite text, update sidecar entries, nothing else. Moves the boundary-condition rationale comment to the helper. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -45,19 +45,12 @@ public class PersonMentionPropagationListener {
|
|||||||
|
|
||||||
String oldNeedle = "@" + event.oldDisplayName();
|
String oldNeedle = "@" + event.oldDisplayName();
|
||||||
String newNeedle = "@" + event.newDisplayName();
|
String newNeedle = "@" + event.newDisplayName();
|
||||||
// Match @OldName only at a token boundary: not followed by a letter/digit/hyphen
|
|
||||||
// (catches @Hans-Peter when renaming Hans) AND not followed by " <Uppercase>"
|
|
||||||
// (catches @Hans Müller when renaming the single-name @Hans). False negatives —
|
|
||||||
// e.g. "@Hans Bekam" where Bekam is sentence-initial — are accepted as the
|
|
||||||
// conservative trade-off; the alternative (corruption) is irrecoverable.
|
|
||||||
Pattern boundary = Pattern.compile(
|
Pattern boundary = Pattern.compile(
|
||||||
Pattern.quote(oldNeedle) + "(?![\\p{L}0-9\\-]| (?=\\p{Lu}))");
|
Pattern.quote(oldNeedle) + "(?![\\p{L}0-9\\-]| (?=\\p{Lu}))");
|
||||||
String replacement = Matcher.quoteReplacement(newNeedle);
|
String replacement = Matcher.quoteReplacement(newNeedle);
|
||||||
|
|
||||||
for (TranscriptionBlock block : blocks) {
|
for (TranscriptionBlock block : blocks) {
|
||||||
if (block.getText() != null) {
|
rewriteBlockText(block, boundary, replacement);
|
||||||
block.setText(boundary.matcher(block.getText()).replaceAll(replacement));
|
|
||||||
}
|
|
||||||
for (PersonMention mention : block.getMentionedPersons()) {
|
for (PersonMention mention : block.getMentionedPersons()) {
|
||||||
if (mention.getPersonId().equals(event.personId())) {
|
if (mention.getPersonId().equals(event.personId())) {
|
||||||
mention.setDisplayName(event.newDisplayName());
|
mention.setDisplayName(event.newDisplayName());
|
||||||
@@ -70,4 +63,15 @@ public class PersonMentionPropagationListener {
|
|||||||
log.info("Propagated rename {} → {} across {} block(s) for person {}",
|
log.info("Propagated rename {} → {} across {} block(s) for person {}",
|
||||||
event.oldDisplayName(), event.newDisplayName(), blocks.size(), event.personId());
|
event.oldDisplayName(), event.newDisplayName(), blocks.size(), event.personId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Match @OldName only at a token boundary: not followed by a letter/digit/hyphen
|
||||||
|
// (catches @Hans-Peter when renaming Hans) AND not followed by " <Uppercase>"
|
||||||
|
// (catches @Hans Müller when renaming the single-name @Hans). False negatives —
|
||||||
|
// e.g. "@Hans Bekam" where Bekam is sentence-initial — are accepted as the
|
||||||
|
// conservative trade-off; the alternative (corruption) is irrecoverable.
|
||||||
|
private void rewriteBlockText(TranscriptionBlock block, Pattern boundary, String replacement) {
|
||||||
|
if (block.getText() != null) {
|
||||||
|
block.setText(boundary.matcher(block.getText()).replaceAll(replacement));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user