From 6ea89c0808eb4cd027d27ce7037042f66600a7c8 Mon Sep 17 00:00:00 2001 From: albertlatacz Date: Sun, 27 Nov 2016 12:40:12 +0000 Subject: [PATCH] non-greedy type name extraction (fixes #100) --- src/javarepl/expressions/Patterns.java | 2 +- test/javarepl/expressions/PatternsTest.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/javarepl/expressions/Patterns.java b/src/javarepl/expressions/Patterns.java index 4766d99..0e7f7ef 100644 --- a/src/javarepl/expressions/Patterns.java +++ b/src/javarepl/expressions/Patterns.java @@ -23,7 +23,7 @@ public class Patterns { public static final Regex typeExtensibilityModifiersPattern = oneOf("final +", "abstract +"); public static final Regex typePrefixPattern = oneOf(regexPermutations(typeExtensibilityModifiersPattern, staticModifierPattern, visibilityModifiersPattern), " *"); public static final Regex typeKindPattern = oneOf("class +", "interface +", "enum +"); - public static final Regex typePattern = join(oneOf(packagePattern, ""), ".*", typePrefixPattern, typeKindPattern, identifierPattern, ".*\\{.*"); + public static final Regex typePattern = join(oneOf(packagePattern, ""), ".*?", typePrefixPattern, typeKindPattern, identifierPattern, ".*\\{.*"); public static final Regex methodExtensibilityModifiersPattern = oneOf("final +"); public static final Regex methodPrefixPattern = oneOf(regexPermutations(methodExtensibilityModifiersPattern, staticModifierPattern, visibilityModifiersPattern), " *"); diff --git a/test/javarepl/expressions/PatternsTest.java b/test/javarepl/expressions/PatternsTest.java index 36a0553..cf20c4c 100644 --- a/test/javarepl/expressions/PatternsTest.java +++ b/test/javarepl/expressions/PatternsTest.java @@ -83,6 +83,9 @@ public void shouldMatchClass() { MatchResult result = typePattern.match("package some.pack; public static final class SomeClass extends BaseClass{"); assertThat(result.group(1), is("some.pack")); assertThat(result.group(2), is("SomeClass")); + + result = typePattern.match("public class SomeClass {\n// comment with class word {\n}"); + assertThat(result.group(2), is("SomeClass")); } @Test