1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// Copyright (C) 2019 Martin Mroz
//
// This software may be modified and distributed under the terms
// of the MIT license.  See the LICENSE file for details.

//! `iata_bcbp` is a Rust library for parsing IATA BCBP Type M
//! objects conforming to versions 2 through 6 of the standard inclusively.
//! This format is used by airlines to encode boarding pass information into
//! electronic ticket itinerary document barcodes in addition to paper and
//! mobile boarding passes.
//!
//! # Example
//! ```rust
//! extern crate iata_bcbp;
//!
//! use std::str::FromStr;
//!
//! use iata_bcbp::Bcbp;
//!
//! fn main() {
//!     const PASS_STR: &str = "M1DESMARAIS/LUC       EABC123 YULFRAAC 0834 326J001A0025 100";
//!     let pass_data = Bcbp::from_str(PASS_STR).unwrap();
//!
//!     println!("Passenger: {}", pass_data.passenger_name());
//!  
//!    for leg in pass_data.legs().iter() {
//!        println!();
//!        println!("      PNR: {}"  , leg.operating_carrier_pnr_code());
//!        println!("     From: {}"  , leg.from_city_airport_code());
//!        println!("       To: {}"  , leg.to_city_airport_code());
//!        println!("   Flight: {}{}", leg.operating_carrier_designator(), leg.flight_number());
//!        println!("     Seat: {}"  , leg.seat_number());
//!        println!(" Sequence: {}"  , leg.check_in_sequence_number());
//!    }
//! }
//! ```

extern crate arrayvec;
extern crate nom;

mod bcbp;
mod de;
mod error;

pub use bcbp::{Bcbp, Leg, SecurityData};
pub use de::from_str;
pub use error::{Error, Result};