jarq 0.7.6

An interactive jq-like JSON query tool with a TUI
Documentation
//! Output state management - evaluation results and line count.

use simd_json::OwnedValue as Value;

use crate::ui::{self, RenderOptions};

pub struct OutputState {
    values: Vec<Value>,
    total_lines: usize,
}

impl OutputState {
    pub fn new() -> Self {
        Self {
            values: vec![],
            total_lines: 0,
        }
    }

    pub fn values(&self) -> &[Value] {
        &self.values
    }

    pub fn total_lines(&self) -> usize {
        self.total_lines
    }

    /// Set new output values and recompute line count.
    pub fn set_values(&mut self, values: Vec<Value>, options: &RenderOptions) {
        self.values = values;
        self.total_lines = ui::count_total_lines(&self.values, options);
    }

    /// Recompute line count when display options change.
    pub fn recompute_lines(&mut self, options: &RenderOptions) {
        self.total_lines = ui::count_total_lines(&self.values, options);
    }

    #[cfg(test)]
    pub fn set_total_lines(&mut self, lines: usize) {
        self.total_lines = lines;
    }
}