ctcore 0.2.0

Precision tools for the CTfile family of file formats.
Documentation
#[derive(Debug, PartialEq)]
pub enum Printable {
    Space,
    Exclamation,
    DoubleQuote,
    Octothorpe,
    Dollar,
    Percent,
    Ampersand,
    SingleQuote,
    OpenParen,
    CloseParen,
    Asterisk,
    Plus,
    Comma,
    Minus,
    Dot,
    Slash,
    D0,
    D1,
    D2,
    D3,
    D4,
    D5,
    D6,
    D7,
    D8,
    D9,
    Colon,
    Semicolon,
    LessThan,
    Equal,
    GreaterThan,
    Question,
    At,
    A,
    B,
    C,
    D,
    E,
    F,
    G,
    H,
    I,
    J,
    K,
    L,
    M,
    N,
    O,
    P,
    Q,
    R,
    S,
    T,
    U,
    V,
    W,
    X,
    Y,
    Z,
    OpenBracket,
    Backslash,
    CloseBracket,
    Caret,
    Underscore,
    Backtick,
    LowerA,
    LowerB,
    LowerC,
    LowerD,
    LowerE,
    LowerF,
    LowerG,
    LowerH,
    LowerI,
    LowerJ,
    LowerK,
    LowerL,
    LowerM,
    LowerN,
    LowerO,
    LowerP,
    LowerQ,
    LowerR,
    LowerS,
    LowerT,
    LowerU,
    LowerV,
    LowerW,
    LowerX,
    LowerY,
    LowerZ,
    OpenBrace,
    Bar,
    CloseBrace,
    Tilde,
}

impl Printable {
    pub fn digits() -> Vec<Printable> {
        vec![
            Self::D0,
            Self::D1,
            Self::D2,
            Self::D3,
            Self::D4,
            Self::D5,
            Self::D6,
            Self::D7,
            Self::D8,
            Self::D9,
        ]
    }

    pub fn non_zero_digits() -> Vec<Printable> {
        vec![
            Self::D1,
            Self::D2,
            Self::D3,
            Self::D4,
            Self::D5,
            Self::D6,
            Self::D7,
            Self::D8,
            Self::D9,
        ]
    }

    pub fn from_byte(byte: u8) -> Option<Self> {
        match byte {
            0x20 => Some(Self::Space),
            0x21 => Some(Self::Exclamation),
            0x22 => Some(Self::DoubleQuote),
            0x23 => Some(Self::Octothorpe),
            0x24 => Some(Self::Dollar),
            0x25 => Some(Self::Percent),
            0x26 => Some(Self::Ampersand),
            0x27 => Some(Self::SingleQuote),
            0x28 => Some(Self::OpenParen),
            0x29 => Some(Self::CloseParen),
            0x2a => Some(Self::Asterisk),
            0x2b => Some(Self::Plus),
            0x2c => Some(Self::Comma),
            0x2d => Some(Self::Minus),
            0x2e => Some(Self::Dot),
            0x2f => Some(Self::Slash),
            0x30 => Some(Self::D0),
            0x31 => Some(Self::D1),
            0x32 => Some(Self::D2),
            0x33 => Some(Self::D3),
            0x34 => Some(Self::D4),
            0x35 => Some(Self::D5),
            0x36 => Some(Self::D6),
            0x37 => Some(Self::D7),
            0x38 => Some(Self::D8),
            0x39 => Some(Self::D9),
            0x3a => Some(Self::Colon),
            0x3b => Some(Self::Semicolon),
            0x3c => Some(Self::LessThan),
            0x3d => Some(Self::Equal),
            0x3e => Some(Self::GreaterThan),
            0x3f => Some(Self::Question),
            0x40 => Some(Self::At),
            0x41 => Some(Self::A),
            0x42 => Some(Self::B),
            0x43 => Some(Self::C),
            0x44 => Some(Self::D),
            0x45 => Some(Self::E),
            0x46 => Some(Self::F),
            0x47 => Some(Self::G),
            0x48 => Some(Self::H),
            0x49 => Some(Self::I),
            0x4a => Some(Self::J),
            0x4b => Some(Self::K),
            0x4c => Some(Self::L),
            0x4d => Some(Self::M),
            0x4e => Some(Self::N),
            0x4f => Some(Self::O),
            0x50 => Some(Self::P),
            0x51 => Some(Self::Q),
            0x52 => Some(Self::R),
            0x53 => Some(Self::S),
            0x54 => Some(Self::T),
            0x55 => Some(Self::U),
            0x56 => Some(Self::V),
            0x57 => Some(Self::W),
            0x58 => Some(Self::X),
            0x59 => Some(Self::Y),
            0x5a => Some(Self::Z),
            0x5b => Some(Self::OpenBracket),
            0x5c => Some(Self::Backslash),
            0x5d => Some(Self::CloseBracket),
            0x5e => Some(Self::Caret),
            0x5f => Some(Self::Underscore),
            0x60 => Some(Self::Backtick),
            0x61 => Some(Self::LowerA),
            0x62 => Some(Self::LowerB),
            0x63 => Some(Self::LowerC),
            0x64 => Some(Self::LowerD),
            0x65 => Some(Self::LowerE),
            0x66 => Some(Self::LowerF),
            0x67 => Some(Self::LowerG),
            0x68 => Some(Self::LowerH),
            0x69 => Some(Self::LowerI),
            0x6a => Some(Self::LowerJ),
            0x6b => Some(Self::LowerK),
            0x6c => Some(Self::LowerL),
            0x6d => Some(Self::LowerM),
            0x6e => Some(Self::LowerN),
            0x6f => Some(Self::LowerO),
            0x70 => Some(Self::LowerP),
            0x71 => Some(Self::LowerQ),
            0x72 => Some(Self::LowerR),
            0x73 => Some(Self::LowerS),
            0x74 => Some(Self::LowerT),
            0x75 => Some(Self::LowerU),
            0x76 => Some(Self::LowerV),
            0x77 => Some(Self::LowerW),
            0x78 => Some(Self::LowerX),
            0x79 => Some(Self::LowerY),
            0x7a => Some(Self::LowerZ),
            0x7b => Some(Self::OpenBrace),
            0x7c => Some(Self::Bar),
            0x7d => Some(Self::CloseBrace),
            0x7e => Some(Self::Tilde),
            _ => None,
        }
    }
}