Skip to content

Commit 695ce9a

Browse files
committed
Merge remote-tracking branch 'github/fix_open_ended_date_parsing'
2 parents 9068267 + a1d28e2 commit 695ce9a

File tree

4 files changed

+26
-7
lines changed

4 files changed

+26
-7
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ apply plugin: 'maven-publish'
1414
apply plugin: 'signing'
1515
apply plugin: "jacoco"
1616

17-
version = '0.26.0'
17+
version = '0.27.0'
1818

1919
java {
2020
sourceCompatibility = JavaVersion.VERSION_1_8

src/main/java/ch/poole/openinghoursparser/OpeningHoursParser.jj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1064,6 +1064,8 @@ DateWithOffset datewithoffset(boolean mo) :
10641064
)
10651065
)
10661066
(
1067+
// This tries to, as lax as possible, differentiate between Jan 31+ Mo and Jan 31+Mo, that is an open ended date vs date with an offset
1068+
LOOKAHEAD(5, ( < HYPHEN > | < PLUS > ) < WEEKDAY >, { getToken(1).kind == HYPHEN || !precedingWs(getToken(2)) || getToken(5).kind == DAYS })
10671069
(
10681070
minus = < HYPHEN >
10691071
| < PLUS >

src/test/java/ch/poole/openinghoursparser/IndividualTest.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,30 @@
55
import java.util.Scanner;
66

77
/**
8-
* Individual testing for the OpeningHoursParser, receiving
9-
* inputs from System.in
8+
* Individual testing for the OpeningHoursParser, receiving inputs from System.in
109
*
1110
*
1211
* @author Vuong Ho
1312
*
1413
*/
15-
1614
public class IndividualTest {
1715
public static void main(String[] args) {
18-
Scanner sc = new Scanner(System.in);
16+
Scanner sc = new Scanner(System.in);
1917
Boolean isStrict = args[0].equals("true");
20-
while(true) {
18+
System.out.println("Parse strings in opening-hours format, empty input will terminate");
19+
while (true) {
2120
System.out.print("Please enter your input: ");
2221
String input = sc.nextLine();
22+
if ("".equals(input)) {
23+
break;
24+
}
2325
try {
2426
OpeningHoursParser parser = new OpeningHoursParser(new ByteArrayInputStream(input.getBytes()));
2527
List<ch.poole.openinghoursparser.Rule> rules = parser.rules(isStrict);
2628
System.out.println("Legal input string");
2729
System.out.println("Detected rules in input string listed below");
28-
for(ch.poole.openinghoursparser.Rule rule : rules) {
30+
System.out.println("\n------------------------------\n");
31+
for (ch.poole.openinghoursparser.Rule rule : rules) {
2932
System.out.println(rule.toDebugString());
3033
}
3134
System.out.println("\n------------------------------\n");

src/test/java/ch/poole/openinghoursparser/UnitTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,20 @@ public void dateWithOffset() {
298298

299299
}
300300

301+
@Test
302+
public void openEndedDateRange() {
303+
OpeningHoursParser parser = new OpeningHoursParser(new ByteArrayInputStream("Jan 31+ Mo".getBytes()));
304+
try {
305+
List<Rule> rules = parser.rules(false);
306+
assertEquals(1, rules.size());
307+
List<DateRange> dateRanges = rules.get(0).getDates();
308+
assertEquals(1, dateRanges.size());
309+
assertTrue(dateRanges.get(0).getStartDate().isOpenEnded());
310+
} catch (ParseException pex) {
311+
fail(pex.getMessage());
312+
}
313+
}
314+
301315
@Test
302316
/**
303317
* This doesn't seem to turn up in our test data

0 commit comments

Comments
 (0)