osp-cli 1.5.1

CLI and REPL for querying and managing OSP infrastructure data
Documentation
mod grid;
mod guide_entries;
mod json;
mod key_value;
mod markdown;
pub(crate) mod shared;
mod table;
mod terminal;

use crate::core::output::OutputFormat;

use super::doc::{Block, Doc, JsonBlock};
use super::settings::ResolvedRenderSettings;

pub fn emit_doc(doc: &Doc, format: OutputFormat, settings: &ResolvedRenderSettings) -> String {
    match format {
        OutputFormat::Markdown => markdown::emit_doc(doc),
        OutputFormat::Json => {
            let Some(Block::Json(JsonBlock { text })) = doc.blocks.first() else {
                return String::new();
            };
            serde_json::from_str(text)
                .ok()
                .map(|value| json::emit_value(&value, settings))
                .unwrap_or_else(|| format!("{text}\n"))
        }
        _ => terminal::emit_doc(doc, settings),
    }
}