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("%"));