commit 298fce3d3a02a7245cff62c1c33b758c7fcd8ca7
Author:     Mauro Talevi <mauro.tal...@aquilonia.org>
AuthorDate: Fri, 15 Nov 2013 00:50:51 +0100
Commit:     Mauro Talevi <mauro.tal...@aquilonia.org>
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("%"));



Reply via email to