Skip to content

Commit b476ecf

Browse files
committed
maybe method now accepts a builder as parameter
1 parent 8d59494 commit b476ecf

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

src/main/java/ru/lanwen/verbalregex/VerbalExpression.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,10 @@ public Builder find(final String value) {
170170
public Builder maybe(final String pValue) {
171171
return this.then(pValue).add("?");
172172
}
173+
174+
public Builder maybe(final Builder regex) {
175+
return this.group().add(regex.build().toString()).endGr().add("?");
176+
}
173177

174178
/**
175179
* Add expression that matches anything (includes empty string)

src/test/java/ru/lanwen/verbalregex/BasicFunctionalityUnitTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,4 +579,20 @@ public void testOneOfWithClosedCapture() {
579579
assertThat(testRegex.getText("xxxabcdefzzz", 1), equalTo("abcdef"));
580580
assertThat(testRegex.getText("xxxdefzzz", 1), equalTo("def"));
581581
}
582+
583+
@Test
584+
public void shouldAddMaybeWithOneOfFromAnotherBuilder() {
585+
VerbalExpression.Builder namePrefix = regex().oneOf("Mr.", "Ms.");
586+
VerbalExpression name = regex()
587+
.maybe(namePrefix)
588+
.space()
589+
.zeroOrMore()
590+
.word()
591+
.oneOrMore()
592+
.build();
593+
594+
assertThat("Is a name with prefix", name, matchesTo("Mr. Bond"));
595+
assertThat("Is a name without prefix", name, matchesTo("James"));
596+
597+
}
582598
}

0 commit comments

Comments
 (0)