use serde::Serialize;
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct StructureView {
pub path: String,
pub language: Language,
pub nodes: Vec<Node>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum Language {
#[serde(rename = "javascript")]
JavaScript,
Markdown,
Rust,
#[serde(rename = "typescript")]
TypeScript,
#[serde(rename = "typescript")]
Tsx,
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct Node {
pub kind: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub level: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
pub start_line: usize,
pub end_line: usize,
#[serde(skip_serializing_if = "Option::is_none")]
pub preview: Option<String>,
pub children: Vec<Node>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct RenderOptions {
pub max_depth: Option<usize>,
pub max_nodes: usize,
}