From 6d70988ba3f5ee989dc8be57def56e325a8dad37 Mon Sep 17 00:00:00 2001 From: Asger Gitz-Johansen Date: Wed, 7 Dec 2022 11:47:44 +0100 Subject: [PATCH] fix: log-link regex now handles parentheses in the links This solves issue #57 --- src/main/java/dk/cs/aau/huppaal/logging/LogRegex.java | 6 +++--- .../dk/cs/aau/huppaal/presentations/LogTabPresentation.java | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/dk/cs/aau/huppaal/logging/LogRegex.java b/src/main/java/dk/cs/aau/huppaal/logging/LogRegex.java index e23d75e5..00e47e9e 100644 --- a/src/main/java/dk/cs/aau/huppaal/logging/LogRegex.java +++ b/src/main/java/dk/cs/aau/huppaal/logging/LogRegex.java @@ -21,8 +21,8 @@ private static Pattern getPattern() { sb.append(sep).append(quantifier.name().toLowerCase()); } // For humans: - // [](:/?) - var x = "\\[(?[^]]+)]\\((?"+sb+"):(?(?[^/]+)/?(?\\S+)?)\\)"; - return Pattern.compile(x); + // [](:/?) + var z = "\\[(?[^]]+)]\\((?"+sb+"):(?((?[^/]+?)/)?(?(\\([^)]*\\))|[^(]+?)+?)\\)"; + return Pattern.compile(z); } } diff --git a/src/main/java/dk/cs/aau/huppaal/presentations/LogTabPresentation.java b/src/main/java/dk/cs/aau/huppaal/presentations/LogTabPresentation.java index fdd28830..26e49d34 100644 --- a/src/main/java/dk/cs/aau/huppaal/presentations/LogTabPresentation.java +++ b/src/main/java/dk/cs/aau/huppaal/presentations/LogTabPresentation.java @@ -52,8 +52,11 @@ private void onLinkClick(Hyperlink link) { throw new RuntimeException("Not a valid %s link pattern: '%s'".formatted(BuildConfig.NAME,link.getLink())); // TODO: When syntactic elements have UUIDs to identify them, we should look at those IDs (instead/aswell) var regexLink = matcher.group("link"); + System.out.println(regexLink); var regexComponent = matcher.group("component"); + System.out.println(regexComponent); var regexIdentifier = Optional.ofNullable(matcher.group("identifier")); + System.out.println(regexIdentifier); var notValidLink = "Not a valid %s link: %s".formatted(link.getQuantifier().name().toLowerCase(), link.getLink()); switch (link.getQuantifier()) { case LOCATION -> { @@ -62,7 +65,7 @@ private void onLinkClick(Hyperlink link) { var component = SelectHelper.selectComponent(regexComponent); regexIdentifier.ifPresent(s -> SelectHelper.selectLocation(component, s)); } - case COMPONENT -> SelectHelper.selectComponent(regexComponent); + case COMPONENT -> SelectHelper.selectComponent(regexLink); case SUBCOMPONENT -> { if(regexIdentifier.isEmpty()) Log.addWarning(notValidLink);