expry 0.1.2

Execute an expression on an encoded (binary) value, yielding another binary value (either in decoded or encoded form). Supports custom functions. Supports parsing the expression and converting the expression to bytecode.
Documentation
#![allow(dead_code)]

#[cfg(not(target_os = "windows"))]
mod my {
    // helpful: https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797
    pub const TERM_BRIGHT_BLACK    : &str = "\x1b[90m";
    pub const TERM_BRIGHT_RED      : &str = "\x1b[91m";
    pub const TERM_BRIGHT_GREEN    : &str = "\x1b[92m";
    pub const TERM_BRIGHT_YELLOW   : &str = "\x1b[93m";
    pub const TERM_BRIGHT_BLUE     : &str = "\x1b[94m";
    pub const TERM_BRIGHT_MAGENTA  : &str = "\x1b[95m";
    pub const TERM_BRIGHT_CYAN     : &str = "\x1b[96m";
    pub const TERM_BRIGHT_WHITE    : &str = "\x1b[97m";
    pub const TERM_DIM_BLACK       : &str = "\x1b[30m";
    pub const TERM_DIM_RED         : &str = "\x1b[31m";
    pub const TERM_DIM_GREEN       : &str = "\x1b[32m";
    pub const TERM_DIM_YELLOW      : &str = "\x1b[33m";
    pub const TERM_DIM_BLUE        : &str = "\x1b[34m";
    pub const TERM_DIM_MAGENTA     : &str = "\x1b[35m";
    pub const TERM_DIM_CYAN        : &str = "\x1b[36m";
    pub const TERM_DIM_WHITE       : &str = "\x1b[37m";
    pub const TERM_DIM_DEFAULT     : &str = "\x1b[39m";
    pub const TERM_BOLD            : &str = "\x1b[1m";
    pub const TERM_BOLD_RESET      : &str = "\x1b[22m";
    pub const TERM_DIM             : &str = "\x1b[2m";
    pub const TERM_DIM_RESET       : &str = "\x1b[22m";
    pub const TERM_ITALIC          : &str = "\x1b[3m";
    pub const TERM_ITALIC_RESET    : &str = "\x1b[23m";
    pub const TERM_UNDERLINE       : &str = "\x1b[4m";
    pub const TERM_UNDERLINE_RESET : &str = "\x1b[24m";
    pub const TERM_RESET           : &str = "\x1b[0m";
}
#[cfg(target_os = "windows")]
mod my {
    pub const TERM_BRIGHT_BLACK    : &str = "";
    pub const TERM_BRIGHT_RED      : &str = "";
    pub const TERM_BRIGHT_GREEN    : &str = "";
    pub const TERM_BRIGHT_YELLOW   : &str = "";
    pub const TERM_BRIGHT_BLUE     : &str = "";
    pub const TERM_BRIGHT_MAGENTA  : &str = "";
    pub const TERM_BRIGHT_CYAN     : &str = "";
    pub const TERM_BRIGHT_WHITE    : &str = "";
    pub const TERM_DIM_BLACK       : &str = "";
    pub const TERM_DIM_RED         : &str = "";
    pub const TERM_DIM_GREEN       : &str = "";
    pub const TERM_DIM_YELLOW      : &str = "";
    pub const TERM_DIM_BLUE        : &str = "";
    pub const TERM_DIM_MAGENTA     : &str = "";
    pub const TERM_DIM_CYAN        : &str = "";
    pub const TERM_DIM_WHITE       : &str = "";
    pub const TERM_DIM_DEFAULT     : &str = "";
    pub const TERM_BOLD            : &str = "";
    pub const TERM_BOLD_RESET      : &str = "";
    pub const TERM_DIM             : &str = "";
    pub const TERM_DIM_RESET       : &str = "";
    pub const TERM_ITALIC          : &str = "";
    pub const TERM_ITALIC_RESET    : &str = "";
    pub const TERM_UNDERLINE       : &str = "";
    pub const TERM_UNDERLINE_RESET : &str = "";
    pub const TERM_RESET           : &str = "";
}

pub use my::*;

#[cfg(test)]
mod tests {
    #[test]
    fn it_works() {
        let result = 2 + 2;
        assert_eq!(result, 4);
    }
}