package aviation import "regexp" // String constants const ( StartIndicatorPrefix = "ZCZC" EndHeaderMarker = "." BeginPartMarker = "BEGIN PART" Category = "category" CategoryArrival = "ARR" CategoryDeparture = "DEP" CategoryCancellation = "CNL" CategoryDelay = "DLA" CategoryFlightPlan = "FPL" FlightNumber = "number" Register = "reg" SSR = "ssr" DepartureCode = "dep" DepartureTime = "dep_time" ArrivalCode = "arr" ArrivalTime = "arr_time" DestinationCode = "dest" OtherInfo = "other" ReferenceData = "reference_data" CategorySurveillance = "surve" Indicator = "indicator" Other = "other" AircraftID = "aircraft" Surveillance = "surve" Speed = "speed" Level = "level" Route = "route" EstimatedTime = "estt" AlternateAirport = "alter" PBN = "pbn" NavigationEquipment = "nav" EstimatedElapsedTime = "eet" SELCALCode = "sel" PerformanceCategory = "per" RerouteInformation = "rif" Remarks = "remark" ) // Regular expression patterns const ( ArrPatternString = `^\((?P[A-Z]{3})-(?P[A-Z0-9]+)(\/?(?P[A-Z0-9]+))?-(?P[A-Z]{4})-(?P[A-Z]{4})(?P\d{4})\)$` DepPatternString = `^\((?P[A-Z]{3})-(?P[A-Z0-9]+)(\/(?P[A-Z0-9]+))?-(?P[A-Z]{4})(?P\d{4})-(?P[A-Z]{4})\)$` FplPatternString = `\((?P[A-Z]{3})-(?P[A-Z]+\d+)-(?P[A-Z]{2})\n-(?P[A-Z]+\d+\/?[A-Z]?)\n?-(?P.*)\n?-(?P[A-Z]{4})(?P\d{4})\n?-(?P[A-Z]+\d+)(?P[A-Z0-9]+)\s+(?P(.|\n)+)\n-(?P[A-Z]{4})(?P\d{4})\s?(?P(\s[A-Z]{4})+)\n?-([A-Z]{3}\/(?:[A-Z]{4}\d{4}\s?)+)?(?P(?m)[A-Z]{3}\/(.|\n)*)\)$` CnlPatternString = `^\((?P[A-Z]{3})-(?P\w+\d+)-?(?P[A-Z]{4})?-?(?[A-Z]{4})\)$` DlaPatternString = `^\((?P[A-Z]{3})-(?P\w+\d+)-?(?P[A-Z]{4})(?P\d{4})?-?(?[A-Z]{4})(?\d{4})?\)$` ) // Compiled regular expressions var ( ArrPatternExpression = regexp.MustCompile(ArrPatternString) DepPatternExpression = regexp.MustCompile(DepPatternString) FplPatternExpression = regexp.MustCompile(FplPatternString) CnlPatternExpression = regexp.MustCompile(CnlPatternString) DlaPatternExpression = regexp.MustCompile(DlaPatternString) BodyTypePattern = regexp.MustCompile(`^\(([A-Z]{3})(.*\n?)+\)$`) categoryRegex = regexp.MustCompile(`\((?P[A-Z]+)-`) emptyLineRemove = regexp.MustCompile(`(?m)^\s*$`) bodyOnly = regexp.MustCompile(`(.|\n)?(ZCZC(.|\n)*)NNNN(.|\n)?$`) originator = regexp.MustCompile(`(?P[0-9]+)\s(?P[A-Z]+)`) navPattern = regexp.MustCompile(`(?m)NAV\/(?P