use std::fmt;
#[allow(dead_code)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Hash)]
pub(crate) enum Field {
FormatCode,
AirlineIndividualUse,
NumberOfLegsEncoded,
FieldSizeOfVariableSizeField,
OperatingCarrierPnrCode,
BeginningOfVersionNumber,
VersionNumber,
FieldSizeOfStructuredMessageUnique,
PassengerName,
SourceOfCheckIn,
SourceOfBoardingPassIssuance,
PassengerDescription,
DocumentType,
FieldSizeOfStructuredMessageRepeated,
SelecteeIndicator,
MarketingCarrierDesignator,
FrequentFlyerAirlineDesignator,
AirlineDesignatorOfBoardingPassIssuer,
DateOfIssueOfBoardingPass,
BaggageTagLicensePlateNumbers,
BeginningOfSecurityData,
FromCityAirportCode,
TypeOfSecurityData,
LengthOfSecurityData,
SecurityData,
FirstNonConsecutiveBaggageTagLicensePlateNumbers,
SecondNonConsecutiveBaggageTagLicensePlateNumbers,
ToCityAirportCode,
OperatingCarrierDesignator,
FlightNumber,
DateOfFlight,
CompartmentCode,
IdAdIndicator,
SeatNumber,
CheckInSequenceNumber,
InternationalDocumentVerification,
PassengerStatus,
FreeBaggageAllowance,
AirlineNumericCode,
DocumentFormSerialNumber,
FrequentFlyerNumber,
ElectronicTicketIndicator,
FastTrack,
}
impl Field {
pub fn len(self) -> usize {
match self {
Field::FormatCode => 1,
Field::AirlineIndividualUse => 0,
Field::NumberOfLegsEncoded => 1,
Field::FieldSizeOfVariableSizeField => 2,
Field::OperatingCarrierPnrCode => 7,
Field::BeginningOfVersionNumber => 1,
Field::VersionNumber => 1,
Field::FieldSizeOfStructuredMessageUnique => 2,
Field::PassengerName => 20,
Field::SourceOfCheckIn => 1,
Field::SourceOfBoardingPassIssuance => 1,
Field::PassengerDescription => 1,
Field::DocumentType => 1,
Field::FieldSizeOfStructuredMessageRepeated => 2,
Field::SelecteeIndicator => 1,
Field::MarketingCarrierDesignator => 3,
Field::FrequentFlyerAirlineDesignator => 3,
Field::AirlineDesignatorOfBoardingPassIssuer => 3,
Field::DateOfIssueOfBoardingPass => 4,
Field::BaggageTagLicensePlateNumbers => 13,
Field::BeginningOfSecurityData => 1,
Field::FromCityAirportCode => 3,
Field::TypeOfSecurityData => 1,
Field::LengthOfSecurityData => 2,
Field::SecurityData => 0,
Field::FirstNonConsecutiveBaggageTagLicensePlateNumbers => 13,
Field::SecondNonConsecutiveBaggageTagLicensePlateNumbers => 13,
Field::ToCityAirportCode => 3,
Field::OperatingCarrierDesignator => 3,
Field::FlightNumber => 5,
Field::DateOfFlight => 3,
Field::CompartmentCode => 1,
Field::IdAdIndicator => 1,
Field::SeatNumber => 4,
Field::CheckInSequenceNumber => 5,
Field::InternationalDocumentVerification => 1,
Field::PassengerStatus => 1,
Field::FreeBaggageAllowance => 3,
Field::AirlineNumericCode => 3,
Field::DocumentFormSerialNumber => 10,
Field::FrequentFlyerNumber => 16,
Field::ElectronicTicketIndicator => 1,
Field::FastTrack => 1,
}
}
pub fn name(self) -> &'static str {
match self {
Field::FormatCode =>
"Format Code",
Field::AirlineIndividualUse =>
"Airline Individual Use",
Field::NumberOfLegsEncoded =>
"Number of Legs Encoded",
Field::FieldSizeOfVariableSizeField =>
"Field Size of Variable Size Field",
Field::OperatingCarrierPnrCode =>
"Operating Carrier PNR Code",
Field::BeginningOfVersionNumber =>
"Beginning of Version Number",
Field::VersionNumber =>
"Version Number",
Field::FieldSizeOfStructuredMessageUnique =>
"Field Size of Strutured Message (Unique)",
Field::PassengerName =>
"Passenger Name",
Field::SourceOfCheckIn =>
"Source of Check-In",
Field::SourceOfBoardingPassIssuance =>
"Source of Boarding Pass Issuance",
Field::PassengerDescription =>
"Passenger Description",
Field::DocumentType =>
"Document Type",
Field::FieldSizeOfStructuredMessageRepeated =>
"Field Size of Strutured Message (Repeated)",
Field::SelecteeIndicator =>
"Selectee Indicator",
Field::MarketingCarrierDesignator =>
"Marketing Carrier Designator",
Field::FrequentFlyerAirlineDesignator =>
"Frequent Flyer Airline Designator",
Field::AirlineDesignatorOfBoardingPassIssuer =>
"Airline Designator of Boarding Pass Issuer",
Field::DateOfIssueOfBoardingPass =>
"Date of Issue of Boarding Pass",
Field::BaggageTagLicensePlateNumbers =>
"Baggage Tag License Plate Number(s)",
Field::BeginningOfSecurityData =>
"Beginning of Security Data",
Field::FromCityAirportCode =>
"From City Airport Code",
Field::TypeOfSecurityData =>
"Type of Security Data",
Field::LengthOfSecurityData =>
"Length of Security Data",
Field::SecurityData =>
"Security Data",
Field::FirstNonConsecutiveBaggageTagLicensePlateNumbers =>
"First Non-Consecutive Baggage Tag License Plate Number",
Field::SecondNonConsecutiveBaggageTagLicensePlateNumbers =>
"Second Non-Consecutive Baggage Tag License Plate Number",
Field::ToCityAirportCode =>
"To City Airport Code",
Field::OperatingCarrierDesignator =>
"Operating Carrier Designator",
Field::FlightNumber =>
"Flight Number",
Field::DateOfFlight =>
"Date of Flight",
Field::CompartmentCode =>
"Compartment Code",
Field::IdAdIndicator =>
"ID/AD Indicator",
Field::SeatNumber =>
"Seat Number",
Field::CheckInSequenceNumber =>
"Check-In Sequence Number",
Field::InternationalDocumentVerification =>
"International Document Verification",
Field::PassengerStatus =>
"Passenger Status",
Field::FreeBaggageAllowance =>
"Free Baggage Allowance",
Field::AirlineNumericCode =>
"Airline Numeric Code",
Field::DocumentFormSerialNumber =>
"Document Form / Serial Number",
Field::FrequentFlyerNumber =>
"Frequent Flyer Number",
Field::ElectronicTicketIndicator =>
"Electronic Ticket Indicator",
Field::FastTrack =>
"Fast Track",
}
}
}
impl fmt::Display for Field {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str(self.name())
}
}