commit 9ef23a14e5a1075d405968955650bf4cc64e6144
Author: Victor Rosenberg <[email protected]>
AuthorDate: Sat, 22 Jun 2013 15:15:49 +0300
Commit: Mauro Talevi <[email protected]>
CommitDate: Mon, 24 Jun 2013 01:33:35 +0200
JBEHAVE-924 - Faster regex in pattern variant bulder
diff --git
a/jbehave-core/src/main/java/org/jbehave/core/steps/PatternVariantBuilder.java
b/jbehave-core/src/main/java/org/jbehave/core/steps/PatternVariantBuilder.java
index 0b55095..e92605c 100644
---
a/jbehave-core/src/main/java/org/jbehave/core/steps/PatternVariantBuilder.java
+++
b/jbehave-core/src/main/java/org/jbehave/core/steps/PatternVariantBuilder.java
@@ -100,7 +100,7 @@ public class PatternVariantBuilder {
* Regular expression that locates patterns to be evaluated in the input
* pattern.
*/
- private final Pattern regex =
Pattern.compile("(.*?)?(\\{((.*?)(\\|)?)*?\\})(.*)");
+ private final Pattern regex =
Pattern.compile("([^\\n{]*+)(\\{(([^|}]++)(\\|)?+)*+\\})([^\\n]*+)");
private final Set<String> variants;
diff --git
a/jbehave-core/src/test/java/org/jbehave/core/steps/PatternVariantBuilderBehaviour.java
b/jbehave-core/src/test/java/org/jbehave/core/steps/PatternVariantBuilderBehaviour.java
index c38fe5b..1568907 100644
---
a/jbehave-core/src/test/java/org/jbehave/core/steps/PatternVariantBuilderBehaviour.java
+++
b/jbehave-core/src/test/java/org/jbehave/core/steps/PatternVariantBuilderBehaviour.java
@@ -72,4 +72,22 @@ public class PatternVariantBuilderBehaviour {
assertTrue(result.contains("When $A is added to $B"));
}
+ @Test
+ public void hasUnclosedBracket() {
+ PatternVariantBuilder builder = new PatternVariantBuilder("When
$A {+|plus|is added to $B");
+ Set<String> result = builder.allVariants();
+ assertEquals(1, result.size());
+ assertTrue(result.contains("When $A {+|plus|is added to $B"));
+ }
+
+ @Test
+ public void hasUnclosedBrackets() {
+ PatternVariantBuilder builder = new PatternVariantBuilder("When $A
{+|plus|is added to} $B and }{$C");
+ Set<String> result = builder.allVariants();
+ assertEquals(3, result.size());
+ assertTrue(result.contains("When $A + $B and }{$C"));
+ assertTrue(result.contains("When $A plus $B and }{$C"));
+ assertTrue(result.contains("When $A is added to $B and }{$C"));
+ }
+
}