fix pattern matching for inline bindings with curly braces

This commit is contained in:
Jonathan Shook 2022-06-22 21:15:34 -05:00
parent 07000d794b
commit d7192e7b9a
2 changed files with 14 additions and 1 deletions

View File

@ -37,7 +37,7 @@ import java.util.regex.Pattern;
*/
public class BindPointParser implements BiFunction<String, Map<String, String>, BindPointParser.Result> {
public final static Pattern BINDPOINT_ANCHOR = Pattern.compile("(\\{((?<anchor>\\w+[-_\\d\\w.]*)})|(\\{\\{(?<extended>[^}]+?)}}))");
public final static Pattern BINDPOINT_ANCHOR = Pattern.compile("(\\{((?<anchor>\\w+[-_\\d\\w.]*)})|(\\{\\{(?<extended>(?!}}).+?)}}))");
public final static String DEFINITION = "DEFINITION";

View File

@ -48,6 +48,19 @@ public class BindPointParserTest {
)
)
);
}
@Test
public void testCurlyBracesWithinPattern() {
BindPointParser bpp = new BindPointParser();
assertThat(bpp.apply("a{{Template(\"-{}-\",Combinations(\"a-z\"))}}b", Map.of())).isEqualTo(
new BindPointParser.Result(
List.of("a","Template(\"-{}-\",Combinations(\"a-z\"))","b"),
List.of(
BindPoint.of(BindPointParser.DEFINITION,"Template(\"-{}-\",Combinations(\"a-z\"))", BindPoint.Type.definition)
)
)
);
}