refactor: Improve parsing of CK Airlines (CK) flight schedule data
This commit is contained in:
@@ -23,7 +23,8 @@ const (
|
|||||||
AllDigitsPattern = `^(?P<dep_time>\d+)$`
|
AllDigitsPattern = `^(?P<dep_time>\d+)$`
|
||||||
IndexPattern = `^(?P<idx>\(?L?[0-9]+\)?:?\.?)$`
|
IndexPattern = `^(?P<idx>\(?L?[0-9]+\)?:?\.?)$`
|
||||||
DatePattern = `^(?P<date>\d{2}\w{3})$`
|
DatePattern = `^(?P<date>\d{2}\w{3})$`
|
||||||
TaskPattern = `^(?P<task>[A-Z]\/[A-Z])$`
|
// CK task: 01)H/Z
|
||||||
|
TaskPattern = `(?P<task>[A-Z]\/[A-Z])$`
|
||||||
WaypointPattern = `^(SI:)?(?P<arr_time>\d{4}(\(\d{2}[A-Z]{3}\))?)?\/?(?P<airport>[A-Z]{3})\/?(?P<dep_time>\d{4}(\(\d{2}[A-Z]{3}\))?)?$`
|
WaypointPattern = `^(SI:)?(?P<arr_time>\d{4}(\(\d{2}[A-Z]{3}\))?)?\/?(?P<airport>[A-Z]{3})\/?(?P<dep_time>\d{4}(\(\d{2}[A-Z]{3}\))?)?$`
|
||||||
FlightNumberPattern = `^(?P<number>[0-9A-Z][0-9A-Z]\d{3,5})$`
|
FlightNumberPattern = `^(?P<number>[0-9A-Z][0-9A-Z]\d{3,5})$`
|
||||||
RegisterPattern = `^(?P<reg>B\d{4})$`
|
RegisterPattern = `^(?P<reg>B\d{4})$`
|
||||||
@@ -172,6 +173,20 @@ var (
|
|||||||
3: Register,
|
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,
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -206,9 +206,9 @@ var _ = Describe("Parser Definition", func() {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
Context("CK", func() {
|
Context("XX", func() {
|
||||||
It("nil", func() {
|
It("nil", func() {
|
||||||
def := FindDef("CK")
|
def := FindDef("XX")
|
||||||
Expect(def).To(BeNil())
|
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"))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user