commit 298fce3d3a02a7245cff62c1c33b758c7fcd8ca7
Author: Mauro Talevi <[email protected]>
AuthorDate: Fri, 15 Nov 2013 00:50:51 +0100
Commit: Mauro Talevi <[email protected]>
CommitDate: Fri, 15 Nov 2013 00:50:51 +0100
JBEHAVE-957: Support all unicode letters in patter placeholder names.
diff --git
a/jbehave-core/src/main/java/org/jbehave/core/parsers/RegexPrefixCapturingPatternParser.java
b/jbehave-core/src/main/java/org/jbehave/core/parsers/RegexPrefixCapturingPatternParser.java
index 5f87aaf..7686df5 100755
---
a/jbehave-core/src/main/java/org/jbehave/core/parsers/RegexPrefixCapturingPatternParser.java
+++
b/jbehave-core/src/main/java/org/jbehave/core/parsers/RegexPrefixCapturingPatternParser.java
@@ -82,7 +82,8 @@ public class RegexPrefixCapturingPatternParser implements
StepPatternParser {
}
private Pattern findAllPrefixedWords() {
- return Pattern.compile("(\\" + prefix + "\\w*)(\\W|\\Z)",
Pattern.DOTALL);
+ // Use \p{L} in place of \w to allow for all unicode-supported
letters, not only ASCII
+ return Pattern.compile("(\\" + prefix + "\\p{L}*)(\\W|\\Z)",
Pattern.DOTALL);
}
private String replaceParametersWithCapture(String escapedMatch,
diff --git
a/jbehave-core/src/test/java/org/jbehave/core/parsers/RegexPrefixCapturingPatternParserBehaviour.java
b/jbehave-core/src/test/java/org/jbehave/core/parsers/RegexPrefixCapturingPatternParserBehaviour.java
index f654302..236f3c3 100755
---
a/jbehave-core/src/test/java/org/jbehave/core/parsers/RegexPrefixCapturingPatternParserBehaviour.java
+++
b/jbehave-core/src/test/java/org/jbehave/core/parsers/RegexPrefixCapturingPatternParserBehaviour.java
@@ -26,6 +26,14 @@ public class RegexPrefixCapturingPatternParserBehaviour {
}
@Test
+ public void shouldMatchStepWithPatternsUsingAccentsInPlacehoderNames() {
+ assertThatPatternMatchesStep(parser, "une maison avec
$numérosDesPortes portes et $quelques fenêtres",
+ "une maison avec 3 portes et 4 fenêtres", "numérosDesPortes",
"quelques");
+ assertThatPatternMatchesStep(parser, "ein Haus mit $anzahlDerTüren
Türen und $einige Fenster",
+ "ein Haus mit 3 Türen und 4 Fenster", "anzahlDerTüren",
"einige");
+ }
+
+ @Test
public void shouldMatchStepWithPatternsOfCustomPrefix() {
StepPatternParser parser = new RegexPrefixCapturingPatternParser("%");
assertThat(((RegexPrefixCapturingPatternParser) parser).getPrefix(),
equalTo("%"));