pnc 0.2.0

A fast, fully offline, terminal-only reverse Polish notation (RPN) calculator
use pnc_engine::Value;
use pnc_engine::persist::DisplayMode;

pub fn format_value(value: &Value, mode: DisplayMode, precision: u8) -> String {
    match mode {
        DisplayMode::Auto => value.to_string(),
        DisplayMode::Fix => format_fix(value, precision),
        DisplayMode::Sci => format_sci(value, precision),
        DisplayMode::Eng => format_eng(value, precision),
    }
}

fn format_fix(value: &Value, _precision: u8) -> String {
    // Simplified: delegate to canonical for now, full impl would use BigInt scaling
    value.to_string()
}

fn format_sci(value: &Value, _precision: u8) -> String {
    value.to_string()
}

fn format_eng(value: &Value, _precision: u8) -> String {
    value.to_string()
}

pub fn precision_for(settings: &pnc_engine::persist::Settings, mode: DisplayMode) -> u8 {
    match mode {
        DisplayMode::Auto => 0,
        DisplayMode::Fix => settings.fix_decimals,
        DisplayMode::Sci => settings.sci_digits,
        DisplayMode::Eng => settings.eng_digits,
    }
}