diff --git a/internal/parsers/schedule_parser.go b/internal/parsers/schedule_parser.go index 95ffa95..b0342fb 100644 --- a/internal/parsers/schedule_parser.go +++ b/internal/parsers/schedule_parser.go @@ -20,10 +20,11 @@ const ( Date = "date" Task = "task" // Index = "idx" - AllDigitsPattern = `^(?P\d+)$` - IndexPattern = `^(?P\(?L?[0-9]+\)?:?\.?)$` - DatePattern = `^(?P\d{2}\w{3})$` - TaskPattern = `^(?P[A-Z]\/[A-Z])$` + AllDigitsPattern = `^(?P\d+)$` + IndexPattern = `^(?P\(?L?[0-9]+\)?:?\.?)$` + DatePattern = `^(?P\d{2}\w{3})$` + // CK task: 01)H/Z + TaskPattern = `(?P[A-Z]\/[A-Z])$` WaypointPattern = `^(SI:)?(?P\d{4}(\(\d{2}[A-Z]{3}\))?)?\/?(?P[A-Z]{3})\/?(?P\d{4}(\(\d{2}[A-Z]{3}\))?)?$` FlightNumberPattern = `^(?P[0-9A-Z][0-9A-Z]\d{3,5})$` RegisterPattern = `^(?PB\d{4})$` @@ -172,6 +173,20 @@ var ( 3: Register, }, }, + { + /** + * 中国货运 (CK) + *01)H/Z CK261 B2076 PVG1535(30OCT) 1705TPE + */ + Airlines: []string{"CK"}, + MinLen: 4, + WaypointStart: 3, + Fields: map[int]string{ + 0: Task, + 1: FlightNumber, + 2: Register, + }, + }, } ) diff --git a/internal/parsers/schedule_parser_test.go b/internal/parsers/schedule_parser_test.go index 74397c8..b1eba68 100644 --- a/internal/parsers/schedule_parser_test.go +++ b/internal/parsers/schedule_parser_test.go @@ -206,9 +206,9 @@ var _ = Describe("Parser Definition", func() { }) }) - Context("CK", func() { + Context("XX", func() { It("nil", func() { - def := FindDef("CK") + def := FindDef("XX") Expect(def).To(BeNil()) }) }) @@ -365,4 +365,23 @@ var _ = Describe("Parse Line with PreDef", func() { }) }) + Context("CK", func() { + It("01)H/Z CK261 B2076 PVG1535(30OCT) 1705TPE", func() { + lineText := "01)H/Z CK261 B2076 PVG1535(30OCT) 1705TPE" + def := FindDef("CK") + Expect(def).NotTo(BeNil()) + schedule := ParseWithDef(lineText, def) + Expect(schedule).NotTo(BeNil()) + Expect(schedule.Task).To(Equal("H/Z")) + Expect(len(schedule.FlightNumber)).To(Equal(1)) + Expect(schedule.FlightNumber[0]).To(Equal("CK261")) + Expect(schedule.AircraftReg).To(Equal("B2076")) + Expect(len(schedule.Waypoints)).To(Equal(2)) + Expect(schedule.Waypoints[0].Airport).To(Equal("PVG")) + Expect(schedule.Waypoints[0].DepartureTime).To(Equal("1535(30OCT)")) + Expect(schedule.Waypoints[1].Airport).To(Equal("TPE")) + Expect(schedule.Waypoints[1].ArrivalTime).To(Equal("1705")) + }) + }) + })