]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
HM-5: Added Day
authorcesarvh <cesarv.h@berkeley.edu>
Wed, 17 Oct 2018 19:28:58 +0000 (12:28 -0700)
committercesarvh <cesarv.h@berkeley.edu>
Tue, 19 Mar 2019 19:39:34 +0000 (12:39 -0700)
Month Year Era format

services/structureddate/structureddate/src/main/antlr4/org/collectionspace/services/structureddate/antlr/StructuredDate.g4
services/structureddate/structureddate/src/main/java/org/collectionspace/services/structureddate/antlr/ANTLRStructuredDateEvaluator.java
services/structureddate/structureddate/src/test/resources/test-dates.yaml

index 9045f658e0c5e00ca46e3b78c3dd4913aebcff00..7a07930556175a8ab90789dc2ebcaf912993a5c2 100644 (file)
@@ -8,14 +8,17 @@ grammar StructuredDate;
 /*
  * Parser rules
  */
+// unknownDisplayDate:    
 
-oneDisplayDate:        displayDate ( DOT | QUESTION )? EOF ; 
+oneDisplayDate:        displayDate ( DOT | QUESTION )? EOF ;
 
 displayDate:           uncertainDate
 |                      certainDate
 /* TODO: Need to decide what "before" and "after" actually mean
 |                      beforeOrAfterDate
 */
+|                      beforeOrAfterDate
+// |                      unknownDate
 ;
 
 uncertainDate:         CIRCA certainDate ;
@@ -93,26 +96,22 @@ century:               ( strCentury | numCentury ) era? ;
 
 millennium:            nth MILLENNIUM era? ;
 
-strDate:               strMonth ( numDayOfMonth | nth ) COMMA? numYear era?;
+strDate:               strMonth ( numDayOfMonth | nth ) COMMA? numYear era;
 invStrDate:            era num COMMA? strMonth num
-|                      era? num COMMA strMonth num ;
-dayFirstDate:          num strMonth COMMA? num era
-|                      num strMonth COMMA num era?
-|                      nth strMonth COMMA? num era? ;
-dayOrYearFirstDate:    num strMonth num ;
-invStrDateEraLastDate: num COMMA strMonth num era? ;
-strDayInMonthRange:    strMonth numDayOfMonth ( HYPHEN | DASH ) numDayOfMonth COMMA? numYear era? ;
-monthInYearRange:      strMonth ( HYPHEN | DASH ) strMonth COMMA? numYear era? ;
-nthQuarterInYearRange: nthQuarter ( HYPHEN | DASH ) nthQuarter COMMA? numYear era? ;
-strSeasonInYearRange:  strSeason ( HYPHEN | DASH ) strSeason COMMA? numYear era? ;
-numDayInMonthRange:    numMonth SLASH numDayOfMonth ( HYPHEN | DASH ) numDayOfMonth SLASH numYear era? ;
-numDate:               num SLASH num SLASH num era?
-|                      num HYPHEN num HYPHEN num era? ;
-monthYear:             strMonth COMMA? numYear era? ;
-invMonthYear:          era? numYear COMMA? strMonth ;
-seasonYear:            strSeason COMMA? numYear era? ;
-invSeasonYear:         era? numYear COMMA? strSeason ;
-nthQuarterYear:        nthQuarter numYear era? ;
+|                      ( num | nth ) strMonth COMMA? num era ;
+strDayInMonthRange:    strMonth numDayOfMonth ( HYPHEN | DASH ) numDayOfMonth COMMA? numYear era ;
+monthInYearRange:      strMonth ( HYPHEN | DASH ) strMonth COMMA? numYear era ;
+nthQuarterInYearRange: nthQuarter ( HYPHEN | DASH ) nthQuarter COMMA? numYear era ;
+strSeasonInYearRange:  strSeason ( HYPHEN | DASH ) strSeason COMMA? numYear era ;
+numDayInMonthRange:    numMonth SLASH numDayOfMonth ( HYPHEN | DASH ) numDayOfMonth SLASH numYear era 
+|                      numMonth SLASH numYear ( HYPHEN | DASH ) numMonth SLASH numYear era ;
+numDate:               num SLASH num SLASH num era
+|                      num HYPHEN num HYPHEN num era ;
+monthYear:             strMonth COMMA? numYear era ;
+invMonthYear:          era numYear COMMA? strMonth ;
+seasonYear:            strSeason COMMA? numYear era ;
+invSeasonYear:         era numYear COMMA? strSeason ;
+nthQuarterYear:        nthQuarter numYear era ;
 nthQuarter:            ( nth | LAST ) QUARTER ;
 nthHalf:               ( nth | LAST ) HALF ;
 numDecade:             TENS ;
@@ -129,7 +128,7 @@ numYear:               NUMBER ;
 numMonth:              NUMBER ;
 numDayOfMonth:         NUMBER ;
 num:                   NUMBER ;
-
+// unknownDate:           UNKNOWN ;
 
 /*
  * Lexer rules
@@ -171,3 +170,4 @@ DOT:            '.' ;
 QUESTION:       '?' ;
 STRING:         [a-z]+ ;
 OTHER:          . ;
+// UNKNOWN:        'unknown';
\ No newline at end of file
index 5c9066ff97796275958c24c9fdaa963664c883c2..ad7eb3645dd2197d25d2ac343a0e0ea260c6e056 100644 (file)
@@ -460,7 +460,7 @@ public class ANTLRStructuredDateEvaluator extends StructuredDateBaseListener imp
        @Override
        public void exitInvStrDate(InvStrDateContext ctx) {
                if (ctx.exception != null) return;
-
+       
                // Reorder the stack into a canonical ordering,
                // year-month-day-era.
 
@@ -1156,6 +1156,7 @@ public class ANTLRStructuredDateEvaluator extends StructuredDateBaseListener imp
                stack.push(num);
        }
 
+
        protected String getErrorMessage(RecognitionException re) {
                String message = "";
 
index 28583a5b5068f608ddd516ffaef8d6c5e1c565db..d59f398f39d48c58a71c5836e134389ad63035d9 100644 (file)
   "13 april 15":                        # oneDisplayDate - ambigous day and year - should be Year month day
                                          earliestSingleDate: [13,  4,  15, CE]
 
+  "13 april 1995":                           # oneDisplayDate - with question mark
+                                         earliestSingleDate: [1995,  4,  13, CE]
+
+  "13 apr 1995":                           # oneDisplayDate - with question mark
+                                         earliestSingleDate: [1995,  4,  13, CE]
+
+  "13th APRIL 1995":                           # oneDisplayDate - with question mark
+                                         earliestSingleDate: [1995,  4,  13, CE]
+
+  "13 april 1995 - 13 april 2018":    
+                                         earliestSingleDate: [1995,  4, 13, CE]
+                                         latestDate:         [2018,  4, 13, CE]
+
+  "after 13 april 1995":
+                                         earliestSingleDate: [1995,  4, 13, CE]
+                                         latestDate:         [2018,  10, 17, CE]
+
+  "after april 13 1995":
+                                         earliestSingleDate: [1995,  4, 13, CE]
+                                         latestDate:         [2018,  10, 17, CE]
+
+  "unknown":
+                                         earliestSingleDate: []
+
 
 # -------------------------------------------------------------------------------------------------------
 # Invalid dates